This example shows how to replace any physical input signal with a software controlled signal.
Technical background
In the Pally program we use variables to define IO channels in a generic way. The address of every IO channel is defined by a special variable, which is an array. The 0th element of the array is always the IO type (standard IO, configurable IO, tool IO, MODBUS, etc.) and the 1st element is the actual IO channel number.
Example values:
[0, 5] means standard digital signal nr. 5
[1, 6] means configurable digital signal nr. 6
[10, 5] means standard digital signal nr. 5 with inverted logic
etc.
For this article, the following special IO types are relevant:
-11: always returns True (no real physical IO channel being accessed)
-1: always returns False (no real physical IO channel being accessed)
If you want to provide mock signals for the Pally program from another thread, set the data source of the corresponding IO channel type (element 0 of the array) to either -1 or -11 in runtime.
The name of the relevant IO channel variables:
rf_in_1_product1
: first product sensor on the primary conveyorrf_in_1_product2
: second product sensor on the primary conveyorrf_in_2_product1
: first product sensor on the secondary conveyorrf_in_2_product2
: second product sensor on the secondary conveyorrf_in_overflow1
: priority sensor on the first conveyorrf_in_overflow2
: priority sensor on the second conveyorrf_in_button_P1
: right pallet confirmation signalrf_in_button_P2
: left pallet confirmation signal
Example: simulate the operator has pushed the Right pallet confirmation button:
rf_in_button_P1[0] = -11 # simulate user pushed the button
sleep(0.5)
rf_in_button_P1[0] = -1 # simulate user released the button
This will detach the program from the physical IO channel and evaluate as True and False.