Skip to content

Verifying executed commands

David Otterdahl edited this page Mar 25, 2024 · 6 revisions

Q: What is the purpose of the CommandResponse? Is it supposed to return the values that we set with the CommandRequest? As a kind of echo? Or should it return the current state of the variables, before the CommandRequest takes place?

A: There several ways to check if a command has failed. If there is an obvious error; e.g. wrong data format; MessageNotAck should be sent back immediately. Basically this tells us that this might be caused by a programming error.

The MessageAck and CommandResponse are sent when the command has been accepted by the traffic controller. The value in the CommandRequest is treated like a set point (also known as a desired value) and the value of the CommandResponse is the actual value. The CommandResponse contains the same values of the CommandRequest if the command was successful. If they are not the same values then the command have failed.

(If the security code is incorrect it returns a blank value, otherwise the CommandResponse would reveal the correct value)

There are many cases with road side equipment where it not possible to immediately know if the command will actually be executed or not. E.g. changing of a time plan can take a long time and the command can be interrupted by other events of the equipment. The equipment may have accepted the command but immediately changes status again due to other circumstances, such as other local control, programming according to the clock, etc. It depends on the implementation of the equipment.

If the RSMP command should "force" the command or not (have the highest priority) depends on the configuration of the equipment.

To be sure that a command really has been executed the supervision system needs to:

  1. Watch the MessageAck/MessageNotAck. Was the command received and correctly formatted?
  2. Watch the CommandResponse. Was the command accepted by the traffic controller?
  3. Watch the corresponding statuses. Is the command actually executed (and remains active) within the expected time period?