9:13 не «стандарт допускает различный порядок чередования байтов», а «зачастую производители не читают спецификацию и реализуют нестандартный протокол» - в стандарте чётко указано, что порядок байт данных - такой же, как у служебных полей - Motorola, а не Intel (за исключением CRC, который младшим байтом вперёд) - открываем стр. 5 MODBUS Application Protocol Specification V1.1b3: 4.2 Data Encoding MODBUS uses a ‘big-Endian’ representation for addresses and data items. This means that when a numerical quantity larger than a single byte is transmitted, the most significant byte is sent first. При чём зачастую проблема возникает только с величинами размером более одного регистра (float, например), которые оказываются в формате CDAB (вместо предписанного стандартом ABCD, где A - старший байт, а D - младший байт 32хбитного значения).
@simmmr.9040
2 ай бұрын
25:13 «англоязычный мануал, непосредственно созданный самим создателем модбаса» лежит тут и нигде более modbus.org/docs/Modbus_Application_Protocol_V1_1b3.pdf - на видео явно какой-то другой документ.
@mksmmstpnmksmmstpn
Жыл бұрын
Интересный материал, спасибо за разбор
@basilstadnik1342
Жыл бұрын
надо что то с микрофоном решать , материал интересный ............
@mksmmstpnmksmmstpn
Жыл бұрын
Пример того как может выглядеть посылка в случае неправильного подключения (на мастере неправильно подключены data+ и data-) отправляемый запрос от мастера: TX:01 03 01 20 00 01 84 3C принимаемые данные на слейв устройстве: RX:7F 7E 7F FB FD F7 D8
@Raven.Alexander
4 ай бұрын
Отличный материал!
@alex-hw7ym
Ай бұрын
Доброго времени суток. Как насчитывается контрольная сумма CRC
@alexanderskusnov5119
3 ай бұрын
обычно не DUINT, а UDINT
@blogSCB
3 ай бұрын
как контролировать момент внезапного обрыва связи? Тогда когда значения перестают меняться и проблема выясняется слишком поздно.
@roborobot
3 ай бұрын
Приветствуем коллег автоматизаторов! :-) Исходя из нашего, может быть не достаточно широкого опыта для охвата всех ситуаций, ответим таким образом: Как правило со стороны мастера должны быть системные флаги, которые говорят, что связи нет, которые срабатывают на разного рода настройки: - время тайм-аута, если за это время не пришёл ответ, мастер считает, что слэйв не ответил; - количество попыток связи, т.е. если слэйв не ответил на запросы мастера N раз, то должен выставляться флаг «нет связи с конкретным слэйвом» - так же на некоторых слэйвах, таких как например ПЧ или удаленная периферия, есть настройки что должен делать слэйв, если его в заданный интервал времени его не опрашивает мастер. Например, ПЧ может отключить выход, модуль дискретных выходов отключить выходы и т.д.
@blogSCB
3 ай бұрын
@@roborobot так в том и вопрос как мастер контролирует, что слейв не ответил несколько раз и связи нет. Мастеру все равно ответил или нет, он просто перезаписывает значения или не перезаписывает, если ответа нет)) а то что слейв отключится , если его не опрашивают, мастера это не волнует
@alexraylyan9807
3 ай бұрын
@@blogSCB Смотря какой мастер. Давайте разберем этот вопрос на примере ПЛК Омрон СP1L. У него есть системный флаг последовательного порта RS-485 А640.02. В случае если слэйв не ответил мастеру и у нас отработал тайм аут, этот флаг выставится в логическую единицу => задача программиста этот флаг отслеживать и принимать по его срабатыванию решение, что с этим делать. Например если критически важно наличие связи, можно дать команду на остановку всей системы или обесточить что-либо. И далее если мастеру слэйв не ответил N количество раз, он переходит к следующему и т.д., пока опять не дойдет до искомого. Аналогичные флаги должны быть у всех ПЛК различных вендоров. Смотрим их состояние и оцениваем наличие связи, принимаем решение. Аналогично некоторые ОРС сервера имеют так же специальные флаги достоверности получаемых тегов, в скаде так же помимо полезной информации должно оцениваться состояние этих флагов => программист должен самостоятельно описать алгоритм действий, если эти флаги нам говорят об отсутствии ответов.
@gradientasu
3 ай бұрын
Модбас по возможности конечно нужно избегать :-)
@simmmr.9040
2 ай бұрын
@@blogSCB так это проблема мастера, если он игнорирует ситуацию, когда отклик отсутствует - если Вы сами пишете мастера - то всё в Ваших руках, если это стороннее устройство-софт - изучайте документацию ¯\_(ツ)_/¯
@ЕвгенА-и2к
7 ай бұрын
Добрый день. Можно ли омрон поменять на китайский чп не меняя программу в контроллере?
@roborobot
7 ай бұрын
Добрый день! - Вероятность нулевая, в виду того, что каждый вендор, можно сказать, использует свою адресацию + могут отличаться типы регистров (Word, UINT, INT, DINT), порядок следования байтов, а так же битовая маска слов управления и состояния. Но для однозначного ответа, нужно сравнить карту переменных регистров Modbus используемой искомым ПЧ Омрон с картой переменных китайского ПЧ. Если хотите унификации и не зависеть от модели ПЧ, то нужно использовать для управления дискретно, аналоговое задание.
@ЕвгенА-и2к
7 ай бұрын
@@roborobot спасибо
@НикитаЦыбин-н6ж
11 ай бұрын
Добрый день. Спасибо за видео. Не могли бы Вы, пожалуйста, подсказать, как настроить блок NX_ModbusRTU в sysmac studio. Начинающий программист, в сети ничего не нашел подходящего. Мануал прочитал, но не понял.
@roborobot
11 ай бұрын
Добрый день! Комментарии Александра: 1) В архивный телеграмм канал выложен проект Modbus RTU для NX1P2 + плата NX1W-CIF11 (пароль на архив 123) t.me/roborobot_archive/21 2) Суть работы такова нужно: Настроить порт, с которым будешь работать Обязательно очищать буфер данных, перед отправкой команды Modbus_RTU Отправлять команду Modbus_RTU. 3) Рекомендую пользоваться Help. Для вызова достаточно в меню Tools выбрать нужную команду и нажать F1 => в конце описания команды всегда есть рабочий пример. Так же подписывайтесь на телеграмм канал - t.me/roborobot_ru :-)
@НикитаЦыбин-н6ж
11 ай бұрын
@@roborobot спасибо большое. Посмотрю. На телеграмм каналы вчера подписался 😀
@stq72
Жыл бұрын
Адрес=номер -1. А что делать, если номер =0 ?:)
@alexraylyan9807
Жыл бұрын
В этом то и фишка что, адрес регистра может быть нулевым, а номер регистра нет.
@СергейДавыденков-щ3д
Жыл бұрын
@@alexraylyan9807 У меня в инструкции к ПЛК Carel указаны Coil, HRки и прочие - все с нуля. И, допустим, датчики температуры 0, 2, 4, 6 итд. Тот, который имеет номер 2 - откликается по адресу 1, а тот который имеет номер 0 - я не знаю где его искать :)
@ДмитрийОрлов-е3м
Жыл бұрын
@@СергейДавыденков-щ3д попробуйте максимальный адрес в сети) если еще актуально конечно...
@simmmr.9040
2 ай бұрын
@@СергейДавыденков-щ3д почитайте стр.7 спецификации (MODBUS Application Protocol Specification V1.1b3) - и сразу поймёте, в чём дело - проблема в том, что разработчики протокола какого-то лешего сделали различным адрес (начинается с нуля и передаётся непосредственно в линию), и номер (начинающийся с единицы, который, насколько понимаю, должен использоваться в документации и настройках мастера) - по сути они ввели лишнюю сущность в виде номера. 4.4 MODBUS Addressing model The MODBUS application protocol defines precisely PDU addressing rules. In a MODBUS PDU each data is addressed from 0 to 65535. It also defines clearly a MODBUS data model composed of 4 blocks that comprises several elements numbered from 1 to n. In the MODBUS data Model each element within a data block is numbered from 1 to n. Afterwards the MODBUS data model has to be bound to the device application (IEC-61131 object, or other application model). The pre-mapping between the MODBUS data model and the device application is totally vendor device specific.
@MrStyort
11 ай бұрын
Хорошо, но ни чё нового не сказал.
@roborobot
11 ай бұрын
Вы правы, трудно придумать что-то новое для Модбас, который, и один из самых старых протоколов (плюс с физическими линиями всегда есть нюансы) и, в тоже время, один из самых распространенных :-). Но сколько еще людей с ним помучаются! :-)
@simmmr.9040
2 ай бұрын
@@roborobot «Но сколько еще людей с ним помучаются!» - потому что разработчикам спецификации надо руки оторвать вместе с головой - вот даже на видео пример - 30:49 - поля контрольной суммы high order/low order - текст перепутан местами (но сами значения правильные - проверил) - смотрим Figure 12: RTU Message Frame на стр.13 спецификации MODBUS over serial line specification and implementation guide V1.02 - порядок байт контрольной суммы - CRC Low, CRC Hi - зачем было закладывать формат контрольной суммы отличным от формата остальных данных - загадка - но видим, что это сбивает с толку разработчиков и в итоге в их документации получается сбивающая с толку каша.
Пікірлер: 28