diff --git a/modbus/client-serial-modbus.py b/modbus/client-serial-modbus.py index c7573eab..bf4f6b13 100644 --- a/modbus/client-serial-modbus.py +++ b/modbus/client-serial-modbus.py @@ -27,12 +27,12 @@ EXCEPT_MSGS = { def main(): parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter) - parser.add_argument('-modbus-unit', default=1, type=int, help='Номер устройства Modbus') - parser.add_argument('-serial-baud', default=115200, type=int, help='Скорость последовательного порта, бод') - parser.add_argument('-serial-port', default=DEF_SERIAL, type=str, help='Последовательный порт для подключения к Modbus серверу') - parser.add_argument('-udp-addr', default='localhost', type=str, help='Адрес для отправки сообщений приложению') - parser.add_argument('-udp-port-rx', default=44100, type=int, help='Порт для приёма сообщений от приложения') - parser.add_argument('-udp-port-tx', default=48000, type=int, help='Порт для отправки сообщений приложению') + parser.add_argument('--modbus-unit', default=1, type=int, help='Номер устройства Modbus') + parser.add_argument('--serial-baud', default=115200, type=int, help='Скорость последовательного порта, бод') + parser.add_argument('--serial-port', default=DEF_SERIAL, type=str, help='Последовательный порт для подключения к Modbus серверу') + parser.add_argument('--udp-addr', default='localhost', type=str, help='Адрес для отправки сообщений приложению') + parser.add_argument('--udp-port-rx', default=44100, type=int, help='Порт для приёма сообщений от приложения') + parser.add_argument('--udp-port-tx', default=48000, type=int, help='Порт для отправки сообщений приложению') opts, opts_unk = parser.parse_known_args() print_opts_error(opts_unk) run_sync_client(opts.udp_addr, opts.udp_port_rx, opts.udp_port_tx, opts.serial_port, opts.serial_baud, opts.modbus_unit) @@ -41,7 +41,7 @@ def main(): def run_sync_client(udp_addr, udp_port_rx, udp_port_tx, serial_port, serial_baud, unit_num): sock = socket(AF_INET, SOCK_DGRAM) sock.bind((udp_addr, udp_port_rx)) - log.debug(f'привязан к адресу {udp_addr}:{udp_port_rx}') + log.info('привязан к адресу %s:%d' % (udp_addr, udp_port_rx)) json_decoder = json.JSONDecoder() json_encoder = json.JSONEncoder() @@ -50,7 +50,7 @@ def run_sync_client(udp_addr, udp_port_rx, udp_port_tx, serial_port, serial_baud while not client.connect(): # Ждать подключения к серверу time.sleep(3) - log.debug(f'подключен к серверу через {serial_port} на скорости {serial_baud} бод') + log.info('подключен к серверу через \"%s\" на скорости %d бод' % (serial_port, serial_baud)) while True: udp_data = sock.recv(2048) # Ждать команду от приложения @@ -91,14 +91,14 @@ def run_sync_client(udp_addr, udp_port_rx, udp_port_tx, serial_port, serial_baud rc_msg = EXCEPT_MSGS[code] tx_data = json_encoder.encode({'code': 'exception', 'data': rc_msg}) sock.sendto(bytes(tx_data), (udp_addr, udp_port_tx)) - log.debug( + log.error( 'ошибка при выполнении команды: \"%s\". данные: \"%s\", порт: \"%s\", скорость: %s' - % (code, data, serial_port, serial_baud)) + % (code, data, serial_port, serial_baud)) def print_opts_error(opts: list) -> None: for opt in opts: - log.debug('внимание: неизвестный аргумент: \"%s\"\n' % opt) + log.warning('внимание: неизвестный аргумент: \"%s\"' % opt) if __name__ == '__main__': diff --git a/modbus/server-serial-modbus.py b/modbus/server-serial-modbus.py index 0acee8ca..a7fbc524 100644 --- a/modbus/server-serial-modbus.py +++ b/modbus/server-serial-modbus.py @@ -37,7 +37,7 @@ class CallbackModbusSlaveContext(ModbusSlaveContext): """ super(CallbackModbusSlaveContext, self).setValues(fx, address, values) fx = FX_CODES[fx] if fx in FX_CODES else '**error**' - log.debug(f'setValues() fx:{fx} address:{address} values:{values}') + log.debug('setValues() fx:%s address:%s values:%s' % (fx, address, values)) def getValues(self, fx, address, count=1): """ Устанавливает требуемые значения хранилища данных. @@ -47,24 +47,21 @@ class CallbackModbusSlaveContext(ModbusSlaveContext): """ values = super(CallbackModbusSlaveContext, self).getValues(fx, address, count) fx = FX_CODES[fx] if fx in FX_CODES else '**error**' - log.debug(f'getValues() fx:{fx} address:{address} values:{values}') + log.debug('getValues() fx:%s address:%s values:%s' % (fx, address, values)) return values def main(): parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter) - parser.add_argument('-serial-baud', default=115200, type=int, help='Скорость последовательного порта, бод') - parser.add_argument('-serial-port', default=DEF_SERIAL, type=str, help='Последовательный порт для подключения клиента Modbus ') + parser.add_argument('--serial-baud', default=115200, type=int, help='Скорость последовательного порта, бод') + parser.add_argument('--serial-port', default=DEF_SERIAL, type=str, help='Последовательный порт для подключения клиента') + parser.add_argument('--timeout', default=0.005, type=str, help='Таймаут последовательного порта') opts, opts_unk = parser.parse_known_args() print_opts_error(opts_unk) - run_server(opts.serial_port, opts.serial_baud) - - -def run_server(serial_port, serial_baud): store = CallbackModbusSlaveContext() context = ModbusServerContext(slaves=store, single=True) - # timeout=.005 - нужно обязательно указать, иначе не работает - StartSerialServer(context=context, framer=ModbusRtuFramer, port=serial_port, timeout=.005, baudrate=serial_baud) + log.info("серевер-заглушка Modbus serial работает: %s:%d" % (opts.serial_port, opts.serial_baud)) + StartSerialServer(context=context, framer=ModbusRtuFramer, port=opts.serial_port, timeout=opts.timeout, baudrate=opts.serial_baud) def print_opts_error(opts: list) -> None: