Model Railroad System  2.2.1
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
C4TSR4_Block Class Reference

Block occupation detection using Circuits4Tracks Quad Occupancy Detectors and Azatrax SR4s. More...

Public Member Functions

 C4TSR4_Block (name,...)
 Constructor: initialize the block object. More...
 
 occupiedp ()
 The occupiedp method returns yes or no (true or false) indicating block occupation. 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 C4TSR4_Block type. More...
 

Private Member Functions

 _entering ()
 Method for entering a block. More...
 
 _exiting ()
 Method for exiting a block. More...
 

Private Attributes

 sensor
 SR4 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 sensemap
 Sensor bit mapping to sensor functions. More...
 

Detailed Description

Block occupation detection using Circuits4Tracks Quad Occupancy Detectors and Azatrax SR4s.

Above is a simple diagram for using Circuits4Tracks Quad Occupancy Detectors for block occupation detection. A Circuits4Tracks Quad Occupancy board has four current sensors. One wires one side of the track power (either DCC or DC) to a common rail and the other side through the Circuits4Tracks Quad Occupancy Detector to rails isolated with gaps (possibly with insulating rail joiners). This code uses Azatrax SR4s to connect a Circuits4Tracks Quad Occupancy Detectors to the computer via USB. A small circuit board with two ASSR-4128s (dual Solid State Relays) and four 1,000 Ohm resistors and some headers connects the Circuits4Tracks board to the SR4.

Typical usage:

Four blocks in a loop:

SR4 quadsense1 -this [Azatrax_OpenDevice 0400001234 $::Azatrax_idSR4Product]
C4TSR4_Block block1 -sensorobj quadsense1 -bit 0 -signalobj signal1
C4TSR4_Block block2 -sensorobj quadsense1 -bit 1 -signalobj signal2 -previousblock block1
C4TSR4_Block block3 -sensorobj quadsense1 -bit 2 -signalobj signal3 -previousblock block2
C4TSR4_Block block4 -sensorobj quadsense1 -bit 3 -signalobj signal4 -previousblock block3
block1 configure -previousblock block4

A Schematic of the layout would look like this:

For the track work elements use "blockN occupiedp" for the track work elements' occupied command: eg Block1 would have 'block1 occupiedp' as its occupied command, that is its edit window would look like:

The other three blocks would be similar.

Then in the Main Loop, you would have:

while {true} {
MainWindow ctcpanel invoke Block1
MainWindow ctcpanel invoke Block2
MainWindow ctcpanel invoke Block3
MainWindow ctcpanel invoke Block4
update;# Update display
}
Author
Robert Heller <heller@deepsoft.com>

Definition at line 59 of file C4TSR4_Block.tcl.

Constructor & Destructor Documentation

◆ C4TSR4_Block()

C4TSR4_Block::C4TSR4_Block ( name  ,
  ... 
)

Constructor: initialize the block object.

Create a lowlevel sensor object and install it as a component. Install the blocks signal (created elsewhere).

Parameters
nameName of the block object
...Options:
  • -sensorobj This is the SR4 for this (and up to three other blocks). This option is read-only and must be set at creation time.
  • -bit This defines the input bit on the SR4 for this block as an integer from 0 to 3, inclusive. This option is read-only and can only be set at creation time. The default is 0.
  • -forwardsignalobj This block's forward signal. This option is read-only and can only be set at creation time. The default is the empty string.
  • -reversesignalobj This block's reverse signal. This option is read-only and can only be set at creation time. The default is the empty string.
  • -previousblock Previous block (next block in reverse) – used for 'propagating' signal aspects and must be a C4TSR4_Block type object. The default is the empty string.
  • -nextblock Next block (previous block in reverse) – used for 'propagating' signal aspects and must be a C4TSR4_Block type object.
    The default is the empty string.
  • -direction Current running direction, either the word forward or reverse. The default is forward.

Member Function Documentation

◆ _entering()

C4TSR4_Block::_entering ( )
private

Method for entering a block.

◆ _exiting()

C4TSR4_Block::_exiting ( )
private

Method for exiting a block.

◆ occupiedp()

C4TSR4_Block::occupiedp ( )

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

◆ propagate()

C4TSR4_Block::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 (not used).
...Options:
  • -direction The direction of the propagation.

◆ validate()

static C4TSR4_Block::validate ( object  )
static

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

Member Data Documentation

◆ forwardsignal

C4TSR4_Block::forwardsignal
private

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

Definition at line 81 of file C4TSR4_Block.tcl.

◆ isoccupied

C4TSR4_Block::isoccupied
private

Saved occupation state.

Definition at line 89 of file C4TSR4_Block.tcl.

◆ reversesignal

C4TSR4_Block::reversesignal
private

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

Definition at line 85 of file C4TSR4_Block.tcl.

◆ sensemap

C4TSR4_Block::sensemap
staticprivate

Sensor bit mapping to sensor functions.

Definition at line 93 of file C4TSR4_Block.tcl.

◆ sensor

C4TSR4_Block::sensor
private

SR4 object.

Definition at line 77 of file C4TSR4_Block.tcl.

C4TSR4_Block
Block occupation detection using Circuits4Tracks Quad Occupancy Detectors and Azatrax SR4s.
Definition: C4TSR4_Block.tcl:59