Никак не могу подключиться к ПЛК100-K-L с помощью Siemens S7-1200... Ни в режимах Мастер-Слейв, ни наоборот с каждой стороны...Интерфейс Modbus TCP. Быть может у кого есть опыт в данном направлении? Буду признателен за любую помощь
Вид для печати
Никак не могу подключиться к ПЛК100-K-L с помощью Siemens S7-1200... Ни в режимах Мастер-Слейв, ни наоборот с каждой стороны...Интерфейс Modbus TCP. Быть может у кого есть опыт в данном направлении? Буду признателен за любую помощь
По Сименсу не подскажу, а вот наладить опрос ПЛК100 можно на примере моего поста, опрос производит Овен ОПС сервер по TCP/IP, программа ставится за пару минут. На скрине приведена конфигурация ПЛК, которую вам надо повторить на своём ПЛК. ПЛК100 - слейв с адресом 1.
Когда разберётесь с опросом ПЛК100 , разберётесь и со связью с Сименсом. Сименс соответственно можно сделать мастером.
Мой пост со скрином опроса https://owen.ru/forum/showthread.php?t=10555&page=839
Овен ОПС сервер https://owen.ru/product/new_opc_server
Здесь есть примеры обмена через библиотеку https://owen.ru/forum/showthread.php?t=16814
ПЛК100 требует при запросе указывать ID устройства. Без него не ответит.
я понял, спасибо, как мне указывать в самой программе codesys область памяти, которую хочу использовать для передачи/получения? Блок памяти? Я с codesys особо не работал - в основном с симатиком, не могли бы вы более подробно указать- как программируется сам алгоритм работы ПЛК100 и его настройки? Благодарю
Меня вот это видео, как я понял, запутало - я сделал по аналогии,но как я понял, необходимо в алгоритм добавлять функцию, в которой все потребуется указывать...
Видео https://www.youtube.com/watch?v=5VO0iE_1Va8&t=996s
Вам надо, чего попроще посмотреть. Не смотрите, что там ПЛК110 подключается к СПК, вам главное принцип создания Модбас (ТСР) Слейва понять. На ПЛК100 тоже самое, только таргет при создании проекта будет не ПЛК 110-32, а ПЛК 100. https://www.youtube.com/watch?v=WhldODV1Cco
Потом можно посмотреть подключение к Скаде https://www.youtube.com/watch?v=B03Fi_P2sqk
Спасибо...я еще уточню, пока не просмотрел то, что вы скинули , но обязательно это сделаю - вот я доьавлб в программу блок mb_server, все к нему подведу и задам нужные значения переменным, вопрос : та область памяти, с которой я хочу работать, настраивается в конфигурации плк? Я видел там добавляется мастер, слейв, протокол и уже переменные, с которыми мы будем работать по обмену или передачи данных так?
Да, только есть нюансы, все переменные в конфигурации, в ПЛК - слейве будут глобальные и энергонезависимые. Если ПЛК - мастер, то переменные будут просто глобальные. Переменным лучше дать имена в конфигурации и из программы обращаться к ним по именам.
А например через вывод символьной конфигурации, Содесис ОРС 0.2 и Скаду, можно получить доступ вообще ко всем переменным проекта.
А зачем тогда нужны программные функции мастера? слейва? если все попросту в конфигурации задается... Я пробовал таким образом сделать, как указано на видео с подключением к панели - у меня связь не устанавливается Вложение 60040
Для новичков удобнее конфигурация, для продвинутых есть обмен через библиотеки. А то что у вас не работает, скорее всего ошибки в настройках. Я проверял на ПЛК 154, у меня всё работало через конфигурацию и вообще без каких либо ФБ (функц. блоков) .
ЗЫ Просмотрел руководство на ПЛК100 и ничего не нашёл по поводу ID, зато нашёл примеры подключения двух ПЛК 100, там ничего нет вообще, кроме конфигурации, так что на счёт ID это всё фигня. Вот примеры соединения 2 ПЛК 100 по Модбас TCP между собой:
Если ПЛК слейв то как бы и библиотеки не нужны, хватает конфигурации, ибо когда спросили, тогда и ответ будет дан.
Адресация в ПЛК с 0, но в программах иногда необходимо ставить с 1.
Не забываем по ID, почему то сотая серия не будет отвечать если просто задать IP и порт.
Не забываем о выравнивании переменных кратно своей длине данных, есть в документации по программированию ПЛК.
Начните банально с одной переменной int и потом шагните к float и все будет видно.
melky , у меня вопрос, где в обмене через конфигурацию надо указать ID для ПЛК100 ?
Просмотрел руководство, там ничего такого нет. Нашел примеры связи двух ПЛК100 (выложил выше), там тоже никакого ID. Откуда такая информация?
kondor3000 ID это адрес слейва в Modbus RTU сети. Смотрите описание пакета Modbus TCP запроса - там фигурирует тоже ID устройства.
По крайней мере со стороны Scada если не указать этот ID и данный байт будет 0х00 то ПЛК не ответит...
https://ipc2u.ru/articles/prostye-re...-tcp/#opisanie
Unit Identifier для сотой серии обязателен. Единственное не знаю, он должен быть не равен 0 и быть любым и потом игнорируется или обязательно должен соответствовать адресу RTU. Лень доставать 100-ку чтобы проверить.
Адрес слейва указывается для всех приборов, хоть панель, хоть ПЛК, хоть модуль.
При чём здесь ПЛК100 и указание его ID? По словам melky, адрес слейва ПЛК100, это и есть ID. Тогда зачем тогда об этом упоминать отдельно?
В выложенном примере указан адрес слейва 2, никакого ID в примере нет.
И не важно какой это ПЛК, я делал опрос ПЛК 154, и указывал адрес слейва 1, но отдельно про ID ничего не пишу.
В симатике опрос устройств по TCP работает по принципу клиент-сервер, где клиент ОТПРАВЛЯЕТ, а сервер отвечает....Таким образом, чтоб опросить ПЛК100 (который в режиме слейв) мне нужно чтоб контроллер сименс работал как клиент... только в таком режиме он может отправлять запросы...Это полная ерунда выходит
А плк100 может быть мастером только для RS связи? Спасибо
Вложение 60048
kondor3000 я просто однажды не указал ID в пакете TCP и ПЛК не ответил. Хотя какая ему разница на этот ID если у нас к одному IP адресу и по порту 502 в сотке может подключаться только один клиент? 100-ка не дает на один порт несколько сокетов, по крайней мере через Конфигуратор точно.
capzap какая разница, что там в OPC ? если речь идет о подключении другим устройством? указан там ID или нет никто кроме автора не знает.
Связь наладил, все щас хорошо, НО ни читать, ни писать в регистры ПЛК100 не могу...почему? - да фиг знает....ерунда полная, ошибок нет, а значения попросту не меняются....
PS по RTU на примее работы с ТРМ201 все хорошо работает...
Вложение 60049
Вложение 60050
Вложение 60051
Вложение 60052
Валенок а посмотреть по ссылке, что давал, где указывается ID не судьба? у меня вместо номера там было 0x00
Кстати у Modbus TCP есть еще MBAP Header, на который практически все производители ЛОЖАТ, так вот однажды людям попалось устройство, которое требовало этот MBAP Header. а это простой счетчик запросов по факту..
Doomers а адрес так и указывается 0x40001 или все-таки 1 или 0 с указанием Holding Registers функций 0x03 ?
з.ы. просто не знаю Siemens настолько
Да так и пишется, с RTU все хорошо, а этот ПЛК100 уже весь мозг выел...я новый чистый проект создал, чтоб отбросить все сомнения....НО - статус функции "чтение данных", а вот данных я не вижу, все по нолям....фигня полная вообще
Вложение 60053
В TiaPortal есть возможность посмотреть пакет TCP который отправляется от Simens до 100-ки ?
Если это симуляция на ПК то можно WireShark-ом посмотреть, вот чем смотреть между ПЛК я честно не знаю...
MB_Data_Len почему 1 если вы три регистра создали ?
Валенок какое устройство уже не помню, надо по форуму лазить и искать. первые два байта заголовка это Transaction Id - можете проверить на ПЛК 100(110) всегда там нули ставить и ПЛК будет отвечать. Да и многие устройства из мне знакомых просто игнорируют этот параметр.
Но таки попалось какое-то устройство. которое требовало наличие счетчика и не отвечало, если там были нули.
MB_Unit_ID - то, о чем я говорил, без этого ID сотка не ответит. Хотя честно не пробовал с 0xFF а с 0x00 оно не отвечает.
Валенок не равными, а увеличиваться и не быть равными нулю это если по протоколу. Но большинство кладут на номер транзакции с высокой....
з.ы. на счет смотреть - WireShark умеет смотреть только физические интерфейсы своего ПК, то есть что ПК отправляет. Какого-то ПО, которое может сниферить сеть между сторонними устройствами я на знаю. Я об этом больше говорил. То есть если ПЛК работает на ПК в эмуляции то фозможно можно посмотреть Шарком, хотя не факт. Пример с виртуальной машиной где интерфейс в брижде Шарк не отловит.
Several MODBUS transactions can be activated simultaneously on the same TCP Connection.
Remark: If this is done then the MODBUS transaction identifier must be used to uniquely identify the matching requests and responses.
The transaction identifier is used to associate the future response with the request.
So, at a time, on a TCP connection, this identifier must be unique. There are
several manners to use the transaction identifier:
- For example, it can be used as a simple "TCP sequence number" with a
counter which is incremented at each request.
- It can also be judiciously used as a smart index or pointer to identify a
transaction context in order to memorize the current remote server and the
pending MODBUS request.
Ну, с чего начинать ID транзакции с 0 или с 1 не сказано. Выше цитаты из протокола, но как писал ранее, за несколько лет столкнулись только с одним устройством, которое требовало наличие ID транзакций и не отвечало, когда оно было равным нулю. И мало того, не отвечало на повторный ID если ответ был передан.
Я человек простой. Тупо промт :
Про некий "0" ничего не вижу. Но заметил.Цитата:
Несколько транзакций MODBUS могут быть активированы одновременно на одном TCP-соединении.
Примечание: Если это сделано, то идентификатор транзакции MODBUS должен использоваться для однозначной идентификации соответствующих запросов и ответов...
А счетик, умножитель или рандом - пофиг.
Видео уже с десяток пересмотрел - все аналогично....Не совсем понял, зачем вам скрин с Connections из Device & networks, сконфигурировать ПЛК100 в ТИА каким образом смогу? - на него даже GSD файла нет...
Вложение 60056
Валенок вот скажите, где в протоколе указано, что ID транзакции ДОЛЖЕН быть НОЛЬ ? не допускается, а именно должен ?
Doomers у вас Siemens реальный или возможен запуск на виртуальном? Или через онлайн отладку можно пакет TCP увидеть ?
Любой парсер Modbus пакета сразу покажет ху из ху...
У меня все живое....Пакет отсмотреть - даже не слышал о таком, не исключаю, но даже не слышал....
я не эту картинку спрашивал, вот же какую надо Вложение 60059, если Вы действительно получили соединение то там должна отображаться строчка
И смотрите как люди показывают свои настройки для обмена Вложение 60060
Doomers к сожалению не знаю TiaPortal, если в онлайн отладке есть подключение есть там возможность смотреть посылаемые пакеты TCP или нет ?
А чтобы посмотреть трафик TCP надо на ПК две сетевые поставить и организовать на нем коммутатор, потому что тот же WireShark по другому не сможет увидеть чужие пакеты.
У меня никаких строк нет...
Вложение 60063
Вложение 60064
в свойствах контроллера, IP адрес когда задавали, сам то сетевой интерфейс создали? На скрине не видно что сеть существует Вложение 60065
В онлайне есть, подсеть добавил...
Вложение 60067
у ПЛК100 какой адрес, покажите скрин выполнение команды PLCInfo
ЗЫ за одно и адрес компа в этой сети, если с контроллером не получится придется смотреть пакеты, для этого скачивайте симулятор https://www.hmisys.com/downloads/Pea...torInstall.exe и в сименсе указывайте адрес ПК с запущенным симулятором слейва и смотрите приходят ли пакеты
Вот
Вложение 60068