Соединение между ПЛК Beckhoff и Linux с помощью PyADSPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Соединение между ПЛК Beckhoff и Linux с помощью PyADS

Сообщение Anonymous »

Я хотел бы подключить свой Beckhoff CX5230 (Win10) к ПК с Linux через PyADS. Тема, которая обсуждалась здесь несколько раз, но пока ни одно решение мне не помогло.
Маршрутизация ПЛК Beckhoff в Linux
Соединение Pyads отклонено с Beckhoff под управлением Twincat 3
чтение и запись переменных в ПЛК (beckhoff CX9020) с помощью модуля Python pyads
Сначала я создал маршрут на ПЛК из моего Linux:
import pyads

SENDER_AMS = '5.97.120.143.1.1'
PLC_IP = '192.168.0.1'
PLC_USERNAME = 'Administrator'
PLC_PASSWORD = '1'
ROUTE_NAME = 'RouteToPC'
HOSTNAME = '192.168.0.1'

pyads.open_port()
pyads.set_local_address(SENDER_AMS)
pyads.add_route_to_plc(SENDER_AMS, HOSTNAME, PLC_IP, PLC_USERNAME, PLC_PASSWORD, route_name=ROUTE_NAME)
pyads.close_port()

Пока это работает достаточно хорошо. Я подключил монитор к Beckhoff и увидел, что был создан новый маршрут.
Мне также удалось установить ping от ПЛК к ПК и с ПК на ПЛК. Поэтому я предполагаю, что IP-адреса верны и соединение установлено.
Далее я пытаюсь установить маршрут от моего ПК к ПЛК:
import pyads

TARGET_AMS_ID = '5.97.120.143.1.1'
PLC_IP = '192.168.0.1'

plc = pyads.Connection(TARGET_AMS_ID, pyads.PORT_TC3PLC1, PLC_IP)
plc.open()
print(f"Connected?: {plc.is_open}")
print(f"Local Address? : {plc.get_local_address()}")
print(plc.read_state())

При запуске сценария возникает следующая ошибка:
2024-06-12T17:28:09+0000 Info: Connected to 192.168.0.1
Connected?: True
Local Address? :
Traceback (most recent call last):
File "pyads_test.py", line 24, in
print(plc.read_state())
File "/home/builder/.local/lib/python3.7/site-packages/pyads/connection.py", line 237, in read_state
return adsSyncReadStateReqEx(self._port, self._adr)
File "/home/builder/.local/lib/python3.7/site-packages/pyads/pyads_ex.py", line 510, in adsSyncReadStateReqEx
raise ADSError(error_code)
pyads.pyads_ex.ADSError: ADSError: timeout elapsed (1861).
2024-06-12T17:28:14+0000 Info: connection closed by remote

Я также попробовал эти инструкции здесь и создал маршрут вручную:
https://github.com/stlehmann/pyads/issu ... -956370290
По-прежнему появляется ошибка «Соединение закрыто удаленно»:
pyads.open_port()
CLIENT_AMS_NET_ID = "192.168.0.253.1.1"
pyads.set_local_address(CLIENT_AMS_NET_ID)
pyads.close_port()
TARGET_AMS_ID = "5.97.120.143.1.1"
TARGET_PC_ID = "192.168.0.1"

plc = pyads.Connection(TARGET_AMS_ID, pyads.PORT_TC3PLC1, TARGET_PC_ID)
plc.open()
plc.write_by_name("GVL.P1", True)
exit()

builder@user:~$ python3 pyads_test.py
2024-06-18T08:49:10+0000 Info: Connected to 192.168.0.1
2024-06-18T08:49:10+0000 Info: connection closed by remote


Подробнее здесь: https://stackoverflow.com/questions/786 ... with-pyads
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»