ModBusTCP服务器在目标设备启动即关闭,请求技术排查帮助
问题:ModBusTCP服务器部署到目标设备后启动即关闭
我编写了一个测试ModBusTCP数据传输的简易服务器程序,在IP为192.168.43.102的个人电脑上测试正常,但部署到IP为192.168.43.103的设备后,服务器启动后立即关闭,无法排查原因,恳请帮助。
目标设备上运行的代码
from pyModbusTCP.server import ModbusServer from time import sleep # Create an instance of ModbusServer server = ModbusServer("192.168.43.103", 502, no_block=True) try: print("Start server...") server.start() print("Server is online") state = [0, 0] while True: # Read input from user reg0 = int(input("Enter value for Register 0: ")) reg1 = int(input("Enter value for Register 1: ")) # Write to DataBank server.data_bank.set_holding_registers(0, [reg0]) server.data_bank.set_holding_registers(1, [reg1]) # Check if state has changed if state != server.data_bank.get_holding_registers(1): state = server.data_bank.get_holding_registers(1) print("Value of Register 1 has changed to " + str(state[0])) sleep(0.5) except: print("Shutdown server...") server.stop() print("Server is offline")
运行截图

排查建议
- 验证目标设备的绑定IP:用
ifconfig(Linux)或ipconfig(Windows)查看设备实际网卡IP,确认192.168.43.103是当前设备的有效IP,避免绑定不存在的网卡地址导致启动失败。 - 检查端口权限:502属于1024以下的系统端口,部分系统非root/管理员用户无法直接使用。尝试以管理员/root权限运行程序,或临时修改端口为1024以上(如5020)测试。
- 捕获具体异常信息:当前代码的
except块未明确捕获异常,无法得知崩溃原因。修改代码打印异常详情:except Exception as e: print(f"错误详情: {str(e)}") print("Shutdown server...") server.stop() print("Server is offline") - 同步pyModbusTCP版本:确认目标设备与测试电脑的pyModbusTCP版本一致,不同版本可能存在兼容性问题,可执行
pip install pyModbusTCP --upgrade同步版本。 - 测试无交互运行:如果目标设备是无桌面的嵌入式设备/服务器,
input()函数会因无标准输入直接触发异常退出。可注释掉用户输入代码,改用自动生成测试值验证服务器是否能正常运行:# 替换原while循环内容 while True: reg0 = int(time.time() % 100) reg1 = int(time.time() % 200) server.data_bank.set_holding_registers(0, [reg0]) server.data_bank.set_holding_registers(1, [reg1]) if state != server.data_bank.get_holding_registers(1): state = server.data_bank.get_holding_registers(1) print("Value of Register 1 has changed to " + str(state[0])) sleep(0.5)
内容的提问来源于stack exchange,提问作者ᅠWOlF
相关产品推荐
相关产品推荐

