diff --git a/modbus/client-serial-modbus.py b/modbus/client-serial-modbus.py index 293fda6..8ae44f5 100644 --- a/modbus/client-serial-modbus.py +++ b/modbus/client-serial-modbus.py @@ -83,21 +83,21 @@ def run_sync_client(udp_addr, udp_port_rx, udp_port_tx, serial_port, serial_baud rq = client.write_registers(data[0], data[1:], unit=unit_num) rc = rq.isError() if not rc: - tx_data = json_encoder.encode({'code': 'response', 'data': ''}) + tx_data = json_encoder.encode({'code': 'resp_write', 'data': ''}) sock.sendto(bytes(tx_data, 'utf-8'), (udp_addr, udp_port_tx)) elif message['code'] == 'read_holding': data = message['data'] rq = client.read_holding_registers(data[0], data[1], unit=unit_num) rc = rq.isError() if not rc: - tx_data = json_encoder.encode({'code': 'response', 'data': [data[0]] + rq.registers}) + tx_data = json_encoder.encode({'code': 'resp_holding', 'data': [data[0]] + rq.registers}) sock.sendto(bytes(tx_data, 'utf-8'), (udp_addr, udp_port_tx)) elif message['code'] == 'read_input': data = message['data'] rq = client.read_input_registers(data[0], data[1], unit=unit_num) rc = rq.isError() if not rc: - tx_data = json_encoder.encode({'code': 'response', 'data': [data[0]] + rq.registers}) + tx_data = json_encoder.encode({'code': 'resp_input', 'data': [data[0]] + rq.registers}) sock.sendto(bytes(tx_data, 'utf-8'), (udp_addr, udp_port_tx)) elif message['code'] == '': rc = False diff --git a/modbus/server-serial-modbus.py b/modbus/server-serial-modbus.py index 6333b93..6c1b0c1 100644 --- a/modbus/server-serial-modbus.py +++ b/modbus/server-serial-modbus.py @@ -55,24 +55,24 @@ def on_rcv(*args): if message['code'] == 'write': data = message['data'] store.setValues(3, data[0], data[1:]) - tx_data = json_encoder.encode({'code': 'response', 'data': ''}) + tx_data = json_encoder.encode({'code': 'resp_write', 'data': ''}) sock.sendto(bytes(tx_data, 'utf-8'), dst_addr) elif message['code'] == 'write_input': data = message['data'] store.setValues(4, data[0], data[1:]) - tx_data = json_encoder.encode({'code': 'response', 'data': ''}) + tx_data = json_encoder.encode({'code': 'resp_write', 'data': ''}) sock.sendto(bytes(tx_data, 'utf-8'), dst_addr) elif message['code'] == 'read_holding': data = message['data'] read_data = store.getValues(3, data[0], data[1]) read_data.insert(0, data[0]) - tx_data = json_encoder.encode({'code': 'response', 'data': read_data}) + tx_data = json_encoder.encode({'code': 'resp_holding', 'data': read_data}) sock.sendto(bytes(tx_data, 'utf-8'), dst_addr) elif message['code'] == 'read_input': data = message['data'] read_data = store.getValues(4, data[0], data[1]) read_data.insert(0, data[0]) - tx_data = json_encoder.encode({'code': 'response', 'data': read_data}) + tx_data = json_encoder.encode({'code': 'resp_input', 'data': read_data}) sock.sendto(bytes(tx_data, 'utf-8'), dst_addr) @@ -120,7 +120,7 @@ def main(): print_opts_error(opts_unk) store = CallbackModbusSlaveContext() context = ModbusServerContext(slaves=store, single=True) - log.info("серевер-заглушка Modbus serial работает: %s:%d" % (opts.serial_port, opts.serial_baud)) + log.info('серевер-заглушка Modbus serial работает: %s:%d' % (opts.serial_port, opts.serial_baud)) t = Thread(target=on_rcv, args=[store], daemon=True) t.start() StartSerialServer(context=context, framer=ModbusRtuFramer, port=opts.serial_port, timeout=opts.timeout, baudrate=opts.serial_baud) diff --git a/scripts/sch3.gd b/scripts/sch3.gd index 817d948..8b8c90b 100644 --- a/scripts/sch3.gd +++ b/scripts/sch3.gd @@ -19,9 +19,11 @@ class Sch3 extends unit.Unit: var tick_tx: = 0 ## Время отправки крайнего сообщения. static var json_conv: = JSON.new() - signal responce_received(addr: int, data: Array) ## Вызывается при получении сообщения c данными из регистров хранения. - signal info_received(msg: String) ## Вызывается при получении информационного сообщения. - signal except_received(msg: String) ## Вызывается при получении сообщения об исключительной ситуации. + signal resp_input(addr: int, data: Array) ## Вызывается при получении сообщения c данными из регистров входов. + signal resp_holding(addr: int, data: Array) ## Вызывается при получении сообщения c данными из регистров хранения. + signal resp_write() ## Вызывается при получении подтверждения, что команда записи выполнена + signal info_received(msg: String) ## Вызывается при получении информационного сообщения. + signal except_received(msg: String) ## Вызывается при получении сообщения об исключительной ситуации. func _init(nm: String, u: int = 1): unit = u @@ -62,11 +64,12 @@ class Sch3 extends unit.Unit: var message_code = message['code'] var message_data = message['data'] match message_code: - 'response': + 'resp_holding', 'resp_input': var addr = message_data[0] var regs = message_data.slice(1) - emit_signal('responce_received', addr, regs) - rc = true + emit_signal(message_code, addr, regs) + 'resp_write': + emit_signal(message_code) 'info': var msg = message['data'] emit_signal('info_received', msg)