Stirling PLC not accepting Control System's commands
During some tests on the field it happened that it was not possible to change the state of the stirling actuators from the CS system:
- the CS was in MMLL mode
- the EtherCAT communication was running properly (ethercat slaves and dmesg signalled all ok, all inputs appeared correct on the dashboard)
- no change was made to the control system since last execution on the field
- the stirling PLC was up and running
- no change was made to the PLC firmware since last execution on the field, neither was it rebooted
When I logged into the PLC with TwinCAT I noticed a very odd behaviour. When monitoring the input variables, I could see that the watchdog exported by the control system was updating correctly, while the status of the actuator inputs (ie blower, pumps...) were ignored (they all appeared to 0 even if they were set to 1 from the MMLL panel). Since all the outputs of the control system wrt the stirling are sent in a single packet and the watchdog was updating correctly, the packets were correctly received by the PLC.
The watchdog and the actuators are managed inside the PLC by two distinct tasks (threads), which both seemed running properly.
In this situation, trying to force the PLC input to a fixed value with TwinCAT (ie setting the blower to 1) produced a positive result.
Thinking that the problem could some how be related to the PLC, I restarted it via its web interface. After a restart, the communication CS -> Stirling PLC was still broken, and it also was not possible to force the variables with TwinCAT anymore (forcing an input to 1 resulted in forcing it to 0).
After some time, I rebooted the PLC again, this time however everything was working properly (both CS -> PLC communication and TwinCAT forcing).