Тема / Topic: Передача массива по Modbus TCP с контролем
Поляков Илья
Active Forum Member / Активный участник форума
Участник № / Member № 3358
отправлено / posted
Задача: RTM передает массив в PLC, по одному элементу, дополнительно передает индекс элемента в массив - PLC должен восстановить массив у себя в памяти.
Протокол MOdbus.
Вопрос: как передать в PLC массив чисел, и при этом быть уверенным, что PLC данные принял верно, не считывая значение из PLC?
Иными словами, существует-ли способ узнать, что данные по Modbus доставлены адресату верно, не производя контрольные считывания тэга в PLC, куда были отправлены данные?
Использование числа Modbus тэгов по числу элементов массива нежелательно, т.к. размер массива может варьироваться и быть большим(в этом случае можно было-бы организовать групповую передачу, но это сильно увеличит количество каналов и источников, и не решает проблему контроля правильности. Вроде...).
Пока только один способ на ум приходит: 1. Отправляем число и индекс по Modbus; 2. Читаем в цикле эти же тэги, до совпадения значений с отправленными; 3. Шлем контроллеру в тэг флаг "Данные выставлены" 4. Ждем от PLC ответ (в тэге) "Данные получены" 5. Снимаем флаг "Данные выставлены"; 6. Ждем снятия флага "Данные получены" 7. Цикл передачи с контролем закончен, на п. 1.
Смахивает на перевозку одной картошки "Камазом". Может можно проще?
З.Ы. Только не отсылайте меня к изучению спецификации на Модбас, пальцем покажите плиз .
Сообщения / Posts 68 | Из / From: Россия
| IP / IP: IP адрес / IP address |
AI
Active Forum Member / Активный участник форума
Участник № / Member № 3594
отправлено / posted
Я у себя проверяю по контрольной сумме. Со скады отправляю пакет информации и в двух регистрах - контрольную сумму и счетчик запросов. На контроллере считаю сумму и сравниваю с контрольной. Если совпадает, значит данные пришли верно и в обратную связь выставляю полученный счетчик. Скада запускает таймер и смотрит, если за отведенное время пришел нужный счетчик в обратной связи, значит данные получены, если нет то -таймаут. (кроме счетчика пересылается и код ошибок, если конфигурационные данные были неверные).
Сообщения / Posts 75 | Из / From: Russia
| IP / IP: IP адрес / IP address |
Поляков Илья
Active Forum Member / Активный участник форума
Участник № / Member № 3358
AI
Active Forum Member / Активный участник форума
Участник № / Member № 3594
отправлено / posted
Я для обмена информацией выделил десяток регистров для записи и для чтения (как на скаде, так и на контроллере). В зависимости от кода команды (чтение конфигурации оборудования/сигнала/регулятора и т.п., запись конфигурации) я записываю туда нужные данные, код команды, индекс переменной/оборудования, счетчик команд и контрольную сумму. На контроллере читаю эти регистры, считаю контрольную сумму и сравниваю с контрольной, которая пришла со скады. Если всё ОК, распихиваю значения регистров в соответствующие переменные и посылаю в обратную связь на скаду счетчик, который пришел.
Сообщения / Posts 75 | Из / From: Russia
| IP / IP: IP адрес / IP address |
отправлено / posted
Справка Обмен по протоколу MODBUS TCP/IP
файл IP_modBus
<произвольное_число> CSC
отработка пакетов ответа от контроллеров, формирующих контрольную сумму во фрагменте Modbus-пакета Modbus/TCP (по стандарту в части пакета TCP, отведенного под Modbus, контрольная сумма не формируется). По умолчанию, монитор не создает эту строку в файле IP_modBus.
siver.1998
Junior Member / Новичок
Участник № / Member № 9213
отправлено / posted
Добрый день. имеется проект с графическим экраном, требуется попробовать передать с другого компьютера по TCP/ip данные. Не получается передать данные, хотя атрибут А изменяет значения и обнуляется
Сообщения / Posts 15 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Уточните, по какому протоколу из какого ПО будут передаваться данные, какие данные? Опишите более подробно.
Сообщения / Posts 17264 | Из / From: Россия
| IP / IP: IP адрес / IP address |