1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Модуля ввода /вывода и Modbus адресация в ПЛК

Unity Pro (Control Expert), Quantum, Premium, M340, M580, Hybrid DCS, Process Expert, Zelio, Twido, M17*, M2**, SCADAPACK, SoMachine, MachineExpert, ZelioSoft, TwidoSoft, TwidoSuite, TelePace

Модераторы: Глоб.модераторы, Специалисты SE

Ответить

Автор темы
rigard
здесь недавно
здесь недавно
Сообщения: 28
Зарегистрирован: 10 апр 2015, 09:43
Имя: Григорьев Юрий Павлович
Страна: Россия
город/регион: Красноярск
Благодарил (а): 5 раз

Модуля ввода /вывода и Modbus адресация в ПЛК

Сообщение rigard »

Здравствуйте.
Прошу, пожалуйста, подсказать о адресации регистров и каналов модулей ввода/вывода в ПЛК Quantum для обмена между ПЛК и ОРС.
Допустим, в Variables, есть переменная REAL вида %mw31, она без конкретного присваивания к каналу модуля, в столбце 984 address - видим 400031 ( этот столбец и есть же адресация по Modbus ?). Но когда создаю переменную, с конкретным присваиванием в канале модуля ввода/вывода ,вида %i0.4.2 или %q0.3.1 то данная переменная уже без Modbus адреса в 984 address.
Допустим, я создал переменную REAL %mw0.2.1 ,подключил к аналоговому модулю 0.4 в 1 канале датчик 4-20мА и дискретную переменную %i0.1.3 , подключил дискретный датчик в модуле 0.1 , в 3 канал. Как я могу прочитать эти датчики через ОРС клиент через регистры?
И подскажите, я могу использовать с ПЛК любые ОРС клиенты( kepware, matricon и т.д , только указать соединение по Modbus TCP?)

Благодарю за ответ!

leon78
эксперт
эксперт
Сообщения: 1146
Зарегистрирован: 25 июл 2008, 10:06
Имя: Леонид
Страна: РФ
Благодарил (а): 49 раз
Поблагодарили: 134 раза

Модуля ввода /вывода и Modbus адресация в ПЛК

Сообщение leon78 »

Если модули ввода-вывода формата Quantum (140 в начале обозначения), то они адресуются в Input или Holding Registers.
Для некоторых контроллеров в конфигурации контроллера или при добавлении модуля можно выбрать Mixed topological and State RAM, тогда можно назначить адрес в Input или Holding Registers.
В других случаях регистры ввода-вывода надо перекладывать в Holding registers в своей программе.
rigard писал(а): 30 окт 2021, 11:43 И подскажите, я могу использовать с ПЛК любые ОРС клиенты( kepware, matricon и т.д , только указать соединение по Modbus TCP?)
Да, можете любые, поддерживающие Modbus TCP.
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.

Автор темы
rigard
здесь недавно
здесь недавно
Сообщения: 28
Зарегистрирован: 10 апр 2015, 09:43
Имя: Григорьев Юрий Павлович
Страна: Россия
город/регион: Красноярск
Благодарил (а): 5 раз

Модуля ввода /вывода и Modbus адресация в ПЛК

Сообщение rigard »

leon78 писал(а): 30 окт 2021, 13:21 Если модули ввода-вывода формата Quantum (140 в начале обозначения), то они адресуются в Input или Holding Registers.
Для некоторых контроллеров в конфигурации контроллера или при добавлении модуля можно выбрать Mixed topological and State RAM, тогда можно назначить адрес в Input или Holding
Registers.
В других случаях регистры ввода-вывода надо перекладывать в Holding registers в своей программе.
rigard писал(а): 30 окт 2021, 11:43 И подскажите, я могу использовать с ПЛК любые ОРС клиенты( kepware, matricon и т.д , только указать соединение по Modbus TCP?)
Да, можете любые, поддерживающие Modbus TCP.
Спасибо за ответ, но не совсем понял то ,как я всё-таки могу прочитать переменную по регистрам Modbus в ОРС , созданную в виде , например, для дискретных входов /выходов :%i0.1.2 или %q0.2.1 , или для переменных типа real для аналоговых входов : %mw0.1.3, где присвоен именно конкретный вход канал модуля( и в столбце 984 нет обозначения переменной)

leon78
эксперт
эксперт
Сообщения: 1146
Зарегистрирован: 25 июл 2008, 10:06
Имя: Леонид
Страна: РФ
Благодарил (а): 49 раз
Поблагодарили: 134 раза

Модуля ввода /вывода и Modbus адресация в ПЛК

Сообщение leon78 »

Нет, не можете.
PS. У аналогово обычно INT, а не REAL.

