PDA

Просмотр полной версии : Modbus TCP для ПЛК-154



Петр Иванович
03.10.2012, 15:12
Вроде как перечитал все доступные инструкции и пересмотрел все доступные ролики.
Но так и не понял, какие я должен послать TCP-команды с компьютера (ОС - отличная от Windows), чтобы ПЛК-154 мне рассказал:
1. Про состояния цифровых входов
2. Про величины, измеренные на аналоговых входах (установлены как 0...5 кОм)
3. И какие я должен послать команды, чтобы включить одно из реле
4. и чтобы изменить напряжение на аналоговом выходе.
---
Конфигурация ПЛК - почти целиком стандартная, прописаны только дополнительно Modbus TCP (slave и master) да Modbus-485

capzap
03.10.2012, 15:19
внешние подключаемые устройства в качестве мастера, видят только модбас и вот когда Вы всё вышеперечисленное продублируете в слейве, то и увидите требуемое ннапример на ПК

Петр Иванович
03.10.2012, 15:56
внешние подключаемые устройства в качестве мастера, видят только модбас и вот когда Вы всё вышеперечисленное продублируете в слейве, то и увидите требуемое ннапример на ПК
То есть я должен все эти переменные (четыре цифровых входа, четыре релейных выхода и т.д.), заново прописать в разделе Modbus TCP slave?
---
А по какому протоколу с ПЛК обменивается Codesys? Стоит мне замкнуть цифровой вход, или повесить резистор на аналоговый вход, так он тут же видит это всё.

capzap
03.10.2012, 16:03
прописать не заново, а в программе присвоить значение реальных входов/выходов в каналы модбас слейва с такими же типами данных, причем делать это надо разумно, по тому что если с мастера модбас будете делать запись, то чтоб контроллер не затирал Ваши изменения, плюс к тому же любой вход контроллера не возможно изменить, только выхода
А далее ищите для линукса или что там у Вас стоит программу клиент модбаса

У КДС свой протокол, его лучше не трогать, лишняя трата времени

Петр Иванович
03.10.2012, 16:33
Хорошо, спасибо.
Сейчас буду пробовать.

Петр Иванович
04.10.2012, 13:51
прописать не заново, а в программе присвоить значение реальных входов/выходов в каналы модбас слейва с такими же типами данных, причем делать это надо разумно, по тому что если с мастера модбас будете делать запись, то чтоб контроллер не затирал Ваши изменения, плюс к тому же любой вход контроллера не возможно изменить, только выхода
Что-то ничего не могу понять, как и что делать. Понимаю, что всё должно быть абсолютно просто, для домохозяек, а понять - не могу.
Из Питера, с проспекта Шаумяна (от коммерч. директора) мне сказали, что нужно:
- сконфигурировать модбас в области ввода-вывода.
Это я уже сделал давным-давно:
Один из объектов в конфигурации ПЛК:
PLC 154
|
ModBus (slave)[VAR] (идент. модуля 400)
|
Modbus[FIX] (идент. модуля 302)
| -> TCP[VAR] (идент. модуля 221, идент узла 0, адрес выходов %QB11.0 и т.д.)
| -> RS-485-1[VAR] (идент. 201,, идент. узла 1, адреса %QB11.0.0 и т.д.)

Это всё так и должно быть?
---
далее написано, что надо
"привязать переменные из области модбас к вводу-выводу" и что это делается за 10 минут.
Я охотно верю. Вопрос только один - КАК ЭТО ДЕЛАЕТСЯ?

capzap
04.10.2012, 14:21
с плк идет диск, на нем обязательно должен быть пдф-ник по конфигурации, в нем ищите именование канала, там даже рисунок будет прилагаться, потом в программе пишите имя которое стоит в слейве и присваиваете имя со входа и так далее по всем каналам

Yegor
04.10.2012, 14:25
http://images.devs-on.net/Image/puS8cPZ7p5dvDYYx-CoDeSysUntitled.png
какие я должен послать TCP-команды с компьютера (ОС - отличная от Windows)ОС до того экзотическая, что под неё готовых реализаций модбаса в виде библиотек нет что ли?

Петр Иванович
04.10.2012, 14:36
с плк идет диск, на нем обязательно должен быть пдф-ник по конфигурации, в нем ищите именование канала, там даже рисунок будет прилагаться, потом в программе пишите имя которое стоит в слейве и присваиваете имя со входа и так далее по всем каналам

Бог ты мой, кажется сообразил. Какой геморрой!!!
Я-то думал, что прописал модбас тисипи - и стучись ко всем переменным по их штатным адресам.
А тут, оказывается, надо создать кучу новых переменных, программно переконвертировать все "стандартные" в эти вновь созданные и только потом их считывать или записывать?
Как-то это всё глуповато выглядит, тем более что Codesys спокойно обходится безо всего этого.
А протокол обмена Codesys с ПЛК можно где-нибудь нарыть?

Петр Иванович
04.10.2012, 14:42
http://images.devs-on.net/Image/puS8cPZ7p5dvDYYx-CoDeSysUntitled.pngОС до того экзотическая, что под неё готовых реализаций модбаса в виде библиотек нет что ли?
ОС МС ВС.
В принципе под Linux есть реализация модбаса, только дело в том, что её по любому надо будет переписывать - в стандартной поставке ОС её нет, а заказчику надо представлять полный код программы, либо заниматься сертификацией библиотеки.
---
Да, Егор, большое спасибо за картинки - вроде как все понял.
---
А вот что за протокол используется при обмене CoDeSys с ПЛК по Ethernet? Что-нибудь на основе обмена по UDP? Есть где-нибудь что-нибудь, что можно бы было почитать?

Yegor
04.10.2012, 15:59
Там закрытый проприетарный протокол. Называется gateway, если что. Описание за несколько килобаксов можно получить.
Как-то это всё глуповато выглядитВ этом свои плюсы при отладке и замене на другую модель есть.

Модбас это совсем несложный протокол. Описания на русском гуглятся на ура, на английском — так и вовсе куча.

kosmas
10.10.2012, 11:24
Братцы, поставьте мозги на место... А?

Есть такой проект. Вроде как все правильно настроил... Как мне прочитать-записать состояние входов выходов в Лектусе, например? Именно реальных.
Те, что я добавил в ModBus slave, я научился читать. Но только почему-то и vDI1-vDI4 и vDO1-vDO4 - все получились как входы... Как там сделать выходы?

З.Ы. ModBus Pull нашел, с его помощью и разбираюсь...