Мне интересно, если для простого общения с PLC, такого как чтение и запись тегов, нужны ли мне другие тяжелые действия, которые идут с OPC-UA сервером?

Я пытался написать простой сервер в Python, который общается с ПЛК, но мне отказывают в запросе информации у PLC.

ПЛК Controllogix, с которым я пытаюсь установить связь, использует Ethernet/IP для связи, так почему не работает простой сценарий сервер / клиент? Что именно нужно для общения с Алленом Брэдли PLC или PLC's в целом?

2
jameson1128 1 Сен 2017 в 04:55

6 ответов

Лучший ответ

Для связи с ПЛК требуется совсем немного.

У каждого поставщика есть драйвер, есть соображения совместимости прошивки. Разные протоколы для размышлений.

OPC-UA делает его немного более общим, но OPC-UA все еще имеет ряд вещей, которые нужно обойти при настройке связи.

Большинству продуктов OPC, с которыми я работал, необходимо настроить безопасность, чтобы разрешить анонимное общение. Обычно это плохая практика. (Сетевое вторжение сможет читать / записывать на ваш уровень автоматизации). Существует подпись сертификата и некоторые операции шифрования, которые необходимо отключить, если вы ищете простую связь. (Опять же, не очень хорошая практика, но хорошо для обучения)

После всего этого вам нужно иметь представление о том, как ваш ПЛК настроен на вашем сервере OPC, есть каналы, устройства, пространства имен и т. Д. Вы указываете клиенту OPC на некоторый opc.tcp: //:

Если вы зашли так далеко, вы почти закончили, я предполагаю, что ваш сервер OPC работает и на этом этапе настроены теги. Вы можете использовать API OPC-UA для чтения. Он может вернуть только значение, или вы можете получить объект обратно с тегом health, timestamp и кучей других данных. Зависит от реализации. После этого вы можете делать подписки, писать ... все, что вам нужно.

TLDR: OPC-сервер не требуется, но может быть самым простым способом. Отключить безопасность (Но включите его снова, прежде чем выставить свой контрольный слой в сеть)

4
Bmo 1 Сен 2017 в 02:20

Чтобы иметь возможность читать и записывать OPC-теги на платформу ControlLogix, необходимо использовать драйвер RSLinx. RSLinx действует как OPC-сервер, его необходимо настроить для связи с ПЛК и запуска на сетевом ПК в той же локальной сети. Доступно несколько разновидностей RSLinx (также для WAN / VLAN), но по сути это драйвер связи, с которым вам нужно общаться с ПЛК AB.

0
Supertiny808 16 Окт 2017 в 13:16

Я немного опоздал к этому обсуждению, но есть пара коммерческих инструментов, которые делают это немного легче. Когда вы говорите, что используете python, мне приходит в голову центр данных Cogent. Это, конечно, не самый дешевый инструмент, но он уже проделал всю тяжелую работу для связи и безопасности ПЛК / ПК.

0
Bill J. 7 Сен 2017 в 15:24

Зависит от нескольких факторов: если вы хотите запрограммировать что-то простое, вы можете выбрать Modbus / TCP. Я думаю, что некоторые ПЛК AB поддерживают это без дополнительного оборудования.

Однако если вы хотите что-то с большей безопасностью, например, для промышленного использования, тогда OPC UA будет лучшим выбором, но сложность программирования намного выше, чем у Modbus, даже с использованием библиотек OPC Foundation или других. Существует возможность использовать коммерческий или бесплатный (если есть) сервер OPC UA для сохранения работы, тогда вам нужно будет только программировать на стороне клиента.

С Ethernet / IP это также должно быть возможно, но проблема в том, что нет четкой спецификации, и даже разные модели AB говорят на разных диалектах Ethernet / IP! , это также гораздо сложнее программировать, чем Modbus.

1
Lluis Felisart 1 Сен 2017 в 13:28

Я тоже немного опоздал на этот разговор. Если вы заинтересованы в написании собственных решений и не хотите использовать какой-либо коммерчески доступный стандарт, AdvancedHMI - это «в основном» решение с открытым исходным кодом, написанное на VB.NET, которое на 100% бесплатно и обеспечивает связь со многими различными ПЛК, включая Платформа ControlLogix. Поскольку я вижу, что вы программируете на Python, вам также может быть интересно узнать, что проект работает под Mono на ОС Linux. Я использовал его для записи шлюзов между EthernetIP и ModbusTCP, а также для последовательного извлечения данных с OEM-устройств и передачи этих данных в ПЛК CLX.

Форум полон множества полезных советов и очень активен и поддерживается.

Просто пытаюсь дать вам другой вариант. DDE, NetDDE, FastDDE, OPC, DCOM, Suitelink ... Все это хорошо, но в основном это платное приключение. Как программисту кажется нелепым платить такую чрезмерную сумму денег, просто чтобы поговорить с моим оборудованием, ИМХО. Извините за напыщенную речь. Радоваться, веселиться!

Обновление . Я просто хотел также предложить следующий проект с открытым исходным кодом, написанный на python:

https://github.com/dmroeder/pylogix

Я использовал это для написания небольших программ для связи с CompactLogix и ControlLogix. (Даже в / из RaspberryPi!)

1
user162443 21 Апр 2020 в 17:33

Если вы пытаетесь читать данные CLX с помощью Python, есть несколько реализаций с открытым исходным кодом, которые сэкономят вам много работы. Такие как это:

https://github.com/dmroeder/pylogix

Если вы используете .NET и Visual Studio, вы можете использовать AdvancedHMI

0
Archie 16 Сен 2017 в 23:04