23.03.2017 Views

wilamowski-b-m-irwin-j-d-industrial-communication-systems-2011

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Communication Aspects of IEC 61499 Architecture 55-17<br />

Event<br />

INIT INITO<br />

REQ CNF<br />

INIT INITO<br />

IND<br />

Data<br />

ID<br />

SEND_1<br />

SD_1<br />

ID<br />

RCV_1<br />

RD_1<br />

FIGURE 55.14<br />

Producer–consumer pair implemented in MODBUS.<br />

and port number of the remote server is also required, and this INIT+ event will result in the client<br />

establishing a TCP connection with the RCV FB. The SEND FB, upon receiving an REQ+ event,<br />

sends the data (16-bit words) available on its SD_x input ports and simultaneously asks for the<br />

return data, using the “read/write multiple registers” Modbus function (function code 23-17 hex).<br />

• The RCV FB, upon receiving the message sent by the client, places the received data on its RD_x<br />

data output ports and emits an IND+ event.<br />

• The server device must then make the return data available on the RCV SD_x input ports and<br />

emit the RSP+ event. Upon receiving this event, the RCV FB then replies to the “read/write multiple<br />

registers” request. The SEND FB, upon receiving the reply message, places the received data<br />

on its RD_x output ports and emits the CNF+ event.<br />

If the RSP+ event is delayed beyond a certain timeout, the SEND FB will emit an RSP− event.<br />

Since the IEC 61499 FBs do not use the same remote memory data model as the Modbus protocol,<br />

with the mapping proposed above it is not necessary to specify the Modbus register addresses. These are<br />

assumed to always start at 0, and the number of registers to read (write) is the same as the number of data<br />

outputs (inputs) on the SEND FB. Note that the number of input words of the SEND FB must match the<br />

number of output words in the RCV FB, and vice versa.<br />

Similar SEND and RCV FBs are used for the transmission of Boolean data. However, since the<br />

Modbus protocol does not include a function that allows simultaneous reading and writing of Boolean<br />

data, these must only send data either from the SEND FB to the RCV FB (using the Modbus function<br />

“Write Multiple Coils,” code 15-0F hex) or from the RCV FB to the SEND FB (using the Modbus function<br />

“Read Coils,” code 01-01 hex).<br />

The above <strong>communication</strong> assumes that the server device also supports IEC 61499. However, currently<br />

many remote terminal units (RTUs) support the Modbus protocol, but do not implement IEC<br />

61499. To allow a controller device to communicate with these legacy RTUs, SEND FBs are used that<br />

connect directly to these legacy Modbus server devices. These RCV FBs require additional parameters<br />

when the function is initialized in order to specify the Modbus function, data address, and, when reading<br />

data, the number of registers to use when transferring data to/from the legacy Modbus server.<br />

55.10 Communication via the CIP<br />

In this section, we show how another <strong>communication</strong> network, based on CIP, can be used in our<br />

example. CIP has originally been developed as application layer for Rockwell Automation’s CAN-based<br />

DeviceNet and their controller network ControlNet. With the development for the <strong>industrial</strong> Ethernet<br />

EtherNet/IP and the sensor actuator bus CompoNet, the CIP specification was further unified and provides<br />

a common application layer for these four networks. CIP is a multimaster system and therefore<br />

well-suited for the application in a distributed control system.<br />

Interface of IEC FBs for CIP was defined in the compliance profile [25]. More implementation details<br />

can be found in [26,27].<br />

© <strong>2011</strong> by Taylor and Francis Group, LLC

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!