why IAC variable goes to its default value in client appplication for 1 sec when we downoad server application
It has been observed sometimes one component “Forward.Connected” in IAC variable with Bidirectional SAFETY data type flips from true to false for one scan cycle (1 Second) in the IAC client application during warm download of IAC server application App217_54_01SIS (one time every 3-4 downloads) which causes valve trip , provided this IAC doesn’t have Retain attribute in safety data type level and Forward.Connected component in both sides, both Applications are in one SIS controller means internal IAC , and in client side IAC Variable is connected to X1 Parameter of REUSE AND_Safety_Type only and the rest (X2-X5) are empty.Root Cause Abstract
I have used a Firmware hidden Control Builder function GetCurrentTime (hr_date_and_time variable data type) which measures the execution time stamp by Nano Seconds (10 NanoSec Precession) at the moment when this function is executed respective to its position in the logic flow
The root cause is in IAC server App Diagram module, as the IAC variable basically is written in the EMc control module and connected to upper UM module Parameters and then to the upper Diagram communication variables directly, and the execution order is supposed to be Emc (to write) then UM (Reads) then diagram (Reads) then the communication variable will take the correct value from the Diagram to be sent to the IAC Client App, but the reality is that the execution order is Diagram then UM then Emc and that means the diagram which contains the Communication Variables declaration pane will start with default values of variables which are written by sub control modules,. That happens only when the children modules are connected to Communication Variable in the Diagram Level directly and Doesn’t happen when it is connected to Normal Diagram Variable (because of the Hidden No-Sort Attribute)
The execution order is correct between the client and server Apps , as the client is executed after the “Connected” component is executed and True value is written into it in the server side in EMcControl Module normally and as expected from time stamp perspective , However, There is an unexpected execution behavior as the default value “False” of “Connected” component sometimes is copied from IAC variable in server side to IAC variable in client side at the end of first scan of server application after warm download, that means the value of IAC sometimes might be copied from the Emc “True” and sometimes from Diagram which has default value “False” at first scan.Suggested Workaround: To connect all Diagram sub control modules variables to Diagram Variables (not to communication Variables directly) and then transfer them from Variables to Communication Variables in a code pane in the diagram
In an internal IAC only the interval time for communication variables matter and you can try set Fast or Very Fast.
but FYI the shortest IAC interval time is 60ms.
IF this is a SIL application
Define the ISP (Input Set as Predetermined) value for Communication Variables with the in direction. If a Communication Variable has a bad status, the value will be set to the ISP value while a communication error exists.