9.2.14 ControlLogix Example: Reading and Writing MSG Instructions
Often times, applications may need to both read data from and write data to the inverter. To acc omplish
this task, multiple MSG instructions will need to be implemented in the PLC program. The configuration
and execution for implementing multiple MSG instructions is in general identical to that required for
implementing just one MSG instruction. Each MSG instruction will require its own message controller
tag.
Figure 75 shows an example of three MSG instructions, one for reading and two for writing (the
inverter’s frequency command and command word). Note the addition of the en_xx_wr XIC elements for
the write logic. The reason for the addition of these elements is that while reading from a remote device
is often continuously performed (monitoring), data is typically written to the remote device only when
necessary (i.e. when the value to write has changed). This conserves both network bandwidth and
potentially EEPROM lifespans on the target device. The en_xx_wr elements in this example, therefore,
would typically be replaced in an actual application program by user-provided logic that controls the
conditions under which write operations would be performed.
Figure 75: Reading and Writing via MSG Instructions
Figure 76 shows the configuration details of the example fc_wr_connection MSG instruction. Note that
the chos en “Message Type” is “CIP Data Table W rite”, and that this instruction will only be writing to one
inverter function code: namely, the frequency command (Destination Element is S05). The Source
Element in this case is the 2
nd
element (starting from index 0) of an INT array tag named “wr_data”.
Figure 76: MSG Configuration for Writing
Note that when writing data via explicit messaging, use caution to ensure that the commanded function
codes are not also simultaneously being commanded in the background via I/O messaging.
Indeterminate behavior can occur if MSG instructions and background I/O data transfers are both writing
to the same function codes. In other words, if the I/O messaging example procedure detailed in section
9.2.11 has already been implemented, and the same program is now being modified to implement
explicit messaging, then it is recommended to inhibit the target module by selecting the “Inhibit Module”
checkbox in the Connection tab of the Module Properties dialog.