- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Модуля ввода /вывода и Modbus адресация в ПЛК
Модераторы: Глоб.модераторы, Специалисты SE
-
- здесь недавно
- Сообщения: 28
- Зарегистрирован: 10 апр 2015, 09:43
- Имя: Григорьев Юрий Павлович
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 5 раз
Модуля ввода /вывода и Modbus адресация в ПЛК
Здравствуйте.
Прошу, пожалуйста, подсказать о адресации регистров и каналов модулей ввода/вывода в ПЛК 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?)
Благодарю за ответ!
Прошу, пожалуйста, подсказать о адресации регистров и каналов модулей ввода/вывода в ПЛК 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?)
Благодарю за ответ!
-
- эксперт
- Сообщения: 1146
- Зарегистрирован: 25 июл 2008, 10:06
- Имя: Леонид
- Страна: РФ
- Благодарил (а): 49 раз
- Поблагодарили: 134 раза
Модуля ввода /вывода и Modbus адресация в ПЛК
Если модули ввода-вывода формата Quantum (140 в начале обозначения), то они адресуются в Input или Holding Registers.
Для некоторых контроллеров в конфигурации контроллера или при добавлении модуля можно выбрать Mixed topological and State RAM, тогда можно назначить адрес в Input или Holding Registers.
В других случаях регистры ввода-вывода надо перекладывать в Holding registers в своей программе.
Для некоторых контроллеров в конфигурации контроллера или при добавлении модуля можно выбрать Mixed topological and State RAM, тогда можно назначить адрес в Input или Holding Registers.
В других случаях регистры ввода-вывода надо перекладывать в Holding registers в своей программе.
Да, можете любые, поддерживающие Modbus TCP.
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.
-
- здесь недавно
- Сообщения: 28
- Зарегистрирован: 10 апр 2015, 09:43
- Имя: Григорьев Юрий Павлович
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 5 раз
Модуля ввода /вывода и Modbus адресация в ПЛК
Спасибо за ответ, но не совсем понял то ,как я всё-таки могу прочитать переменную по регистрам Modbus в ОРС , созданную в виде , например, для дискретных входов /выходов :%i0.1.2 или %q0.2.1 , или для переменных типа real для аналоговых входов : %mw0.1.3, где присвоен именно конкретный вход канал модуля( и в столбце 984 нет обозначения переменной)leon78 писал(а): ↑30 окт 2021, 13:21 Если модули ввода-вывода формата Quantum (140 в начале обозначения), то они адресуются в Input или Holding Registers.
Для некоторых контроллеров в конфигурации контроллера или при добавлении модуля можно выбрать Mixed topological and State RAM, тогда можно назначить адрес в Input или Holding
Registers.
В других случаях регистры ввода-вывода надо перекладывать в Holding registers в своей программе.Да, можете любые, поддерживающие Modbus TCP.
-
- эксперт
- Сообщения: 1146
- Зарегистрирован: 25 июл 2008, 10:06
- Имя: Леонид
- Страна: РФ
- Благодарил (а): 49 раз
- Поблагодарили: 134 раза
Модуля ввода /вывода и Modbus адресация в ПЛК
Нет, не можете.
PS. У аналогово обычно INT, а не REAL.
Отправлено спустя 5 минут 20 секунд:
Кстати, при использовании OPC сервера Шнайдера (назывался OFS, сейчас наверное переименовали) обмен с ПЛК идет по проприетарному протоколу, а не Modbus TCP. В таком случае можно читать переменные по названию, и соответственно можно прочитать и переменные, привязанные к модулям ввода-вывода.
PS. У аналогово обычно INT, а не REAL.
Отправлено спустя 5 минут 20 секунд:
Кстати, при использовании OPC сервера Шнайдера (назывался OFS, сейчас наверное переименовали) обмен с ПЛК идет по проприетарному протоколу, а не Modbus TCP. В таком случае можно читать переменные по названию, и соответственно можно прочитать и переменные, привязанные к модулям ввода-вывода.
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.
-
- здесь недавно
- Сообщения: 28
- Зарегистрирован: 10 апр 2015, 09:43
- Имя: Григорьев Юрий Павлович
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 5 раз
Модуля ввода /вывода и Modbus адресация в ПЛК
Интересен путь решения вопроса , используя сторонние ОРС серверы, допустим 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» пустое.leon78 писал(а): ↑30 окт 2021, 18:35 Нет, не можете.
PS. У аналогово обычно INT, а не REAL.
Отправлено спустя 5 минут 20 секунд:
Кстати, при использовании OPC сервера Шнайдера (назывался OFS, сейчас наверное переименовали) обмен с ПЛК идет по проприетарному протоколу, а не Modbus TCP. В таком случае можно читать переменные по названию, и соответственно можно прочитать и переменные, привязанные к модулям ввода-вывода.
Когда выставляю 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 раз.
-
- специалист
- Сообщения: 642
- Зарегистрирован: 02 дек 2015, 06:57
- Имя: Огородников Сергей
- Страна: РФ
- Благодарил (а): 136 раз
- Поблагодарили: 111 раз
Модуля ввода /вывода и Modbus адресация в ПЛК
Добрый день!
В справке поищите информацию про топологическую адресацию, 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.
Но, открыв конфигурацию модуля Quantum, вы увидите заданный адрес/диапазон адресов, к которым можно обратиться по модбас
И у вас ошибки в адресах
4.
Адрес у аналогового входа будет типа %IW1 и %IW1.4.1 - при использовании топологической адресации
И, конечно, как Леонид отметил - только INT
5. Ежели упорно хотите пользоваться топологической адресацией - то, как Леонид посоветовал, переприсваивайте нужные значения в свободные %MWi, а их уже читайте/пишите как стандартные 4х
6. Вам бы базовый курс по Quantum посетить...
Отправлено спустя 8 минут 8 секунд:
В справке поищите информацию про топологическую адресацию, 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.
по модбас не прочитаете
Но, открыв конфигурацию модуля Quantum, вы увидите заданный адрес/диапазон адресов, к которым можно обратиться по модбас
И у вас ошибки в адресах
4.
Действительно такое получилось? Это ошибка на ошибке.
Адрес у аналогового входа будет типа %IW1 и %IW1.4.1 - при использовании топологической адресации
И, конечно, как Леонид отметил - только INT
5. Ежели упорно хотите пользоваться топологической адресацией - то, как Леонид посоветовал, переприсваивайте нужные значения в свободные %MWi, а их уже читайте/пишите как стандартные 4х
6. Вам бы базовый курс по Quantum посетить...
Отправлено спустя 8 минут 8 секунд:
Речь шла про Quantum? Ошибки в адресах
всё верно, читайте моё сообщение выше
Пишите яснее - что и где настраиваете? В окне Set Address устанавливается адрес и тип подключения слева- для ПЛК ФИЗИЧЕСКОГО, правее - для СИМУЛЯТОРА (обычно 127.0.0.1). По параметрам слева без толку подключаться к симулятору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".
СВ
-
- здесь недавно
- Сообщения: 28
- Зарегистрирован: 10 апр 2015, 09:43
- Имя: Григорьев Юрий Павлович
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 5 раз
Модуля ввода /вывода и Modbus адресация в ПЛК
Доброго времени суток!
Решил вернуться к своему поднятому выше вопросу, возникли некоторые трудности понимания. Прошу, пожалуйста, подсказать.
В чем заключается связь между адресацией переменной и модуля/канала, например, типа %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, тогда как выше писал о ошибке.
Огромная благодарность за помощь!
Решил вернуться к своему поднятому выше вопросу, возникли некоторые трудности понимания. Прошу, пожалуйста, подсказать.
В чем заключается связь между адресацией переменной и модуля/канала, например, типа %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, тогда как выше писал о ошибке.
Огромная благодарность за помощь!
-
- здесь недавно
- Сообщения: 28
- Зарегистрирован: 10 апр 2015, 09:43
- Имя: Григорьев Юрий Павлович
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 5 раз
Модуля ввода /вывода и Modbus адресация в ПЛК
Доброго времени суток!
Решил вернутся к своему вопросу ещё раз. Прошу, пожалуйста, подсказать или показать пример обмена между ПЛК ,например в симуляторе или на настоящем ПЛК, Скадой и ОРС сервером и датчиком на любом языке программирования.
Задача состоит в том, что допустим, есть датчик 4-20mA, ему присвоен адрес «1», подключён к модулю ПЛК Quantum В аналоговый модуль AMI с адресом %IW0.2.1. Есть ОРС сервер KEPWARE и скада citect.
Как осуществить связь между датчиком и контроллером через ОРС по модбасс? Не смог найти информацию по данному обмену. Не совсем понял о регистрах, присвоении %mw , как писали выше, пожалуйста , прошу помочь.
Благодарю за ответ!
С уважением.
Решил вернутся к своему вопросу ещё раз. Прошу, пожалуйста, подсказать или показать пример обмена между ПЛК ,например в симуляторе или на настоящем ПЛК, Скадой и ОРС сервером и датчиком на любом языке программирования.
Задача состоит в том, что допустим, есть датчик 4-20mA, ему присвоен адрес «1», подключён к модулю ПЛК Quantum В аналоговый модуль AMI с адресом %IW0.2.1. Есть ОРС сервер KEPWARE и скада citect.
Как осуществить связь между датчиком и контроллером через ОРС по модбасс? Не смог найти информацию по данному обмену. Не совсем понял о регистрах, присвоении %mw , как писали выше, пожалуйста , прошу помочь.
Благодарю за ответ!
С уважением.
-
- эксперт
- Сообщения: 1146
- Зарегистрирован: 25 июл 2008, 10:06
- Имя: Леонид
- Страна: РФ
- Благодарил (а): 49 раз
- Поблагодарили: 134 раза
Модуля ввода /вывода и Modbus адресация в ПЛК
Пишете в секции на ST:
Читаете OPC из регистра 400001.
Код: Выделить всё
%MW1 := %IW0.2.1;
Хард - это то, что можно швырнуть об стенку, а софт - это то, что можно лишь обматерить.