首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用python pyads模块读写PLC (beckhoff CX9020)中的变量

用python pyads模块读写PLC (beckhoff CX9020)中的变量
EN

Stack Overflow用户
提问于 2021-01-22 02:43:05
回答 1查看 328关注 0票数 0

我想在lunix (Debian9)下的虚拟机(VM)和可编程控制器(Beckhoff CX9020)之间实现一个具有ADS协议的通信网关,使用的是python pyads模块。我通过https://pyads.readthedocs.io/en/latest/quickstart.html下面的链接创建了这条路由,下面是我的代码:

代码语言:javascript
复制
import pyads

print ("=== set_local_address");
pyads.open_port ()
pyads.set_local_address ('1.2.3.4.1.1')
print (pyads.get_local_address ())
pyads.close_port ()

print ("=== add route");
pyads.open_port ()
pyads.add_route ('5.82.237.216.1.1', '192.168.0.20')
pyads.close_port ()

print ("=== add route to plc");
SENDER_AMS = '1.2.3.4.1.1'
PLC_IP = '192.168.0.20'
PLC_USERNAME = 'Administrator'
PLC_PASSWORD = 'x'
ROUTE_NAME = 'RouteToMyPC'
HOSTNAME = '192.168.0.15' # or IP
PLC_AMS_ID = '5.82.237.216.1.1'
pyads.add_route_to_plc (SENDER_AMS, HOSTNAME, PLC_IP, PLC_USERNAME, PLC_PASSWORD, route_name = ROUTE_NAME)

print ("=== init connection to plc");
plc = pyads.Connection (PLC_AMS_ID, 851, PLC_IP)

print ("=== open connection")
plc.open ()
print ('Connected')
v1 = plc.read_by_name ("MAIN.v1", pyads.PLCTYPE_INT)
print (v1)

我可以访问PLC,但不能读取或写入,我仍然收到错误消息

代码语言:javascript
复制
Connecting... 
2021-01-21117:17:59+0100 Info: Connected to 192.168.0.20 
Connected 
Traceback (most recent call last): 
   File "rw_pyads.py", tine 34, in <module> 
      value = plc.read by_name('MAIN.vr, pyads.PLCTYPE INT) 
   File "/usr/local/lib/python3.8/site-packages/pyads/ads.py", line 761, in read_by_name 
      return adsSyncReadByNameEx( 
   File "/usr/local/lib/python3.8/site-packages/pyads/pyads_ex.py", line 977, in adsSyncReadByNameEx
      handle = adsGetHandle(port, address, data name) 
   File "/usr/local/lib/python3.8/site-packages/pyads/pyads_ex.py", line 770, in adsGetHandle
      handle = adsSyncReadWriteReqEx2(
   File "/usr/local/lib/python3.8/site-packages/pyads/pyads_ex.py", line 638, in adsSyncReadWriteReqEx2
      raise ADSError(err code)
pyads.pyads ex.ADSError: ADSError: timeout elapsed (1861). 
2021-01-21117:18:04+0100 Info: connection closed by remote 

有没有人遇到过这个问题?谁能给我解释一下确切的问题是什么?我花了几天的时间,但没能解决问题谢谢!

EN

回答 1

Stack Overflow用户

发布于 2021-02-23 07:02:29

我有同样的问题,有一个python脚本与Twincat3共享变量,但在20分钟后连接下降关闭连接。

祝好运!贡萨洛

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65833844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档