Отправлено спустя 5 минут 20 секунд:
Кстати, при использовании OPC сервера Шнайдера (назывался OFS, сейчас наверное переименовали) обмен с ПЛК идет по проприетарному протоколу, а не Modbus TCP. В таком случае можно читать переменные по названию, и соответственно можно прочитать и переменные, привязанные к модулям ввода-вывода.
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.

Автор темы
rigard
здесь недавно
здесь недавно
Сообщения: 28
Зарегистрирован: 10 апр 2015, 09:43
Имя: Григорьев Юрий Павлович
Страна: Россия
город/регион: Красноярск
Благодарил (а): 5 раз

Модуля ввода /вывода и Modbus адресация в ПЛК

Сообщение rigard »

leon78 писал(а): 30 окт 2021, 18:35 Нет, не можете.
PS. У аналогово обычно INT, а не REAL.

Отправлено спустя 5 минут 20 секунд:
Кстати, при использовании OPC сервера Шнайдера (назывался OFS, сейчас наверное переименовали) обмен с ПЛК идет по проприетарному протоколу, а не Modbus TCP. В таком случае можно читать переменные по названию, и соответственно можно прочитать и переменные, привязанные к модулям ввода-вывода.
Интересен путь решения вопроса , используя сторонние ОРС серверы, допустим Kepware прочитать данные. Проект Unity Pro запускаю под симулятором с ip 127.0.0.1 , когда пытаюсь настроить Kepware, выбираю Modbus TCP IP Ethernet, адрес Device IP 127.0.0.1, и не могу получить теги используя регистры. Сами переменные в проекте имеют адрес вида ,например: %i0.1.2 , %mw0.3.1 ( т.к. привязаны к конкретному слоту , модулю, каналу) и поле столбца «984 Address» пустое.
Когда выставляю ip адрес симулятора ПЛК например , 192.168.0.10, а ip компьютера 192.168.0.20 ( следовательно в настройках орс kepware, device id: 192.168.0.10, network adapter : 192.168.0.20) , тогда Unity выдаёт ошибку : "isn't a valid plc address, or plc is busy, or media is off".

Благодарю за ответ!
Последний раз редактировалось rigard 31 окт 2021, 11:58, всего редактировалось 1 раз.

ogorsv
специалист
специалист
Сообщения: 642
Зарегистрирован: 02 дек 2015, 06:57
Имя: Огородников Сергей
Страна: РФ
Благодарил (а): 136 раз
Поблагодарили: 111 раз

Модуля ввода /вывода и Modbus адресация в ПЛК

Сообщение ogorsv »

Добрый день!

В справке поищите информацию про топологическую адресацию, STATE RAM адресацию, работу с Data editor, а также с типами данных.
Обязательно - про конфигурацию модулей Quantum, а именно - про задание STATE RAM адреса канала ввода-вывода,
КОТОРОГО НЕ МОЖЕТ НЕ БЫТЬ!

Вкратце:

1. База для адресации переменных в Unity Pro/Control Expert - %MWi.
Т.е. переменные двойной длины (REAL, DINT etc), как и переменные одинарной длины (INT, WORD etc) и даже байтовые (BYTE) при назначени адреса в памяти будут иметь адрес вида %MW10

2. Система, в зависимости от ТИПА переменной, к указанному адресу ПЕРВОЙ ЯЧЕЙКИ может резервировать СЛЕДУЮЩУЮ - для переменных ДВОЙНОЙ длины. Т.е. если создали переменную
rRigard типа REAL по адресу %MW10 она займёт ДВЕ ячейки памяти:
%MW10 и %MW11

3.
rigard писал(а): 30 окт 2021, 13:58 переменную, созданную в виде , например, для дискретных входов /выходов :%i0.1.2 или %q0.2.1
по модбас не прочитаете
Но, открыв конфигурацию модуля Quantum, вы увидите заданный адрес/диапазон адресов, к которым можно обратиться по модбас
И у вас ошибки в адресах

4.
rigard писал(а): 30 окт 2021, 11:43 я создал переменную REAL %mw0.2.1 ,подключил к аналоговому модулю 0.4 в 1 канале
Действительно такое получилось? Это ошибка на ошибке.
Адрес у аналогового входа будет типа %IW1 и %IW1.4.1 - при использовании топологической адресации
И, конечно, как Леонид отметил - только INT

5. Ежели упорно хотите пользоваться топологической адресацией - то, как Леонид посоветовал, переприсваивайте нужные значения в свободные %MWi, а их уже читайте/пишите как стандартные 4х

6. Вам бы базовый курс по Quantum посетить...

