Model Railroad System  2.2.2
Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
TB_Switch Class Reference

Switch (turnout) operation using a CTI Train Brain and Yardmaster. More...

Public Member Functions

 TB_Switch (name,...)
 Constructor: initialize the block object. More...
 
 occupiedp ()
 The occupiedp method returns yes or no (true or false) indicating block occupation. More...
 
 pointstate ()
 The pointstate method returns normal if the points are aligned to the main route and reverse if the points are aligned to the divergent route. More...
 
 motor (route)
 The motor method sets the switch motor to align the points for the specificed route. More...
 
 propagate (aspect, from,...)
 Method used to propagate distant signal states back down the line. More...
 

Static Public Member Functions

static validate (object)
 Type validating code Raises an error if object is not either the empty string or a TB_Switch type. More...
 

Protected Member Functions

 _entering ()
 Code to run when just entering the OS Sets the signal aspects and propagates signal state. More...
 
 _exiting ()
 Code to run when about to exit the OS. More...
 

Private Member Functions

 _settruedirection (option, value)
 A method to fake direction for frog facing switches. More...
 
 _gettruedirection (option)
 A method to fake direction for frog facing switches. More...
 

Private Attributes

 acela
 Acela object. More...
 
 forwardsignal
 Signal object (typically a three color, one head block signal. More...
 
 reversesignal
 Signal object (typically a three color, one head block signal. More...
 
 isoccupied
 Saved occupation state. More...
 

Static Private Attributes

static _pointsense
 Point sense bit values. More...
 
static _routes
 Route check validation object. More...
 

Detailed Description

Switch (turnout) operation using a CTI Train Brain and Yardmaster.

Above is a typical switch (turnout) using a CTI Yardmaster to control a Circuitron Tortoise Switch Machine and a CTI Train Brain to sense the point position and a Circuits4Track quad occupancy detector to sense occupation of the switch.

Typical usage:

# Connect to the CTI network via a CTI Acela at /dev/ttyACM0
ctiacela::CTIAcela acela /dev/ttyACM0
# Switch 1 is controled by bits 0 and 1 of the Yardmaster, and sensed
# with bits 0 (occupation), 1 and 2 (point position).
TB_Switch switch1 -acelaobj acela -motoraddress 0 -osaddress 0 \
-pointsense 1 -plate SwitchPlate1
# Switch 2 is controled by bits 2 and 3 of the Yardmaster, and sensed
# with bits 3 (occupation), 4 and 5 (point position).
TB_Switch switch2 -acelaobj acela -motoraddress 2 -osaddress 3 \
-pointsense 4 -plate SwitchPlate2
Switch (turnout) operation using a CTI Train Brain and Yardmaster.
Definition: TB_Switch.tcl:49
acela
Acela object.
Definition: TB_Switch.tcl:73

For the track work elements use "switchN occupiedp" for the track work elements' occupied script and use "switchN pointstate" for the track work elements' state script. For the switch plate use "switchN motor normal" for the normal script and "switchN motor reverse" for the reverse script.

Then in the Main Loop, you would have:

while {true} {
MainWindow ctcpanel invoke Switch1
MainWindow ctcpanel invoke Switch2
MainWindow ctcpanel invoke SwitchPlate1
MainWindow ctcpanel invoke SwitchPlate2
update;# Update display
}
Author
Robert Heller <heller@deepsoft.com>

Definition at line 49 of file TB_Switch.tcl.

Constructor & Destructor Documentation

◆ TB_Switch()

TB_Switch::TB_Switch ( name  ,
  ... 
)

Constructor: initialize the block object.

Install an CTIAcela object as a component created elsewhere). Install the blocks signal (created elsewhere).

Parameters
nameName of the block object
...Options:
  • -acelaobj This is the CTIAcela object. This option is read-only and must be set at creation time.
  • -motoraddress The address of the motor control bits (two successive bits). This is an integer from 0 to 65535 inclusive. This option is read-only and can only be set at creation time. The default is 0.
  • -osaddress The address of the sensor bit for this block. This is an integer from 0 to 65535 inclusive. This option is read-only and can only be set at creation time. The default is 0.
  • -pointsense The address of the sensor bits for the point state sense (two successive bits). This is an integer from 0 to 65535 inclusive. This option is read-only and can only be set at creation time. The default is 0.
  • -direction The current direction of travel. Forward always means entering at the point end.
  • -forwarddirection The logial forward direction. Set this to reverse for a frog facing switch. Default is forward and it is readonly and can only be set during creation.
  • -forwardsignalobj The signal object protecting the points. Presumed to be a two headed signal, with the upper head relating to the main (straight) route and the lower head relating to the divergent route. The upper head has three colors: red, yellow, and green. The lower head only two: red and green.
  • -reversemainsignalobj The signal object protecting the straight frog end. Presumed to be single headed (with number plate).
  • -reversedivergentsignalobj The signal object protecting the divergent frog end. Presumed to be single headed (with number plate).
  • -previousblock The block connected to the point end.
  • -nextmainblock The block connected to the straight frog end.
  • -nextdivergentblock The block connected to the divergent frog end.
  • -plate The name of the switch plate for this switch.

Member Function Documentation

◆ _entering()

TB_Switch::_entering ( )
protected

Code to run when just entering the OS Sets the signal aspects and propagates signal state.

◆ _exiting()

TB_Switch::_exiting ( )
protected

Code to run when about to exit the OS.

◆ _gettruedirection()

TB_Switch::_gettruedirection ( option  )
private

A method to fake direction for frog facing switches.

Parameters
optionThis is always -direction.
Returns
Either forward or reverse.

◆ _settruedirection()

TB_Switch::_settruedirection ( option  ,
value   
)
private

A method to fake direction for frog facing switches.

Parameters
optionThis is always -direction.
valueEither forward or reverse.

◆ motor()

TB_Switch::motor ( route  )

The motor method sets the switch motor to align the points for the specificed route.

Parameters
routeThe desired route. A value of normal means align the points to the main (straight) route and a value of reverse means align the points to the divergent route.

◆ occupiedp()

TB_Switch::occupiedp ( )

The occupiedp method returns yes or no (true or false) indicating block occupation.

◆ pointstate()

TB_Switch::pointstate ( )

The pointstate method returns normal if the points are aligned to the main route and reverse if the points are aligned to the divergent route.

If the state cannot be determined, a value of unknown is returned.

Returns
Normal or reverse, indicating the point state.

◆ propagate()

TB_Switch::propagate ( aspect  ,
from  ,
  ... 
)

Method used to propagate distant signal states back down the line.

Parameters
aspectThe signal aspect that is being propagated.
fromThe propagating block.
...Options:
  • -direction The direction of the propagation.

◆ validate()

static TB_Switch::validate ( object  )
static

Type validating code Raises an error if object is not either the empty string or a TB_Switch type.

Member Data Documentation

◆ _pointsense

TB_Switch::_pointsense
staticprivate

Point sense bit values.

Definition at line 149 of file TB_Switch.tcl.

◆ _routes

TB_Switch::_routes
staticprivate

Route check validation object.

Definition at line 161 of file TB_Switch.tcl.

◆ acela

TB_Switch::acela
private

Acela object.

Definition at line 73 of file TB_Switch.tcl.

◆ forwardsignal

TB_Switch::forwardsignal
private

Signal object (typically a three color, one head block signal.

Definition at line 77 of file TB_Switch.tcl.

◆ isoccupied

TB_Switch::isoccupied
private

Saved occupation state.

Definition at line 85 of file TB_Switch.tcl.

◆ reversesignal

TB_Switch::reversesignal
private

Signal object (typically a three color, one head block signal.

Definition at line 81 of file TB_Switch.tcl.