In reply to Youssef.El-Bahtimy:
I agree that a race condition between DeltaV and the PLC would not be a good situation. However, I believe taht setting up a host processor would be out of the scope of this project. Is it possible to solve this problem from within DeltaV or on the ControlLogix500 software?
In reply to chip.burge:
The VIM should be able to only pass values to the PLC on exception. So if DeltaV writes a '1' to the register and the PLC sets is to '0', the VIM should not re-write the value from DeltaV until the value in DeltaV has changed to a value other than '1'. At this point, you will have two contrasting values for what should be the same data. See this statement from the Mynah TCP Modbus manual (if you are using modbus protocol):
"Write requests from DeltaV to the external devices are always handled by exception"
www.mynah.com/.../VIM_Modbus_TCP_Manual_0.pdf
My suggestion, in more detail was to land the value from DeltaV into a PLC register, then have the PLC processor determine whether or not that data should be passed for further processing (by determining whether it has changed since the last scan). The PLC processor should keep it's own register for the value, determine whether it has changed in the last scan, and also pass that for further processing. The question is, what if the value changed for both DeltaV and PLC within the same scan? Who is the master? Your PLC logic will have to make this call.
If you can't edit the PLC logic, you will have to rely on the write on exception feature.
The DeltaV Serial Output Data set can be configured with Read Back enabled. This, I believe, has the Output data set added to the Input Data set reads. If DeltaV writes to this data set, the value is written. On the read scan, the same data set is read from the PLC. If the PLC changes the value, DeltaV will be able to see it.
The DeltaV Module can read the current value of the register and depending on the logic execute a write as needed. We used this a long while back on a system to create momentary start bits in the PLC. DeltaV would write to a coil and the PLC would reset the coil several seconds later. The write only occurred on a command initiated by an expression or an operator. Not a wired connection to an External reference.
The PLC would always win on a race condition. The logic in both systems has to take this into account. If this is a manual comman, like an Action Block where you write the IN_D to 1 and the logic clears it after executing an assignment commnad to the register via an External reference. You can read the External reference and only write if it needs to be written to. Also, the DeltaV Module should not be able to repeatedly write to the register. I would use an Input register configured as an External reference. You could wire the value as an input to a block but you can only manipulate the value with an expression assignment statement or by user write to the parameter.
Andre Dicaire