Je veux concevoir une passerelle de communication, entre une machine virtuelle (VM) sous linux (Debian9) et le PLC (Beckhoff CX9020), en utilisant le module pyads de python.
Je me suis appuyé sur les deux liens ci-dessous
https://pyads.readthedocs.io/en/latest/quickstart.html
Voici mon code Python
J'arrive à accéder au PLC, mais je n'arrive pas no écrire ni à lire. EN bas le message d'erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 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)
Est-ce-que quelqu'un a déjà fait ça ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 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
Partager