The principal reason why it may be necessary to override the SIGM20 logic is for cases where the signal should be red, but the need for that isn't present on the railway. For example, the track ahead may be clear - but Traincontroller wants the signal red because it will be driving a train that will need the signal to be red. Each SIGM20 signal has a DCC address which is set to THROWN will make the signal red: but if Traincontroller is using 3 or 4 aspect signals, then it will set two consecutive DCC addresses for each signal.

A solution to this is to have Traincontroller set two unused DCC addresses for the signal, then use the state of those 2 addresses in the signal logic.  To do this:

  1. Set up the traincontroller signals to use “phantom” DCC addresses (addresses well away from real devices – e.g. 1500).
  2. These phantom addresses will appear to the railway as pairs of points set to closed or thrown. The meanings of the two closed/thrown pairs are programmable in Traincontroller; for 3 aspect you could have location 1=thrown for a red signal; for a 4 aspect you could have both locations are thrown for a red signal.
  3. Use the “signal goes red when” logic to pick the correct combination of those phantom point numbers being closed/thrown to make the signal go red.  So you would program “go red when point 1500=thrown AND point 1501=thrown” for the 4 aspect signal as described in step 2.

 What this is doing, essentially, is giving a different set of DCC addresses that the SIGM20 logic will respond to.