You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python通过MOXA Nport 5150使用Modbus时COM端口权限拒绝及无法访问问题求助

Python通过MOXA Nport 5150使用Modbus时COM端口权限拒绝及无法访问问题求助

大家好,我最近遇到了一个特别棘手的问题,想请各位帮忙分析解决:

我正在用pymodbus库通过Modbus协议采集数据,硬件搭配的是MOXA Nport 5150 RS485转以太网转换器,在Windows Server 2022系统下使用Real COM Mode。但运行过程中,某个特定的COM端口会不定期出现数据采集中断的情况,抛出PermissionError(13, 'Access is denied.')错误,之后又会自行恢复采集。我试了各种办法都没能彻底解决,目前用的Python版本是3.13.0。

我已经尝试过以下几种方案,但都没有效果:

  • 捕获权限错误或串口异常后重启Python脚本,使用的代码如下:
def restart_program():
    print(" Restarting program ")
    python = r"C:\Program Files\Python313\python.exe"
    subprocess.run([python] + sys.argv)
    sys.exit()

但重启时会抛出“Port is not accessible”的错误,没法正常恢复采集。

  • 在开始采集数据前检查端口是否已打开,代码逻辑如下:
port = serial.Serial(port_name,9600,timeout = 1)
if (port.isOpen() == True):
    # data fetch code 
  • 安装了Windows Process Explorer,排查是否有其他进程占用该COM端口,但没找到任何相关进程。

  • 尝试在CMD中执行mode COM16命令,发现该端口此时无法访问。

现在我实在找不到解决思路了,有没有遇到过类似问题的朋友能给我一些建议或解决方案?

备注:内容来源于stack exchange,提问作者Nikhil B

火山引擎 最新活动