Планируется снимать данные с WAGO-I/O-System EthernetTCP/IP 750-841 по Modbus TCP. Каков алгоритм действий? Создать в приемниках/источниках группу MODBUS -> создать компоненты типа Rin_Word(4), задать им адрес, канал, тип протокола, формат, ip-адрес -> привязать каналы к этим компонентам? Дело в том что в этом контроллере адреса modbus начинаются с 312289-... и 412289-... Будут ли например значение 312289 соответствовать заданному в Rin_Word "каналу" 0x00 ? Или будет нужно делать всё иначе? Реального контроллера и модульной системы ввода/вывода в данный момент нет.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Алгоритм формирования компонентов обмена в проекте верный. Утверждать что-либо определенное по отображению системы адресов переменных в контроллере на стандарт MODBUS мы не можем. Надо изучать документацию или консультироваться у поставщика.
Posted by justme (Участник № / Member № 5527) on :
нашел некоторую информацию.. Переменные программы контроллера в адресах Modbus 312289-... и 412289-... соответствуют виртуальным переменным контроллера %MW0 ... %MW12287 в энергонезависимой памяти с доступом чтение/запись.
Первая цифра в адресе, к адресу регистра вовсе не относится, а определяет код области памяти и соответствующие функции, которые используются для доступа к ней. Для чтения области "3..." нужно использовать функцию 4, и наоборот, для области "4..." функцию 3.
Данные с контроллера можно будет получить в регистрах с адресами 12289 ... 24575 или в HEX 0x3001 ... 0x5FFF
Всё так?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Видимо, так.
Posted by Alex210271 (Участник № / Member № 4421) on :
Если Вам нужно считывать не переменные из программы в контроллере а просто входы модулей и управлять выходами модулей подключенных к WAGO 750-841, то адреса будут начинатться с 0. Например, считываем данные с WAGO 750-430. 8-канальный модуль дискретного ввода: используем в группе MODBUS Rin_Byte(2) с параметрами № порта - 0, Адрес - 1, канал - 0, протокол - TCP/IP, направление - input, формат - дискрет, ну и ip адрес конечно. в этом случае в привязанный канал нех16 передаются сразу все 8 входов и 8 входов следующего аналогичного модуля ввода. Я обычно использую только восемь первых бит а для второго такого же модуля пишу еще один источник с каналом 0х8 что бы не путаться с какого модуля снимаю инфу. И так далее для каждого модуля. Модули вывода нумеруются опять начиная с 0, то есть если вы указали направление output, то с нулевым каналом будет первый дискретный выход. Аналоговые также начиная с 0, только другие Rin и WWord. Отличие только если вы хотите перечитать модули вывода там будет Rout и смещение адресов в поле канал 0х200.
Posted by dlesnikov (Участник № / Member № 4358) on :
WAGO 750-841 - свободно-программируемый контроллер, поэтому нужно узнавать у того, кто туда заливал программу, из каких регистров что считывать. Например, мне не удобно считывать сразу с регистров, связанных с модулями вв/выв., а использовать другие регистры, данные в которых формируются программой контроллера (данные с модулей вв/выв. сначала проходят программную обработку в контроллере, например избавление от дребезга, перевод одних физ. величин в другие и т.д.). Использовать 750-841 для прямого обращения к модулям - это "из пушки по воробьям". Для этого есть простые "тупые" баскаплеры, типа 750-342. А регистры %MW0...%MW12287, как вы правильно заметили относятся к энергонезависимой памяти и их содержимое формирует исключительно внутренняя программа контроллера.
Posted by LSR (Участник № / Member № 6485) on :
Добрый день, Спасибо за информацию по регистрам! Пробую считывать данные - успешно, а вот записывать нет.
Modbus TCP Создал в приемниках/источниках группу MODBUS -> создал компонент типа Rin_Float(4), настроил адресс слейва, регистр, TCP, input, аналог, ip-адрес -> создал канал Float, Input -> создал ГЭ с выводом информации. Все работает. При создании компонента на запись Rout_Float(3), в настройка аналогия, output -> канал Output Данные в %MW0 не записываются.
Modbus RTU вообще не работает, создаю com port, в переменной меняю протокол Modbus, добавляю номер порта, удаляю Ip адресс. нет эффекта. На USB/RS-485 Moxa моргает TxD. Как понимаю порт открыт и запрос уходит, ответа нет.
ПЛК WAGO 750-881 Ethernet, модуль 750-652 RS-485
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
1. Для записи на использовать функцию Modbus W_Float(16). Следует учесть также замечание в предыдущем посте "А регистры %MW0...%MW12287, как вы правильно заметили относятся к энергонезависимой памяти и их содержимое формирует исключительно внутренняя программа контроллера. " Возможно, в регистр %MW0 осуществить запись извне нельзя?
2. Для проверки обмена по Modbus RTU надо задать в файле конфигурирования запуска узла *.cnf ключ DEBUGON=F0000200 В профайлерном протоколе должна быть информация об инициализации заданного Вами COM-порта и транзакциях обмена.