Based on http://sourceforge.net/projects/jamod/ and http://sourceforge.net/projects/j2mod/ this adapter allows to connect to modbus tcp sources.
Options
- slave: The address of the server to connect to
- port: The port where the service is found
- ref: the position to start
- count: the number of bytes to read
- function_code: The function to use: 2 = READ_INPUT_DISCRETES, 3= READ_MULTIPLE_REGISTERS, 4= READ_INPUT_REGISTERS;
- unitid (integer): The id of the unit to use.
- If the source needs to be initialized:
write_function_code: The init function to be used: 5 = WRITE_COIL, 15 = WRITE_MULTIPLE_COILS, 16 = WRITE_MULTIPLE_REGISTERS
write_ref: The write position to start.
Depending on the function code, different values are needed
- WRITE_COIL: a boolean e.g. ['write_boolean','true']
WRITE_MULTIPLE_COILS: a bitvector e.g. ['write_bitvector','10101']
WRITE_MULTIPLE_REGISTERS: a comma separated list e.g.: ['write_registers','100,23435,3453,452']
Depending on the function code, this operator needs different schemas in output:
READ_INPUT_DISCRETES: Return a tuple with a BitVector attribute. (TODO: describe MEP-Functions: toLong, [], and subset, BitSet is interpreted from left to right)
READ_MULTIPLE_REGISTERS:Returns a tuple with a List<Integer> attribute.
READ_INPUT_REGISTERS: Returns a tuple with a List<Integer> attribute.
Code Block | ||
---|---|---|
| ||
#PARSER PQL
#RUNQUERY
modbussource := RETRIEVE({
transport = 'modbustcp',
source = 'modbussource',
datahandler = 'tuple',
protocol = 'none',
schema = [['value', 'BitVector']], // or [['value',List<Integer>]]
options = [
['slave','localhost'],
['port','502'],
['ref','0'],
['count','4'],
['scheduler.delay','1000']
]
}
)
#PARSER PQL
#RUNQUERY
out1 = MAP({
expressions = [
'toLong(value)',
'toLong(subset(value,0,1))',
'value [0]',
'value [1]',
'value [2]',
'value [3]',
'value [4]',
'value [5]',
'value [6]',
'value [7]'
]
},
modbussource
) |
READ_MULTIPLE_REGISTERS