Как я могу общаться между Siemens S7-1200 и python?

Я запускаю процесс на S7-1200 plc, и мне нужно, чтобы он отправил сигнал запуска моему сценарию python, после того, как сценарий будет запущен, ему нужно отправить что-то обратно на plc, чтобы начать следующую фазу. О, и это нужно делать в лестнице.

Есть ли быстрый и грязный способ пересылки сообщений через Profibus, или мне лучше использовать только RS232?


person Megimoo    schedule 27.04.2012    source источник
comment
ты это погуглил? это может помочь scorpion.tordivel.no/help/Python/Unsupported%20Modules /   -  person sinelaw    schedule 27.04.2012
comment
Я надеялся, что смогу сделать это без сервера opc.   -  person Megimoo    schedule 27.04.2012


Ответы (7)


После неудачной попытки с libnodave и OPC я создал коммуникационные элементы TCON, TSEND и TRECV. Он передает байт по TCP и работает.

person Megimoo    schedule 28.05.2012

Я бы выбрал библиотеки SNAP7 и python-snap7. Пример того, как установить его на Raspberry pi, можно найти в этом блоге: http://simplyautomationized.blogspot.com/2014/12/raspberry-pi-getting-data-from-s7-1200.html

Обновление:

Видео-пошаговое руководство по настройке: https://youtu.be/yJNEsI5KJxs

person Entrabiter    schedule 14.12.2014

Я бы использовал libnodave на стороне ПК, чтобы изменить значение некоторого тега M или Тег DB в ПЛК. Вы можете легко создать лестницу, которая будет отслеживать этот тег и выполнять дальнейшие действия. Хотя libnodave изначально не поддерживает Python, вы можете найти оболочку python здесь.

person avra    schedule 30.04.2012
comment
Я не думаю, что у вас есть пример используемой оболочки? - person Megimoo; 30.04.2012
comment
Я пробовал различные решения с libnodave, и все они возвращаются в -1 из connectPLC (). Кто-то в Интернете утверждает, что это связано с изменением уровня TCP S7-1200, и я недостаточно знаю C, чтобы изменить это в dll. - person Megimoo; 01.05.2012
comment
Если я хорошо помню, testISO_TCP.exe работал нормально. Насчет других способов подключения не знаю. Я просто знал об оболочке Python, я ею не пользовался. Я с большим успехом использую libnodave в Linux (GCC и FreePascal) и в Windows (Delphi, Lazarus / FPC). У меня нет S7 1200 для повторного тестирования, но кто-то уже сделал это с Android: automation-se.de/index.php/s7droid/s7droidlite. - person avra; 04.05.2012
comment
testISO_TCP.exe работал нормально, однако, изучив исходный код и написав то же самое на python, он вернул -1. Я даже не смог установить соединение с ПЛК. Примерно через неделю попыток или неудач мой учитель посоветовал мне больше не терять время. Как бы то ни было, сейчас проект реализован, и я многому научился, пытаясь заставить эти вещи работать, так что вы заслуживаете этого +1. В будущем постараюсь избегать всего, что делает Сименс. - person Megimoo; 06.06.2012
comment
@Megimoo, со временем многое улучшилось, даже в мире S7. (не спонсируемый комментарий; p) - person ZF007; 23.12.2018

Что ж, быстрый поиск в Google 'python rs232' обнаружил какой-то сайт говорить об управлении робототехникой через rs232 с использованием pySerial. Так что, если вы знаете, как подключить свой виджет к rs232, вы можете пойти по этому пути.

person John Gaines Jr.    schedule 27.04.2012

Существует коммерческая библиотека под названием «S7connector» от Rothenbacher GmbH (очевидно, это не «s7connector» на sourceforge). Он предназначен для платформы .NET, поэтому может использоваться с IronPython.

Он действительно работает с ПЛК S7-1200. Вам просто нужно убедиться, что БД, из которой вы хотите читать / писать, не является оптимизированной БД стиля S7-1200, а совместимой с S7-300 / 400, опцию, которую вы можете установить при создании БД на портале TIA. Эта библиотека также позволяет читать и записывать все порты ввода-вывода - «теневые регистры» (не знаю, как они называются официально), а также напрямую, отменяя предыдущие.

person user1847129    schedule 05.06.2014

Для Python доступно несколько клиентов Modbus TCP, я успешно использовал pyModbusTCP. Портал TIA IDE для S7-1200 имеет функцию сервера Modbus, которую вы можете загрузить в свой ПЛК, что позволит вам читать и писать непосредственно в ПЛК.

https://support.industry.siemens.com/cs/ww/en/view/83130159

person fredm    schedule 06.09.2016

Лучшим способом связи с процессорами ПЛК S7-1200 является OPC UA или Classic OPC (обычно известный как OPC DA). Libnodave предназначен для S7-300 и S7-400, а не для S71200 (прошивка 2.x).

Если вы используете стороннее решение для связи с S7-1200 (или S7-1500), вам необходимо снизить уровень безопасности на ПЛК, разрешив механизм ввода и вывода. Положить и получить - чистое зло в использовании. Вы открываете память процессора для каждого процесса. Не используй их больше. Сименс действительно должен это заблокировать.

Это относится ко всем выпускам прошивки для S7-1200. Сименс подталкивает людей, которые используют OPC UA в качестве связи по умолчанию с ПЛК. Что имеет смысл, потому что OPC UA - это протокол для индустрии 4.0 и IIoT.

Редактировать: все переписать. Информация сильно устарела. Если вы используете прошивку 2 или 3 1200, подумайте о замене или обновлении. Эти версии больше не поддерживаются и содержат проблему с червем.

person Community    schedule 27.05.2012
comment
Невозможно связаться с процессорами S7-1200 PLC без OPC. Не верно. Смотрите мой ответ. - person user1847129; 05.06.2014
comment
Мы на две версии прошивки дальше того момента, когда был дан этот ответ. OPC также наконец-то официально выпущен для S7-1200 только с неоптимизированным доступом. - person ; 06.06.2014
comment
Этот ответ относится к прошивке S7-1200 V2.2 (октябрь 2011 г.) или более ранним выпускам. Наслаждайтесь своим cleanup значком;) - person ZF007; 22.12.2018