I would like to have a fail over value go into a PID block. As soon as I pull the fuse the value freezes and any downstream blocks dont see the value (PID and CMP block no longer work) . Also the Bad_Active and the Block_ERR both just go to "Non-Zero instead of some sort of value that I can use to send or activate the select block.
Further the value freezes for sending via modbus so I have no way of alerting the PLC of the Transmitter failure. Any help would be appreciated.
Instead of using outputs from blocks directly, I suggest to use a CALC block and add specific logic to handle this issue. The CALC block can evaluate the status parameter of a value or variable and execute specific logic to send whatever value you want to the PLC. The CALC block could replace the CMP and XFR block in your structure as well and perform their function.
In order to use the BAD_ACTIVE parameter of the AI block, you would have to set the BAD_MASK parameter of the AI block during configuration. I imagine that the "Input Failure/Bad PV" option in BAD_MASK would apply to a failed CHARM input. BAD_ACTIVE would still not be a TRUE or FALSE expression. It would have to be evaluated with logic (in a CALC block).
Within the CALC block, you can check the status of the OUT parameter with IF ... THEN and execute accordingly.
Here is a simple CALC expression to start with (assumption: AI2/OUT is connected to CALC1/IN1, PI6800 is connected to CALC1/IN2, FAULT (-5) is connected to CALC1/IN3, CALC1/OUT1 is connected to PID1/IN, CALC1/OUT2 is connected to TEST_TO_PLC) :
IF ('IN1.ST' < 128) OR ('IN1.CV' < 'IN3.CV') THEN 'OUT1.CV' := 'IN2.CV'; 'OUT1.ST' := 'IN2.ST'; 'OUT2.CV' := 'IN2.CV'; 'OUT2.ST' := 'IN2.ST';ELSE 'OUT1.CV' := 'IN1.CV'; 'OUT1.ST' := 'IN1.ST'; 'OUT2.CV' := 'IN1.CV'; 'OUT2.ST' := 'IN1.ST';END_IF;
In reply to fkitzmann:
In reply to Peter Horrelt:
Andre Dicaire
In reply to Andre Dicaire:
In reply to Yawar Khan: