Provide digital inputs and outputs.
Module RB8506, SIFU variant, is a digital input-output interface. It has four level-sensitive inputs, four negative-edge-sensitive inputs, four level outputs and four outputs that can be pulsed as a group.
There is also a provision to check if any of both the negative-edge-sensitive inputs and the level-sensitive inputs have changed state since it was last checked.
Inputs and outputs are available in TTL and in CMOS: TTL or CMOS can be selected with a switch on the front, two inputs or two outputs at the time. A LED indicates if TLL (red) or CMOS (green) is selected.
The SIFU module consists of a PIA parallel interface (see RB8506 Parallel Interface) and a Sense Interrupt Flag Unit (SIFU) board.
The module's front-panel looks as follows.
+-------------------------------------------------+ | I/O CONTROLLER BOX | | Input | | 5 puls 4 1 level 0 | | C A | | (O) (X) (O) (O) (X) (O) | | M | | O o o o o o o o o | | N 7 6 3 2 | | O D B | | C (O) (X) (O) (O) (X) (O) | | H | | R H G F E D C B A CMOS | | O % % % % % % % % | | M TTL | | A | | T (O) (X) (O) (O) (X) (O) | | O G E | | R 5 4 1 0 | | o o o o o o o o | | C 7 6 3 2 | | A | | B (O) (X) (O) (O) (X) (O) | | L H F | | E 7 puls 6 3 level 2 | | Output | | | | RULBUS | +-------------------------------------------------+ (O) BNC connector · (X) red-green LED · o mini plug · % switch
The table below indicates which lines are pulse or level inputs-ouputs.
line | kind of input-output
------+----------------------
0 | ]
1 | ] level
2 | ]
3 | ]
|
4 | ]
5 | ] negative pulse
6 | ] note 1
7 | ]
Note 1: contrary to what the hardware documentation states, I think that the pulse inputs are sensitive to a high-low transition.
The RB8506 SIFU module has no properties that are configured at production time.
rb8506_sifu "name"
{
address = 0x94
}
When the Rulbus configuration file is read, the SIFU is initialized as follows:
There are functions to read all inputs at a time or to read each input line individually. Further there are functions to check if any line has changed since the last time it was checked. Ouputs may be read or written all at once or each output may be read or written individually. Four pulse outputs can be pulsed at one time.
int32 handle; int32 flag; rb8506_sifu_open( &handle, "sifu" ); rb8506_sifu_isChangedInputLine( handle, &flag ); if ( flag ) { int32 data; rb8506_sifu_getInputPortData ( handle, &data ); rb8506_sifu_setOutputPortData( handle, data ); } rb8506_sifu_close( handle );
Open and close | |
| EXPORT int32 RDL_API | rb8506_sifu_open (int32 *pHandle, CCstr name) |
| open a sifu. | |
| EXPORT int32 RDL_API | rb8506_sifu_close (int32 handle) |
| close a sifu. | |
Data input | |
| EXPORT int32 RDL_API | rb8506_sifu_getInputPortData (int32 handle, int32 *pData) |
| get the input port data; also clears input flip-flops. | |
| EXPORT int32 RDL_API | rb8506_sifu_isChangedInputLine (int32 handle, int32 *pFlag) |
| true if the level of one or more input lines have changed; clears input-has-changed flag; see also rb8506_sifu_tstInputLineLevel(). | |
| EXPORT int32 RDL_API | rb8506_sifu_tstInputLineLevel (int32 handle, int32 line, int32 *pLevel) |
| get the level of the specified input line; clears input-has-changed flag, retains state of input flip-flops; see also rb8506_sifu_isChangedInputLine(). | |
| EXPORT int32 RDL_API | rb8506_sifu_getInputLineLevel (int32 handle, int32 line, int32 *pLevel) |
| get the level of the specified input line; clears input flip-flops. | |
Data ouput | |
| EXPORT int32 RDL_API | rb8506_sifu_getOutputPortData (int32 handle, int32 *pData) |
| get the output port data. | |
| EXPORT int32 RDL_API | rb8506_sifu_setOutputPortData (int32 handle, int32 data) |
| set the output port data. | |
| EXPORT int32 RDL_API | rb8506_sifu_getOutputLineLevel (int32 handle, int32 line, int32 *pLevel) |
| get the line level of the specified output line. | |
| EXPORT int32 RDL_API | rb8506_sifu_setOutputLineLevel (int32 handle, int32 line, int32 level) |
| set or clear specified output line. | |
Pulse control | |
| EXPORT int32 RDL_API | rb8506_sifu_isEnabledPulseOutputs (int32 handle, int32 *pFlag) |
| true if the pulse outputs are enabled. | |
| EXPORT int32 RDL_API | rb8506_sifu_enablePulseOutputs (int32 handle, int32 flag) |
| enable or disable pulse outputs. | |