Loss of IAC between 2 applications within the same controller during download
We have experienced possible IAC loss between 2 applications within the same controller which leads PM865 triggerd plant shutdown during downloading. We are investigating both system and application side but it will be very difficult to re-produce the issue if this is caused by the timing issue. Manual indicates there is no timeout for IAC loss if within the same controller, therfore we suspect loss caused the plant trip with SIS application.
Is it possible to loss an IAC between 2 applications in the same controller?
IAC runs on MMS - so under the hood, IAC is still an "MMS" message.
When you warm start an application, MMS will stop briefly. It does not matter if the applications are in the same or different controllers. This is known behaviour and is working as expected.
You need to modify your application logic to ignore momentary losses in comms and determine an appropriate period to ignore.
IAC does not use MMS.
- MMS is a standardised protocol (ISO/IEC 9056-2) running on TCP port 102
- IAC is proprietary to ABB and run on UDP port 2757
Due to the nature of UDP messaging (less protocol overhead) and the binary telegram format of IAC (in contrast to asking for Access Variables identified via ASCII text strings) the latter (IAC) is more lightweight and it is estimated to be able to carry up to 5x more information, or be up to 5x more efficient than using MMS.
During warm download, changed applications will be temporarily stopped while being replaced with the new version. The larger application, the more variable content and state information needs to be copied from old to new version before the new can start executing. This time is measured as "Stop Time". It can stretch from a few millieseconds to much more and cause malfunction in time critical applications.
There are also a few known problems with IAC that could potentially lead to a shutdown. Please find more information in the release notes, e.g. 3BSE089043.
If you need more help, I suggest that you open a support case with your regional ABB support center and ask for assistance with troubleshooting the shutdown.
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