I have a few pairs of bo records. For simplicity let’s consider only one pair, record A and record B. The requirement is that if A is true, then B is not allowed to process. When A is false, then B can process. In addition, I also have an EDM screen with two toggle buttons; toggle A control record A and toggle B controls record B.
This is how I attempted implementing this:
record( bo, "BO:A"){
field( ZNAM, "off")
field( ONAM, "on")
field( FLNK, "DF:A")
field( PINI, "YES")
}
record( dfanout, "DF:A"){
field( DOL, "BO:A")
field( OMSL, "closed_loop")
field( OUTA, "BO:B.DISA")
}
record( bo, "B"){
field( DISV, "1")
field( ZNAM, "off")
field( ONAM, "on")
}
This record set seems to works correctly. The communication between the EDM buttons and the records does not work correctly, at least from my point of view. This is what I see:
I start the test IOC and an EDM screen.
Both A and B records are in false state.
I set A to true by clicking on toggle button A. DISA is set to 1 in record B. So, now both DISV and DISA are 1 and the record now does not process.
However, I click on toggle B and button goes to an on visual state, this conveys wrong information to the operator.
If I click toggle B again, the visual state does not change.
This behavior is observed each time toggle A changes from off to on.
My goal is to provide operators with an EDM screen such that when record A is in true (on) state, then record B will not process, but also that this denial of processing will be reflected in the visual representation of the toggle button that controls record B.
Any suggestions on how to overcome this difficulty, or some different approach which produces correct results, are most welcome.
Thanks in advance,
Zen