Rockwell Automation Allen-Bradley ControlLogix 1756-MVI Programming Reference Manual
Rockwell Automation Allen-Bradley ControlLogix 1756-MVI Programming Reference Manual

Rockwell Automation Allen-Bradley ControlLogix 1756-MVI Programming Reference Manual

Multi-vendor interface module
Hide thumbs Also See for Allen-Bradley ControlLogix 1756-MVI:
Table of Contents

Advertisement

ControlLogix
Multi-Vendor
Interface Module
1756-MVI
Programming Reference
Manual

Advertisement

Table of Contents
loading

Summary of Contents for Rockwell Automation Allen-Bradley ControlLogix 1756-MVI

  • Page 1 ControlLogix Multi-Vendor Interface Module 1756-MVI Programming Reference Manual...
  • Page 2 Reproduction of the contents of this copyrighted publication, in whole or part, without written permission of Rockwell Automation, is prohibited. Throughout this manual we use notes to make you aware of safety...
  • Page 3 European Communities (EC) If this product has the CE mark it is approved for installation within the European Union and EEA regions. It has been designed and Directive Compliance tested to meet the following directives. EMC Directive This product is tested to meet the Council Directive 89/336/EC Electromagnetic Compatibility (EMC) by applying the following standards, in whole or in part, documented in a technical construction file:...
  • Page 5 Preface About This Reference Manual Introduction This reference manual provides information needed to develop application programs for the 1756-MVI ControlLogix Multi-Vendor Interface Module. The 1756-MVI module allows access through the ControlLogix platform to devices with a serial port. The MVI module is user programmable to accommodate devices with unique serial protocols.
  • Page 6 About This Reference Manual Screen captures are pictures of the software’s actual screens and windows. The names of screen buttons and fields are often in bold in the text of a procedure. The “MORE” icon is placed beside any paragraph that references sources of additional information outside of this More document.
  • Page 7 • warranty support • support service agreements Technical Product Assistance If you need to contact Rockwell Automation for technical assistance, call your local Rockwell Automation representative, or call Rockwell directly at: 1 440 646-6800. For presales support, call 1 440 646-3NET.
  • Page 8 Publication Problem Report (at the back of this manual). If you have any suggestions about how we can make this manual more useful to you, please contact us at the following address: Rockwell Automation, Allen-Bradley Company, Inc. Control and Information Group Technical Communication...
  • Page 9: Table Of Contents

    Table of Contents Chapter 1 1756-MVI Module Overview What This Chapter Contains ..... . . 1-1 Features ........1-1 LED Indicators .
  • Page 10 Table of Contents Chapter 5 Serial Port API What This Chapter Contains ..... . . 5-1 Serial API Files ....... . . 5-1 Serial Data Transfer .
  • Page 11: What This Chapter Contains

    Chapter 1756-MVI Module Overview What This Chapter Contains The following table identifies what this chapter contains and where to find specific information. For information about See page Features LED Indicators Configuration Jumpers System Firmware BIOS BIOS Console Services BIOS Setup Operating System Features The 1756-MVI module allows the user to develop C language code to...
  • Page 12 1756-MVI Module Overview A block diagram of the module is shown in figure 1.1. Figure 1.1 1756-MVI Module Block Diagram RS-232 Communications Serial Port Processor PRT1 (Console) ControlBus PRT2 Compact Flash Flash PRT3 (Optional) The 1756-MVI module has three serial ports. Serial port PRT1 (also called the “console port”) is used with a programming console via an RS-232 interface.
  • Page 13: Led Indicators

    1756-MVI Module Overview LED Indicators The 1756-MVI module has seven LED indicators at the top of its front panel. Five of these indicators display the module’s status and port activity. The other two, LEDs U1 and U2, are controlled by the user application and may be used for any purpose.
  • Page 14: Configuration Jumpers

    1756-MVI Module Overview Configuration Jumpers Three configuration jumpers are located on the 1756-MVI module’s printed circuit board, as shown in figure 1.3. Figure 1.3 Configuration Jumpers SETUP PRT2 PRT3 RS485 RS232 IN = SETUP MODE RS422 RS422 OUT = APPLICTION RS232 RS485 MODE...
  • Page 15: System Firmware

    1756-MVI Module Overview System Firmware The 1756-MVI module includes an embedded BIOS and a DOS-compatible operating system stored in Flash ROM. An additional 896K bytes of Flash ROM is configured as a ROM disk for user program storage. The ROM disk is mapped as drive A:/. The MVI also supports an optional Compact Flash.
  • Page 16 1756-MVI Module Overview If the 1756-MVI module boot messages do not appear on the console terminal when the module is powered on, check the position of the Setup Jumper (see the Installation Instructions). In Setup Mode (setup jumper installed), the console port will be enabled and configured for 19200 baud, no parity, 8 data bits, and 1 stop bit.
  • Page 17 1756-MVI Module Overview Selecting the first item in the Main Menu, MVI Module Configuration, displays the menu shown in figure 1.6: Figure 1.6 MVI Module Configuration Menu System BIOS Setup - Custom Configuration (C) 1998 General Software, Inc. All rights reserved +--------------------------------+------------------------------+ Console on Port 1 >Disabled |...
  • Page 18: Operating System

    1756-MVI Module Overview See chapter 6 for more information. Operating System The 1756-MVI module contains a General Software Embedded DOS 6-XL operating system. This provides DOS compatibility along with real-time multitasking functionality. The operating system is stored in Flash ROM and is loaded by the BIOS when the module boots. DOS compatibility allows development of applications using standard DOS tools, such as Borland™...
  • Page 19 ControlBus. The Serial Port API provides access to the serial ports. The MVI Backplane API is “generic,” and is portable among all MVI form factors from Rockwell Automation and third parties. This “generic” API performs read/write operations with the form factor’s control processor (PLC) by calling the more specific backplane API required for that form factor.
  • Page 20: What This Chapter Contains

    Application Development Overview What This Chapter Contains Applications for the 1756-MVI module may be developed using industry-standard DOS programming tools and the appropriate API components. This chapter provides general information pertaining to application development for the 1756-MVI module. The following table identifies what this chapter contains and where to find specific information.
  • Page 21: Header Files

    Application Development Overview Header Files A header file is provided along with each library. This header file contains API function declarations, data structure definitions, and miscellaneous constant definitions. The header file is in standard C format. Sample Application Code Sample application code is provided to illustrate the use of the API functions.
  • Page 22 Application Development Overview Publication 1756-RM004B-EN-P - October 2000...
  • Page 23: What This Chapter Contains

    Chapter MVI Backplane API The MVI Backplane API (MVI API) is one component of the 1756-MVI API Suite. The MVI API provides a simple backplane interface that is portable among members of the MVI Family. This is useful when developing an application that implements a serial protocol for a particular device, such as a scale or barcode reader.
  • Page 24: Mvi Backplane Api Architecture

    MVI Backplane API MVI Backplane API The MVI API is composed of three parts: Architecture • a memory resident driver, MVI56DD.EXE (called the MVI driver) • a statically-linked library (called the MVI library) • a header file Applications using the MVI backplane API must be linked with the MVI library.
  • Page 25 MVI Backplane API Figure 3.1 shows the relationship between the API components. Figure 3.1 API Component Relationship ControlBus (Backplane) Midrange ASIC Control Processor (Logix 5550) Backplane Device Driver (MVI56BP.EXE) CPI API Library MVI Driver (MVI56DD.EXE) MVI API Library Thread Thread Thread Multi-threaded MVI Application 1756-MVI Module...
  • Page 26 MVI Backplane API The status connection may be used by the processor to determine the current status of the 1756-MVI module. The first word of the status input data contains the status bits shown in table 3.C. Table 3.C - Status Input Word 0 Description Module is ready (MVI driver is loaded) Module application is active (MVIbp_Open has been called)
  • Page 27: Mvi Backplane Api Functions

    MVI Backplane API MVI Backplane API This section provides detailed programming information for each of the MVI Backplane API library functions. The calling convention for each Functions API function is shown in C format. The API library routines are categorized by functionality as shown in table 3.D. Table 3.D - MVI Backplane API Functions Function Category Function Name...
  • Page 28: Initialization Functions

    MVI Backplane API Initialization Functions MVIbp_Open Syntax: MVIbp_Open(MVIHANDLE *handle); Parameters: handle pointer to variable of type MVIHANDLE Description: MVIbp_Open acquires access to the API and sets handle to a unique ID that the application uses in subsequent functions. This function must be called before any of the other API functions can be used.
  • Page 29 MVI Backplane API MVIbp_Close Syntax: MVIbp_Close(MVIHANDLE handle); Parameters: handle handle returned by previous call to MVIbp_Open Description: This function is used by an application to release control of the API. handle must be a valid handle returned from MVIbp_Open. Once the API has been opened, this function should IMPORTANT always be called before exiting the application.
  • Page 30: Configuration

    MVI Backplane API Configuration MVIbp_GetIOConfig Syntax: MVIbp_GetIOConfig(MVIHANDLE handle, MVIBPIOCONFIG *ioconfig); Parameters: handle handle returned by previous call to MVIbp_Open ioconfig pointer to MVIBPIOCONFIG structure to receive configuration information Description: This function is used to obtain the I/O configuration of the MVI module.
  • Page 31 MVI Backplane API MVIbp_GetIOConfig Example: MVIHANDLE handle; MVIBPIOCONFIG ioconfig; MVIbp_GetIOConfig(handle, &ioconfig); printf(“%d words of input image available\n”, ioconfig.DirectInputSize); printf(“%d words of output image available\n”, ioconfig.DirectOutputSize); See Also: MVIbp_SetIOConfig Publication 1756-RM004B-EN-P - October 2000...
  • Page 32 3-10 MVI Backplane API MVIbp_SetIOConfig Syntax: MVIbp_SetIOConfig(MVIHANDLE handle, MVIBPIOCONFIG *ioconfig); Parameters: handle handle returned by previous call to MVIbp_Open ioconfig pointer to MVIBPIOCONFIG structure which contains configuration information Description: This function may be used to set the size of the module’s I/O images and messaging buffers.
  • Page 33 MVI Backplane API 3-11 MVIbp_SetIOConfig Return Value: MVI_SUCCESS no errors were encountered MVI_ERR_NOACCESS handle does not have access MVI_ERR_BADCONFIG configuration is not valid MVI_ERR_NOTSUPPORTED 1756-MVI always returns this error Example: MVIHANDLE handle; MVIBPIOCONFIG ioconfig; ioconfig.DirectInputSize = 20; // 20 words used for input ioconfig.DirectOutputSize = 10;...
  • Page 34: Direct I/O Access

    3-12 MVI Backplane API Direct I/O Access MVIbp_ReadOutputImage Syntax: MVIbp_ReadOutputImage(MVIHANDLE handle, WORD *buffer, WORD offset, WORD length); Parameters: handle handle returned by previous call to MVIbp_Open buffer pointer to buffer to receive data from output image offset word offset into output image at which to begin reading length number of words to read Description:...
  • Page 35 MVI Backplane API 3-13 MVIbp_WriteInputImage Syntax: MVIbp_WriteInputImage(MVIHANDLE handle, WORD *buffer, WORD offset, WORD length); Parameters: handle handle returned by previous call to MVIbp_Open buffer pointer to buffer of data to be written to input image offset word offset into input image at which to begin writing length number of words to write Description:...
  • Page 36: Messaging

    3-14 MVI Backplane API Messaging MVIbp_ReceiveMessage Syntax: MVIbp_ReceiveMessage(MVIHANDLE handle, WORD *buffer, WORD *length, WORD reserved, WORD timeout); Parameters: handle handle returned by previous call to MVIbp_Open buffer pointer to buffer to receive message data from processor length pointer to a variable containing the maximum message length in words.
  • Page 37 MVI Backplane API 3-15 MVIbp_ReceiveMessage The MVIbp_ReceiveMessage function retrieves data written to the MVI module by the processor via a MSG instruction. The MSG instruction must be configured as shown in table 3.E. The MSG instruction implements a ‘put attribute’ command to the MVI module’s assembly object.
  • Page 38 3-16 MVI Backplane API MVIbp_SendMessage Syntax: MVIbp_SendMessage(MVIHANDLE handle, WORD *buffer, WORD length, WORD reserved, WORD timeout); Parameters: handle handle returned by previous call to MVIbp_Open buffer pointer to buffer of data to send to processor length the length in words of the message to send. reserved must be set to 0 timeout...
  • Page 39 MVI Backplane API 3-17 MVIbp_SendMessage The MVIbp_SendMessage function copies the message data into a buffer to be retrieved by the processor via a MSG instruction. The MSG instruction must be configured as shown in table 3.F. The MSG instruction implements a “get attribute” command to the MVI module’s assembly object.
  • Page 40: Synchronization

    3-18 MVI Backplane API Synchronization MVIbp_WaitForInputScan Syntax: MVIbp_WaitForInputScan(MVIHANDLE handle, WORD timeout); Parameters: handle handle returned by previous call to MVIbp_Open timeout maximum number of milliseconds to wait for scan Description: This function is not supported for the 1756-MVI and will return MVI_ERR_NOTSUPPORTED.
  • Page 41 MVI Backplane API 3-19 MVIbp_WaitForOutputScan Syntax: MVIbp_WaitForOutputScan(MVIHANDLE handle, WORD timeout); Parameters: handle handle returned by previous call to MVIbp_Open timeout maximum number of milliseconds to wait for scan Description: MVIbp_WaitForInputScan allows an application to synchronize with the scan of the module’s output image. This function will return immediately after the module’s output image has been written.
  • Page 42: Miscellaneous Functions

    3-20 MVI Backplane API Miscellaneous Functions MVIbp_GetVersionInfo Syntax: MVIbp_GetVersionInfo(MVIHANDLE handle, MVIBPVERSIONINFO *verinfo); Parameters: handle handle returned by previous call to MVIbp_Open verinfo pointer to structure of type MVIBPVERSIONINFO Description: MVIbp_GetVersionInfo retrieves the current version of the API library and the backplane device driver. The information is returned in the structure verinfo.
  • Page 43 MVI Backplane API 3-21 MVIbp_GetModuleInfo Syntax: MVIbp_GetModuleInfo(MVIHANDLE handle, MVIBPMODULEINFO *modinfo); Parameters: handle handle returned by previous call to MVIbp_Open modinfo pointer to structure of type MVIBPMODULEINFO Description: MVIbp_GetModuleInfo retrieves identity information for the module. The information is returned in the structure modinfo. handle must be a valid handle returned from MVIbp_Open.
  • Page 44 3-22 MVI Backplane API MVIbp_GetProcessorStatus Syntax: MVIbp_GetProcessorStatus(MVIHANDLE handle, WORD *pstatus); Parameters: handle handle returned by previous call to MVIbp_Open pstatus pointer to a word that will be updated with the current processor status Description: This function is used to query the state of the processor. handle must be a valid handle returned from MVIbp_Open.
  • Page 45 MVI Backplane API 3-23 MVIbp_GetProcessorStatus Example: MVIHANDLE handle; WORDstatus; MVIbp_GetProcessorStatus(handle, &status); if (status & MVI_PROCESSOR_STATUS_RUN) // Processor is in Run Mode else // Processor is not in Run Mode or there is no connection Publication 1756-RM004B-EN-P - October 2000...
  • Page 46 3-24 MVI Backplane API MVIbp_GetSetupMode Syntax: MVIbp_GetSetupMode(MVIHANDLE handle, int *mode); Parameters: handle handle returned by previous call to MVIbp_Open mode pointer to an integer that is set to 1 if the Setup Jumper is installed, or 0 if the Setup Jumper is not installed. Description: This function is used to query the state of the Setup Jumper.
  • Page 47 MVI Backplane API 3-25 MVIbp_GetConsoleMode Syntax: MVIbp_GetConsoleMode(MVIHANDLE handle, int *mode, int *baud); Parameters: handle handle returned by previous call to MVIbp_Open mode pointer to an integer that is set to 1 if the console is installed, or 0 if the console is not enabled. baud pointer to an integer that is set to the console baud rate index if the console is enabled.
  • Page 48 3-26 MVI Backplane API MVIbp_SetModuleStatus Syntax: MVIbp_SetModuleStatus(MVIHANDLE handle, int status); Parameters: handle handle returned by previous call to MVIbp_Open status module status, OK or Faulted Description: MVIbp_SetModuleStatus allows an application set the state of the module to OK or Faulted. handle must be a valid handle returned from MVIbp_Open.
  • Page 49 MVI Backplane API 3-27 MVIbp_SetUserLED Syntax: MVIbp_SetUserLED(MVIHANDLE handle, int lednum, int ledstate); Parameters: handle handle returned by previous call to MVIbp_Open lednum specifies which of the user LED indicators is being addressed ledstate turns the LED on or off Description: MVIbp_SetUserLED allows an application to turn the user LED indicators on and off.
  • Page 50 3-28 MVI Backplane API MVIbp_ErrorString Syntax: MVIbp_ErrorString(int errcode, char *buf); Parameters: errcode error code returned from an API function pointer to user buffer to receive message Description: MVIbp_ErrorString returns a text error message associated with the error code errcode. The null-terminated error message is copied into the buffer specified by buf.
  • Page 51 MVI Backplane API 3-29 MVIbp_Sleep Syntax: MVIbp_Sleep( MVIHANDLE handle, WORD msdelay ); Parameters: handle handle returned by previous call to MVIbp_Open msdelay time in milliseconds to suspend task Description: MVIbp_Sleep suspends the calling thread for at least msdelay milliseconds. The actual delay may be several milliseconds longer than msdelay, due to system overhead and the system timer granularity (5ms).
  • Page 52 3-30 MVI Backplane API Publication 1756-RM004B-EN-P - October 2000...
  • Page 53: What This Chapter Contains

    Chapter CIP Messaging API The CIP Messaging API is one component of the 1756-MVI API Suite. CIP API provides the lowest level of access to the ControlLogix backplane interface. Complex applications, such as certain communications protocols, may interface directly with the CIP API. Simple applications, such as a serial barcode reader interface, may use the MVI backplane API instead (see chapter 3).
  • Page 54: Backplane Device Driver

    CIP Messaging API The relationship between the module application, CIP API, and backplane driver is shown in figure 4.1. Figure 4.1 CPI API Architecture ControlBus (Backplane) Midrange ASIC Control Processor (Logix 5550) Backplane Device Driver (MVI56BP.EXE) CIP API Library Thread Thread Thread Backplane Device Driver...
  • Page 55 CIP Messaging API The relationship between these components, the CIP API, and the application is shown in figure 4.2. Figure 4.2 1756-MVI CIP API System Data Flow Diagram ControlBus Connection UCMM Mapping Backplane ID Object Device Driver ICP Object Transports Assembly NVS Object Object...
  • Page 56: Cip Api Functions

    CIP Messaging API CIP API Functions The CIP API library functions are listed in table 4.B. Details for each function are provided in the following sections. Table 4.B CIP API Library Functions Function Category Function Name Description Initialization MVIcip_Open Initialize access to the CIP API Initialization MVIcip_Close Terminate access to the CIP API Object Registration...
  • Page 57 CIP Messaging API Initialization MVIcip_Open Syntax: MVIcip_Open(MVIHANDLE *apiHandle); Parameters: apiHandle pointer to variable of type MVIHANDLE Description: MVIcip_Open acquires access to the CIP Messaging API and sets apiHandle to a unique ID that the application uses in subsequent functions. This function must be called before any of the other CIP API functions can be used.
  • Page 58 CIP Messaging API MVIcip_Close Syntax: MVIcip_Close(MVIHANDLE apiHandle); Parameters: apiHandle handle returned by previous call to MVIcip_Open Description: This function is used by an application to release control of the CIP API. apiHandle must be a valid handle returned from MVIcip_Open. Once the CIP API has been opened, this function IMPORTANT should always be called before exiting the...
  • Page 59: Object Registration

    CIP Messaging API Object Registration MVIcip_RegisterAssemblyObj Syntax: MVIcip_RegisterAssemblyObj( MVIHANDLE apiHandle, MVIHANDLE *objHandle, DWORD reg_param, MVICALLBACK (*connect_proc)(), MVICALLBACK (*service_proc)(), MVICALLBACK (*rxdata_proc)() ); Parameters: apiHandle handle returned by previous call to MVIcip_Open objHandle pointer to variable of type MVIHANDLE. On successful return, this variable will contain a value which identifies this object.
  • Page 60 CIP Messaging API MVIcip_RegisterAssemblyObj service_proc is a pointer to a callback function which handles service requests to the registered object. This function will be called by the backplane device driver when an unscheduled message is received for the object. See Section 4.3.4 for details. rxdata_proc is a pointer to a callback function which handles data received on an open connection.
  • Page 61 CIP Messaging API MVIcip_UnregisterAssemblyObj Syntax: MVIcip_UnregisterAssemblyObj( MVIHANDLE apiHandle, MVIHANDLE objHandle ); Parameters: apiHandle handle returned by previous call to MVIcip_Open objHandle handle for object to be unregistered Description: This function is used by an application to unregister all instances of the Assembly Object with the CIP API.
  • Page 62: Connected Data Transfer

    4-10 CIP Messaging API Connected Data Transfer MVIcip_WriteConnected Syntax: MVIcip_WriteConnected( MVIHANDLE apiHandle, MVIHANDLE connHandle, BYTE *dataBuf, WORD offset,WORD dataSize ); Parameters: apiHandle handle returned by previous call to MVIcip_Open connHandle handle of open connection dataBuf pointer to data to be written offset offset of byte to begin writing dataSize...
  • Page 63 CIP Messaging API 4-11 MVIcip_ReadConnected Syntax: MVIcip_ReadConnected( MVIHANDLE apiHandle, MVIHANDLE connHandle, BYTE *dataBuf, WORD offset, WORD dataSize ); Parameters: apiHandle handle returned by previous call to MVIcip_Open connHandle handle of open connection dataBuf pointer to buffer to receive data offset offset of byte to begin reading dataSize number of bytes to read...
  • Page 64 4-12 CIP Messaging API MVIcip_ReadConnected The MVIcip_ReadConnected function can only be used if the rxdata_proc callback function pointer was set to NULL in the call to MVIcp_RegisterAssemblyObject(). Return Value: MVI_SUCCESS data was read successfully MVI_ERR_NOACCESS apiHandle does not have access MVI_ERR_BADPARAM connHandle or dataSize is invalid MVI_ERR_INVALID...
  • Page 65: Callback Functions

    CIP Messaging API 4-13 Callback Functions Note: The functions in this section are not part of the CIP API, but must be implemented by the application. The CIP API calls the connect_proc or service_proc functions when connection or service requests are received for the registered object.
  • Page 66 4-14 CIP Messaging API connect_proc Syntax: MVICALLBACK connect_proc( MVIHANDLE objHandle, MVICIPCONNSTRUC *sConn ); Parameters: objHandle handle of registered object instance sConn pointer to structure of type MVICIPCONNSTRUCT Description: connect_proc is a callback function which is passed to the CIP API in the MVIcip_RegisterAssemblyObj call.
  • Page 67 CIP Messaging API 4-15 connect_proc connHandle is used to identify this connection. This value must be passed to the MVIcip_SendConnected and MVIcip_ReadConnected functions. reg_param is the value that was passed to MVIcip_RegisterAssemblyObj. The application may use this to store an index or pointer.
  • Page 68 4-16 CIP Messaging API connect_proc lODeviceSn is the serial number of the originating device, and iOVendorId is the vendor ID. The combination of vendor ID and serial number is guaranteed to be unique, and may be used to identify the source of the connection request.
  • Page 69 CIP Messaging API 4-17 connect_proc Example: MVIHANDLE Handle; MVICALLBACK connect_proc( MVIHANDLE objHandle, MVICIPCONNSTRUCT *sConn) // Check reason for callback switch( sConn->reason ) case MVI_CIP_CONN_OPEN: // A new connection request is being made. Validate the // parameters and determine whether to allow the // connection.
  • Page 70 4-18 CIP Messaging API service_proc Syntax: MVICALLBACK service_proc( MVIHANDLE objHandle, MVICIPSERVSTRUC *sServ ); Parameters: objHandle handle of registered object sServ pointer to structure of type MVICIPSERVSTRUC Description: service_proc is a callback function which is passed to the CIP API in the MVIcip_RegisterAssemblyObj call.
  • Page 71 CIP Messaging API 4-19 service_proc msgSize points to the size in bytes of the data pointed to by msgBuf. The application should update this with the size of the response data before returning. extendederr is a pointer to a word which can be set by the callback function to an extended error code if the service request is refused.
  • Page 72 4-20 CIP Messaging API rxdata_proc Syntax: rxdata_proc( MVIHANDLE objHandle, MVICIPRECVSTRUC *sRecv); Parameters: objHandle handle of registered object sRecv pointer to structure of type MVICIPRECVSTRUC Description: rxdata_proc is an optional callback function which may be passed to the CIP API in the MVIcip_RegisterAssemblyObj call. If the rxdata_proc callback has been registered, the CIP API calls it when Class 1 scheduled data is received for the registered object specified by objHandle.
  • Page 73 CIP Messaging API 4-21 rxdata_proc Return Value: The rxdata_proc routine must return MVI_SUCCESS. Example: MVIHANDLE Handle; int _loadds rxdata_proc( MVIHANDLE objHandle, MVICIPRECVSTRUC *sRecv ) // Copy the data to our local buffer. memcpy(RxDataBuf, sRecv->rxData, sRecv->dataSize); // Indicate that new data has been received RxDataCnt++;...
  • Page 74 4-22 CIP Messaging API fatalfault_proc Syntax: MVICALLBACK fatalfault_proc( ); Parameters: None Description: fatalfault_proc is an optional callback function which may be passed to the CIP API in the MVIcip_RegisterFatalFaultRtn call. If the fatalfault_proc callback has been registered, it will be called if the backplane device driver detects a fatal fault condition.
  • Page 75 CIP Messaging API 4-23 flashupdate_proc Syntax: MVICALLBACK flashupdate_proc( ); Parameters: None Description: flashupdate_proc is an optional callback function which may be passed to the CIP API in the MVIcip_RegisterFlashUpdateRtn call. If the flashupdate_proc callback has been registered, it will be called if the backplane device driver receives a flash update command.
  • Page 76 4-24 CIP Messaging API resetrequest_proc Syntax: MVICALLBACK resetrequest_proc( ); Parameters: None Description: resetrequest_proc is an optional callback function which may be passed to the CIP API in the MVIcip_RegisterResetReqRtn call. If the resetrequest_proc callback has been registered, it will be called if the backplane device driver receives a module reset request (Identity Object reset service).
  • Page 77: Special Callback Registration

    CIP Messaging API 4-25 Special Callback Registration MVIcip_RegisterFatalFaultRtn Syntax: MVIcip_RegisterFatalFaultRtn( MVIHANDLE apiHandle, MVICALLBACK (*fatalfault_proc)( ) ); Parameters: apihandle handle returned by previous call to MVIcip_Open fatalfault_proc pointer to fatal fault callback routine Description: This function is used by an application to register a fatal fault callback routine.
  • Page 78 4-26 CIP Messaging API MVIcip_RegisterResetReqRtn Syntax: MVIcip_RegisterResetReqRtn( MVIHANDLE apiHandle, MVICALLBACK (*resetrequest_proc)( ) ); Parameters: apihandle handle returned by previous call to MVIcip_Open resetrequest_proc pointer to reset request callback routine Description: This function is used by an application to register a reset request callback routine.
  • Page 79 CIP Messaging API 4-27 MVIcip_RegisterFlashUpdateRtn Syntax: MVIcip_RegisterFlashUpdateRtn(MVIHANDLE apiHandle, MVICALLBACK (*flashupdate_proc)( ) ); Parameters: apiHandle handle returned by previous call to MVIcip_Open flashupdate_proc pointer to flash update callback routine Description: This function is used by an application to register a flash update callback routine.
  • Page 80: Miscellaneous Functions

    4-28 CIP Messaging API Miscellaneous Functions MVIcip_GetIdObject Syntax: MVIcip_GetIdObject(MVIHANDLE apiHandle, MVICIPIDOBJ *idobject); Parameters: apiHandle handle returned from MVIcip_Open call Description: MVIcip_GetIdObject retrieves the identity object for the module. apiHandle must be a valid handle returned from MVIcip_Open. idobject is a pointer to a structure of type MVICIPIDOBJ. The members of this structure will be updated with the module identity data.
  • Page 81 CIP Messaging API 4-29 MVIcip_GetVersionInfo Syntax: MVIcip_GetVersionInfo(MVIHANDLE handle, MVICIPVERSIONINFO *verinfo); Parameters: handle handle returned by previous call to MVIcip_Open verinfo pointer to structure of type MVICIPVERSIONINFO Description: MVIcip_GetVersionInfo retrieves the current version of the API library and the backplane device driver. The information is returned in the structure verinfo.
  • Page 82 4-30 CIP Messaging API MVIcip_SetUserLED Syntax: MVIcip_SetUserLED(MVIHANDLE handle, int lednum, int ledstate); Parameters: handle handle returned by previous call to MVIcip_Open lednum specifies which of the user LED indicators is being addressed ledstate specifies state for LED indicator Description: MVIcip_SetUserLED allows an application to turn the user LED indicators on and off.
  • Page 83 CIP Messaging API 4-31 MVIcip_SetModuleStatus Syntax: MVIcip_SetModuleStatus(MVIHANDLE handle, int status); Parameters: handle handle returned by previous call to MVIcip_Open status module status, OK or Faulted Description: MVIcip_SetModuleStatus allows an application set the status of the module to OK or Faulted. handle must be a valid handle returned from MVIcip_Open.
  • Page 84 4-32 CIP Messaging API MVIcip_ErrorString Syntax: MVIcip_ErrorString(int errcode, char *buf); Parameters: errcode error code returned from an API function pointer to user buffer to receive message Description: MVIcip_ErrorString returns a text error message associated with the error code errcode. The null-terminated error message is copied into the buffer specified by buf.
  • Page 85 CIP Messaging API 4-33 MVIcip_GetSetupMode Syntax: MVIcip_GetSetupMode(MVIHANDLE handle, int *mode); Parameters: handle handle returned by previous call to MVIcip_Open mode pointer to an integer that is set to 1 if the Setup Jumper is installed, or 0 if the Setup Jumper is not installed. Description: This function is used to query the state of the Setup Jumper.
  • Page 86 4-34 CIP Messaging API MVIcip_GetConsoleMode Syntax: MVIcip_GetConsoleMode(MVIHANDLE handle, int *mode, int *baud); Parameters: handle handle returned by previous call to MVIcip_Open mode pointer to an integer that is set to 1 if the console is enabled, or 0 if the console is disabled. baud pointer to an integer that is set to the console baud rate index if the console is enabled.
  • Page 87 CIP Messaging API 4-35 MVIcip_Sleep Syntax: MVIcip_Sleep( MVIHANDLE apiHandle, WORD msdelay ); Parameters: apihandle handle returned by previous call to MVIcip_Open msdelay time in milliseconds to suspend taskdelay Description: MVIcip_Sleep suspends the calling thread for at least msdelay milliseconds. The actual delay may be several milliseconds longer than msdelay, due to system overhead and the system timer granularity (5ms).
  • Page 88 4-36 CIP Messaging API Publication 1756-RM004B-EN-P - October 2000...
  • Page 89: What This Chapter Contains

    Chapter Serial Port API The Serial Port API is one of the three components of the 1756-MVI API Suite. The Serial Port API allows applications to communicate with foreign devices over the serial ports. The Serial Port API provides a common applications interface for all of the modules in the MVI family.
  • Page 90: Serial Data Transfer

    Serial Port API Serial Data Transfer The serial API communicates with foreign serial devices via industry standard UART hardware. The API acts as a high level interface that hides the hardware details from the application programmer. The primary purpose of the API is to allow data to be transferred between the module and a foreign device.
  • Page 91 Serial Port API Table 5.B Serial Port API Functions Function Category Function Name Description MVIsp_Getch Get a character from a serial port. MVIsp_Puts Send a string to a serial port. MVIsp_Gets Get a string from a serial port. MVIsp_PutData Send an array of bytes to a serial port. MVisp_GetData Receive an array of bytes from a serial port.
  • Page 92 Serial Port API Initialization MVIsp_Open Syntax: MVIsp_Open(int comport, BYTE baudrate, BYTE parity, BYTE wordlen, BYTE stopbits); Parameters: comport communications port to open baudrate baud rate for this port parity parity setting for this port wordlen number of bits for each character stopbits number of stop bits for each character Description:...
  • Page 93 Serial Port API MVIsp_Open wordlen sets the word length in number of bits per character. Valid values for word length are WORDLEN5, WORDLEN6, WORDLEN7, and WORDLEN8. The number of stop bits is set by stopbits. Valid values for stop bits are STOPBITS1 and STOPBITS2.
  • Page 94 Serial Port API MVIsp_OpenAlt Syntax: MVIsp_ OpenAlt(int comport, MVISPALTSETUP *altsetup); Parameters: comport communications port to open altsetup pointer to structure of type MVISPALTSETUP Description: MVIsp_OpenAlt provides an alternate method to acquire access to a communications port. With MVIsp_OpenAlt, the sizes of the serial port data queues can be set by the application.
  • Page 95 Serial Port API MVIsp_OpenAlt Example: MVISPALTSETUP altsetup; altsetup.baudrate = BAUD_9600; altsetup.parity = PARITY_NONE; altsetup.wordlen = WORDLEN8; altsetup.stopbits = STOPBITS1; altsetup.txquesize = DEFQSIZE; altsetup.rxquesize = DEFQSIZE * 2; if (MVIsp_OpenAlt(COM1, &altsetup) != MVI_SUCCESS) printf(“Open failed!\n”); } else { printf(“Open succeeded!\n”); See Also: MVIsp_Open Publication 1756-RM004B-EN-P - October 2000...
  • Page 96 Serial Port API MVIsp_Close Syntax: MVIsp_Close(int comport); Parameters: comport port to close Description: This function is used by an application to release control of the a communications port. comport must be previously opened with MVIsp_Open. comport specifies which port is to be closed. The valid values for the 1756-MVI module are COM1 (corresponds to PRT1), COM2 (corresponds to PRT2), and COM3 (corresponds to PRT3).
  • Page 97: Configuration

    Serial Port API Configuration MVIsp_Config Syntax: MVIsp_Config(int comport, BYTE baudrate, BYTE parity, BYTE wordlen, BYTE stopbits); Parameters: comport communications port to open baudrate baud rate for this port parity parity setting for this port wordlen number of bits for each character stopbits number of stop bits for each character Description:...
  • Page 98 5-10 Serial Port API MVIsp_Config Example: if (MVIsp_Config(COM1,BAUD_9600,PARITY_NONE,WORDLEN8, STOPBITS1) != MVI_SUCCESS) { printf(“Config failed!\n”); } else{ printf(“Config succeeded\n”); See Also: MVIsp_Open Publication 1756-RM004B-EN-P - October 2000...
  • Page 99 Serial Port API 5-11 MVIsp_SetHandshaking Syntax: MVIsp_SetHandshaking(int comport, int shake); Parameters: comport port for which handshaking is to be set shake desired handshake mode Description: This function is used to enable handshaking for a port after it has been opened. comport must be previously opened with MVIsp_Open. shake is the desired handshake mode.
  • Page 100: Port Status

    5-12 Serial Port API Port Status MVIsp_SetRTS Syntax: MVIsp_SetRTS(int comport, int state); Parameters: comport port for which RTS is to be changed state desired RTS state Description: This functions allows the state of the RTS signal to be controlled. comport must be previously opened with MVIsp_Open. state specifies desired state of the RTS signal.
  • Page 101 Serial Port API 5-13 MVIsp_GetRTS Syntax: MVIsp_GetRTS(int comport, int *state); Parameters: comport port for which RTS is requested state pointer to int for desired state Description: This function allows the state of the RTS signal to be determined. comport must be previously opened with MVIsp_Open. The current state of the RTS signal is copied to the int pointed to by state.
  • Page 102 5-14 Serial Port API MVIsp_SetDTR Syntax: MVIsp_SetDTR(int comport, int state); Parameters: comport port for which DTR is to be changed state desired state Description: This function allows the state of the DTR signal to be controlled. comport must be previously opened with MVIsp_Open. state is the desired state of the DTR signal.
  • Page 103 Serial Port API 5-15 MVIsp_GetDTR Syntax: MVIsp_GetDTR(int comport, int *state); Parameters: comport port for which DTR is requested state pointer to int for desired state Description: This function allows the state of the DTR signal to be determined. comport must be previously opened with MVIsp_Open. The current state of the DTR signal is copied to the int pointed to by state.
  • Page 104 5-16 Serial Port API MVIsp_GetCTS Syntax: MVIsp_GetCTS(int comport, int *state); Parameters: comport port for which CTS is requested state pointer to int for desired state Description: This function allows the state of the CTS signal to be determined. comport must be previously opened with MVIsp_Open. The current state of the CTS signal is copied to the int pointed to by state.
  • Page 105 Serial Port API 5-17 MVIsp_GetDSR Syntax: MVIsp_GetDSR(int comport, int *state); Parameters: comport port for which DSR is requested state pointer to int for desired state Description: This function allows the state of the DSR signal to be determined. comport must be previously opened with MVIsp_Open. The current state of the DSR signal is copied to the int pointed to by state.
  • Page 106 5-18 Serial Port API MVIsp_GetDCD Syntax: MVIsp_GetDCD(int comport, int *state); Parameters: comport port for which DCD is requested state pointer to int for desired state Description: This function allows the state of the DCD signal to be determined. comport must be previously opened with MVIsp_Open. The current state of the DCD signal is copied to the int pointed to by state.
  • Page 107 Serial Port API 5-19 MVIsp_GetLineStatus Syntax: MVIsp_GetLineStatus(int comport, BYTE *status); Parameters: comport port for which line status is requested status pointer to BYTE to receive line status Description: MVIsp_GetLineStatus returns any line status errors received over the serial port. The status returned indicates if any overrun, parity, or framing errors or break signals have been detected.
  • Page 108: Communications

    5-20 Serial Port API Communications MVIsp_Putch Syntax: MVIsp_Putch(int comport, BYTE ch, DWORD timeout); Parameters: comport port to which data is to be sent character to be sent timeout amount of time to wait to send character Description: This function is used to transmit a single character across a serial port. comport must be previously opened with MVIsp_Open.
  • Page 109 Serial Port API 5-21 MVIsp_Putch Example: if (MVIsp_Putch(COM1, ‘;’, 1000L) != MVI_SUCCESS) printf(“Semicolon could not be sent in 1 second\n”); See Also: MVIsp_GetCh MVIsp_Puts MVIsp_PutData Publication 1756-RM004B-EN-P - October 2000...
  • Page 110 5-22 Serial Port API MVIsp_Getch Syntax: MVIsp_Getch(int comport, BYTE *ch, DWORD timeout); Parameters: comport port from which data is to be received pointer to BYTE to receive character timeout amount of time to wait to receive character Description: This function is used to receive a single character from a serial port. comport must be previously opened with MVIsp_Open.
  • Page 111 Serial Port API 5-23 MVIsp_Puts Syntax: MVIsp_Puts (int comport, BYTE *str, BYTE term, int *len, DWORD timeout); Parameters: comport port to which data is to be sent string of characters to be sent term termination character of string pointer to BYTE to receive number of characters sent timeout amount of time to wait to send character Description:...
  • Page 112 5-24 Serial Port API MVIsp_Puts Return Value: MVI_SUCCESS the characters were sent successfully MVI_ERR_NOACCESS comport has not been opened MVI_ERR_BADPARAM invalid parameter MVI_ERR_TIMEOUT timeout elapsed before characters sent Example: char str[] = “Hello, World!”; if (MVIsp_Puts(COM1, str, ‘\0’, &nn, 1000L) != MVI_SUCCESS) printf(“%d characters were sent\n”,nn);...
  • Page 113: Timeout Amount Of Time To Wait To Receive Character

    Serial Port API 5-25 MVIsp_Gets Syntax: MVIsp_Gets(int comport, BYTE *str, BYTE term, int *len, DWORD timeout); Parameters: comport port from which data is to be received pointer to array of bytes to receive data term termination character of data number of bytes to receive / bytes received timeout amount of time to wait to receive character Description:...
  • Page 114 5-26 Serial Port API MVIsp_Gets When MVIsp_Gets returns, it writes to the int pointed to by len the number of bytes retrieved. len is written for successfully retrieved bytes as well as timeouts. If the function returns because a termination character was retrieved, len includes the termination character in the length.
  • Page 115 Serial Port API 5-27 MVIsp_PutData Syntax: MVIsp_PutData(int comport, BYTE *data, int *len, DWORD timeout); Parameters: comport port to which data is to be sent data pointer to array of bytes to be sent pointer to number of bytes to send / bytes sent timeout amount of time to wait to send byte Description:...
  • Page 116 5-28 Serial Port API MVIsp_PutData Return Value: MVI_SUCCESS the bytes were sent successfully MVI_ERR_NOACCESS comport has not been opened MVI_ERR_BADPARAM invalid parameter MVI_ERR_TIMEOUT timeout elapsed before bytes sent Example: BYTE dd[5] = { 10, 20, 30, 40, 50 }; nn = 5; if (MVIsp_PutData(COM1, &dd[0], &nn, 1000L) != MVI_SUCCESS) printf(“%d bytes were sent\n”,nn);...
  • Page 117: Return Value: Mvi_Success

    Serial Port API 5-29 MVIsp_GetData Syntax: MVIsp_GetData(int comport, BYTE *data, int *len, DWORD timeout); Parameters: comport port from which data is to be received data pointer to array of bytes to receive data number of bytes to receive / bytes received timeout amount of time to wait to receive character Description:...
  • Page 118: Mvisp_Putch

    5-30 Serial Port API MVIsp_GetData Example: BYTE data[10]; nn = 10; if (MVIsp_GetData(COM1, data, &nn, 1000L) = = MVI_SUCCESS) printf(“%d bytes were received\n”,nn); See Also: MVIsp_Gets MVIsp_Getch MVIsp_PutData Publication 1756-RM004B-EN-P - October 2000...
  • Page 119 Serial Port API 5-31 MVIsp_GetCountUnsent Syntax: MVIsp_GetCountUnsent(int comport, int *count); Parameters: comport desired communications port count pointer to int to receive unsent character count Description: MVIsp_GetCountUnsent returns the number of characters in the transmit queue that are waiting to be sent. Since data sent to a port is queued before transmission across a serial port, the application may need to determine if all characters have been transmitted or how many characters remain to be transmitted.
  • Page 120 5-32 Serial Port API MVIsp_GetCountUnread Syntax: MVIsp_GetCountUnread(int comport, int *count); Parameters: comport desired communications port count pointer to int to receive unread character count Description: MVIsp_GetCountUnread returns the number of characters in the receive queue that are waiting to be read. Since data received from a port is queued after reception from a serial port, the application may need to determine if all characters have been read or how many characters remain to be read.
  • Page 121 Serial Port API 5-33 MVIsp_PurgeDataUnsent Syntax: MVIsp_PurgeDataUnsent(int comport); Parameters: comport port whose transmit data is to be purged Description: MVIsp_PurgeDataUnsent deletes all data waiting in the transmit queue. The data is discarded and is not transmitted. comport specifies the port whose transmit queue is to be purged. Return Value: MVI_SUCCESS the data was purged successfully...
  • Page 122 5-34 Serial Port API MVIsp_PurgeDataUnread Syntax: MVIsp_PurgeDataUnread(int comport) Parameters: comport port whose receive data is to be purged Description: MVIsp_PurgeDataUnread deletes all data waiting in the receive queue. The data is discarded and is no longer available for reading. Note: If handshaking is enabled and the transmitting serial device has been paused, this function will release the transmitting serial device to resume transmission.
  • Page 123: Miscellaneous Functions

    Serial Port API 5-35 Miscellaneous Functions MVIsp_GetVersionInfo Syntax: MVIsp_GetVersionInfo(MVISPVERSIONINFO *verinfo); Parameters: verinfo pointer to structure of type MVISPVERSIONINFO Description: MVIsp_GetVersionInfo retrieves the current version of the API. The version information is returned in the structure verinfo. The MVISPVERSIONINFO structure is defined as follows: typedef struct tagMVISPVERSIONINFO WORD APISeries;...
  • Page 124 5-36 Serial Port API Publication 1756-RM004B-EN-P - October 2000...
  • Page 125: What This Chapter Contains

    Chapter Programming the MVI Module What This Chapter Contains This chapter describes how to get your application running on the MVI module. Once an application has been developed using the backplane and serial APIs, it must be downloaded to the MVI module in order to run.
  • Page 126: Config.sys File

    Programming the MVI Module One advantage of a compact flash is that you can write files to it using the RY utility that ships on the MVI ROM disk. By contrast, the ROM disk is read only, and therefore requires utilities that both create and download a new disk image to make even the smallest change to it.
  • Page 127: Command Interpreter

    Programming the MVI Module If a command interpreter is not needed, the user application may be executed directly from the CONFIG.SYS file as shown below (where USERAPP.EXE is the user application executable file name): SHELL=A:\USERAPP.EXE The user application may also be executed automatically from an AUTOEXEC.BAT file, or manually from the console command line.
  • Page 128: Creating A Rom Disk Image

    Programming the MVI Module • SY.EXE Y-modem send utility • DOS DIRECTORY: ATTRIB CHKDSK DELTREE FORMAT XCOPY Creating a ROM Disk Image To change the contents of the ROM disk, a new disk image must be created using the DISKIMAG (DOS) or WINIMAGE (Windows) utilities.
  • Page 129 Programming the MVI Module Typically, plan on an extra 10KB for system overhead. Also plan on additional wasted bytes at the end of each file, since files are allocated on the disk in units of clusters, not individual bytes. For 1.44 MB floppies, one cluster equals one sector (512 bytes), so the maximum waste per file is 511 bytes.
  • Page 130: Using Winimage: Windows Disk Image Builder

    Programming the MVI Module Using WINIMAGE: Windows Disk Image Builder You can also use WINIMAGE, a Win95/98/NT utility, to create disk images for downloading to the 1756-MVI module. WINIMAGE is more convenient to use than DISKIMAG, since it does not require a floppy diskette.
  • Page 131 Programming the MVI Module 5. Select Options > Settings and make sure the Truncate unused image part option is selected, as shown in figure 6.2. Click on Figure 6.2 Winimage Settings 6. Select File > Save As, and choose a directory and filename for the disk image file.
  • Page 132: Downloading A Rom Disk Image

    Programming the MVI Module To de-fragment an image, select Image > Defrag current image. 8. The disk image is now ready for downloading to the1756- MVI module using the MVIUPDAT utility (see the following section). For more details on using WINIMAGE, see the documentation that More accompanies it.
  • Page 133 Programming the MVI Module To download a disk image to the 1756-MVI module, follow these steps: 1. Install the Setup Jumper on the 1756-MVI module. See the Installation Instructions for details. 2. Connect PRT1 of the 1756-MVI module to your selected port on the computer using a null-modem serial cable.
  • Page 134: Mviupdat

    6-10 Programming the MVI Module 7. Choose the diskette image file to download, then click on the Download button. The download progress is indicated by a progress bar. After the download has completed, a “Download Successful” message will appear. Only one program at a time may access a serial port. IMPORTANT If you are using HyperTerm or a similar terminal program for the MVI module console, exit or...
  • Page 135: Booting From The C: (Compact Flash) Drive

    Programming the MVI Module 6-11 5. Select Verify Module Connection to verify the connection to the 1756-MVI module. If the connection is working properly, the message “Module Responding” will be displayed. If an error occurs, check your serial port assignments and cable connections.
  • Page 136 6-12 Programming the MVI Module 2. MVI users who do not currently have the updated autoexec.bat file, yet wish to take advantage of an MVIEXEC.bat file, should create a new ROMdisk image with the updated autoexec.bat listed below and download the new image to the ROMdisk. Then they must create their MVIEXEC.bat file and download it to the C: drive.
  • Page 137 C drive 4-23 flashupdate_proc CIP API system data flow diagram help CIP messaging API 4-1 to 4-35 Rockwell Automation support 4-1 to 4-2 architecture 4-2 to 4-3 backplane device driver 4-4 to 4-35 CIP messaging API functions...
  • Page 138 Index 3-6 to 3-7 4-25 initialization MVIcip_RegisterFatalFaultRtn 4-27 MVIbp_Close MVIcip_RegisterFlashUpdateRtn 4-26 MVIbp_Open MVIcip_RegisterResetReqRtn 3-14 to 3-17 4-31 messaging MVIcip_SetModuleStatus 3-14 4-30 MVIbp_ReceiveMessage MVIcip_SetUserLED 3-16 4-35 MVIbp_SendMessage MVIcip_Sleep 3-20 to 3-29 miscellaneous MVIcip_UnregisterAssemblyObj 3-28 4-10 MVIbp_ErrorString MVIcip_WriteConnected 3-25 6-11 to 6-12 MVIbp_GetConsoleMode MVIEXEC 3-21...
  • Page 139 MVIsp_Open MVIsp_OpenAlt 5-35 miscellaneous reference publications 5-35 MVIsp_GetVersionInfo 4-24 resetrequest_proc 5-12 to 5-19 port status Rockwell Automation support 5-16 MVIsp_GetCTS 6-1 to 6-4 ROM disk configuration 5-18 MVIsp_GetDCD 6-3 to 6-11 ROM disk image 5-15 MVIsp_GetDTR 4-20...
  • Page 140 Index Publication 1756-RM004B-EN-P - October 2000...
  • Page 141 Allen-Bradley Publication Problem Report If you find a problem with our documentation, please complete and return this form. Pub. Name ControlLogix Multi-Vendor Interface Module Programming Reference Manual Cat. No. 1756-MVI Pub. No. 1756-RM004B-EN-P Pub. Date October 2000 Part No. 957445-24 Check Problem(s) Type: Describe Problem(s) Internal Use Only...
  • Page 142 Other Comments PLEASE FOLD HERE NO POSTAGE NECESSARY IF MAILED IN THE UNITED STATES BUSINESS REPLY MAIL FIRST-CLASS MAIL PERMIT NO. 18235 CLEVELAND OH POSTAGE WILL BE PAID BY THE ADDRESSEE 1 ALLEN BRADLEY DR MAYFIELD HEIGHTS OH 44124-9705...
  • Page 144 Back Cover Publication 1756-RM004B-EN-P - October 2000 PN 957445-24 © Year Rockwell International Corporation. Printed in the U.S.A.

Table of Contents