Отправлено спустя 8 минут 8 секунд:
rigard писал(а): 31 окт 2021, 09:25 Сами переменные в проекте имеют адрес вида ,например: %i0.1.2 , %mw0.3.1 ( т.к. привязаны к конкретному слоту , модулю, каналу)
Речь шла про Quantum? Ошибки в адресах
rigard писал(а): 31 окт 2021, 09:25 поле столбца «984 Address» пустое
всё верно, читайте моё сообщение выше
rigard писал(а): 31 окт 2021, 09:25 Когда выставляю ip адрес ПЛК например , 192.168.0.10, а ip компьютера 192.168.0.20 ( следовательно в настройках орс kepware, device id: 192.168.0.10, network adapter : 192.168.0.20) , тогда Unity выдаёт ошибку : "isn't a valid plc address, or plc is busy, or media is off".
Пишите яснее - что и где настраиваете? В окне Set Address устанавливается адрес и тип подключения слева- для ПЛК ФИЗИЧЕСКОГО, правее - для СИМУЛЯТОРА (обычно 127.0.0.1). По параметрам слева без толку подключаться к симулятору
СВ

Автор темы
rigard
здесь недавно
здесь недавно
Сообщения: 28
Зарегистрирован: 10 апр 2015, 09:43
Имя: Григорьев Юрий Павлович
Страна: Россия
город/регион: Красноярск
Благодарил (а): 5 раз

Модуля ввода /вывода и Modbus адресация в ПЛК

Сообщение rigard »

Доброго времени суток!

Решил вернуться к своему поднятому выше вопросу, возникли некоторые трудности понимания. Прошу, пожалуйста, подсказать.
В чем заключается связь между адресацией переменной и модуля/канала, например, типа %mw10 ( при такой обозначении переменной какой выставлен канал данной переменной?) и топологической адресацией вида %i0.4.3 ( тут понятно, что 4 модуль 3 канал) , или Mixed topological and State RAM адресацией %MW0.4.7.3 ( тут не совсем понятно тоже какому каналу/модулю соответствует если подключить датчик, допустим) ?

Переменные по ОРС через Kepware, считать можно только те, которые были созданы в Data Editor вида, например %mw10 (но какому модулю/канала соответствует? :?: ) и ей сразу присваивается в поле "984 Address" вида 400010 , которые можно считать через ОРС Kepware.

Пытаюсь проверить проект через симулятор в UnityPro, В окне Set Address справа для симулятора стоит 127.0.0.1. Помимо этого пытался ставить адрес (слева в Set Address)Симулятора ПЛК например , 192.168.0.10, а ip компьютера 192.168.0.20 ( следовательно в настройках орс kepware, device id: 192.168.0.10, network adapter : 192.168.0.20) , тогда Unity выдаёт ошибку : "isn't a valid plc address, or plc is busy, or media is off".
Когда ставлю в окне Set Address справа для симулятора - 127.0.0.1, адрес компьютера, допустим 192.168.0.20, то пробовал тоже самое делать в настройках ОРС Kepware device id: 192.168.0.10, network adapter : 192.168.0.20, тогда как выше писал о ошибке.

Огромная благодарность за помощь!

Изображение

Автор темы
rigard
здесь недавно
здесь недавно
Сообщения: 28
Зарегистрирован: 10 апр 2015, 09:43
Имя: Григорьев Юрий Павлович
Страна: Россия
город/регион: Красноярск
Благодарил (а): 5 раз

Модуля ввода /вывода и Modbus адресация в ПЛК

Сообщение rigard »

Доброго времени суток!

Решил вернутся к своему вопросу ещё раз. Прошу, пожалуйста, подсказать или показать пример обмена между ПЛК ,например в симуляторе или на настоящем ПЛК, Скадой и ОРС сервером и датчиком на любом языке программирования.
Задача состоит в том, что допустим, есть датчик 4-20mA, ему присвоен адрес «1», подключён к модулю ПЛК Quantum В аналоговый модуль AMI с адресом %IW0.2.1. Есть ОРС сервер KEPWARE и скада citect.
Как осуществить связь между датчиком и контроллером через ОРС по модбасс? Не смог найти информацию по данному обмену. Не совсем понял о регистрах, присвоении %mw , как писали выше, пожалуйста , прошу помочь.

Благодарю за ответ!
С уважением.

leon78
эксперт
эксперт
Сообщения: 1146
Зарегистрирован: 25 июл 2008, 10:06
Имя: Леонид
Страна: РФ
Благодарил (а): 49 раз
Поблагодарили: 134 раза

Модуля ввода /вывода и Modbus адресация в ПЛК

Сообщение leon78 »

Пишете в секции на ST:

Код: Выделить всё

%MW1 := %IW0.2.1;
Читаете OPC из регистра 400001.
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.
Ответить

Вернуться в «ПЛК»