我试图在Linux下读写CX9020 Benchoff Plc中的变量。我正在做与Pyad文档示例中相同的事情,但是我得到了错误。我在下面添加了定义和错误。谢谢你的帮助。
PLC定义代码:
TYPE sample_structure :
STRUCT
rVar : LREAL;
rVar2 : LREAL;
rVar3 : LREAL;
rVar4 : ARRAY [1..3] OF LREAL;
END_STRUCT
END_TYPE

Python代码:
import sys
import pyads
PLC_AMS_ID= '5.41.49.218.1.1'
SENDER_AMS = '192.168.0.5.1.1'
PLC_IP = '192.168.0.8'
PLC_USERNAME = 'Administrator'
PLC_PASSWORD = '1'
ROUTE_NAME = 'CX-682843'
HOSTNAME = '192.168.0.5' # or IP
vel_f,vel_b,vel_l,vel_r =0.0,0.0,0.0,0.0
sol_hiz,sag_hiz=0,0
vel_msg=0
pyads.set_local_address(SENDER_AMS)
pyads.add_route_to_plc(SENDER_AMS, HOSTNAME, PLC_IP, PLC_USERNAME, PLC_PASSWORD, route_name=ROUTE_NAME)
plc = pyads.Connection (PLC_AMS_ID, 851,PLC_IP)
plc.open ()
plc.write_by_name('GVL.sample_structure',[11.1, 22.2, 33.3, 44.4, 55.5, 66.6],pyads.PLCTYPE_LREAL * 6)
plc.read_by_name('GVL.sample_structure', pyads.PLCTYPE_LREAL * 6)错误信息:
2022-07-26T08:43:12+0300 Info: Connected to 192.168.0.8
Traceback (most recent call last):
File "sampleStruct.py", line 22, in <module>
plc.write_by_name('GVL.sample_structure',[11.1, 22.2, 33.3, 44.4, 55.5, 66.6],pyads.PLCTYPE_LREAL * 6)
File "/usr/local/lib/python3.6/dist-packages/pyads/ads.py", line 900, in write_by_name
self._port, self._adr, data_name, value, plc_datatype, handle=handle
File "/usr/local/lib/python3.6/dist-packages/pyads/pyads_ex.py", line 1018, in adsSyncWriteByNameEx
handle = adsGetHandle(port, address, data_name)
File "/usr/local/lib/python3.6/dist-packages/pyads/pyads_ex.py", line 777, in adsGetHandle
PLCTYPE_STRING,
File "/usr/local/lib/python3.6/dist-packages/pyads/pyads_ex.py", line 638, in adsSyncReadWriteReqEx2
raise ADSError(err_code)
pyads.pyads_ex.ADSError: ADSError: symbol not found (1808).
2022-07-26T08:43:12+0300 Info: connection closed by remote发布于 2022-11-29 18:45:02
您已经创建了结构,但还没有在GVL中完成实现。
您必须添加GVL:
VAR_GLOBAL
sample_structure : sample_structure;
END_VARhttps://stackoverflow.com/questions/73118844
复制相似问题