【正文】
GN DECISIONS Unconnected messaging is used since the advantages of connected messaging do not transfer from ControlNet to EtherNet/IP: Ether does not reserve bandwidth。 guaranteed delivery is already handled by TCP. For CIP_Read_Data requests, parison of connected to unconnected messaging resulted in slightly smaller messages and a 3% increase in throughput. As a drawback, the client application has to send requests at the established update interval of the connection or faster. Temporary Ether delays cause the PLC to close the connection. The ControlLogix MultiRequest Service (0x0A) is used to bine CIP_Read/Write_Data requests until either the total request or expected response size reaches the PLC buffer limit of approximately 500 bytes. (Chapter in [2] defines this as 511 bytes, in [6] as 504 bytes). 5 IMPLEMENTATION OF EPICS SUPPORT For each PLC, the vxWorks driver code arranges the tags in scan lists depending on the requested update rate. One thread per PLC handles all read/write requests. EPICS device support allows analog, binary and multibit records to use the driver for input and output. Tags have to refer to a scalar value, a single array element or a structure element, not whole arrays or structures. The PLC data types BOOL, SINT, INT, DINT and REAL are handled. One can change the record configuration at runtime, without rebooting the IOC, . the tag name that a record refers to can be replaced. In case of a munication error or timeout, the driver disconnects from the PLC and attempts periodic reconnects. Per default, the driver bines requests for array elements into one array transfer from the first to the highest requested element. This leads to a significant reduction in transfer times, but might have side effects: The IOC will always write the whole array whenever more than one element has been changed by output records. If the same PLC array has been modified by another source (PanelView display) since the last transfer, the IOC is unaware of these changes and will overwrite them. An array transfer is also sizelimited by the aforementioned PLC buffer limit. The record configuration allows separate array element transfers as a workaround for these cases. For output records, the driver sends a CIP_Write_Data message whenever the record is processed. Otherwise it will periodically read the tag from the PLC and update the output record if the value on the PLC differs from the one in the record. The driver keeps statistical information (error counts, last/minimum/maximum transfer time) for each scan list. Analog input records allow access to these values. One problem arose with BOOL arrays since they are transferred as DINT values. For an analog record, a tag of “test [5]” is interpreted as addressing the 5th element of tag “test”. When this is applied to a BOOL array, the result would be the 5th DINT, containing bits 160191. So for binary records, all array access is assumed to target BOOL arrays, and “test [5]” would be transformed in a request to DINT[0], bit 5. This software has been tested on 68K, PPC and Pentium IOCs. The lower driver layer handles the different byte order. In addition, a simple mandline program is available for Unix and Win32 that allows read and write access to PLC tags as a debugging aid. 6 PERFORMANCE For the following, an MVME2100 CPU with a 100baseTwork interface municated to the PLC with its 10baseT connection via a dual speed hub. Another office P