Читайте http://ru.wikipedia.org/wiki/Modbus
С булевыми (битами, флагами) работают функции модбаса 1,2, 5 и 15,а 03 функция работает с регистрами, т.е. 2 байтами
Читайте http://ru.wikipedia.org/wiki/Modbus
С булевыми (битами, флагами) работают функции модбаса 1,2, 5 и 15,а 03 функция работает с регистрами, т.е. 2 байтами
Можно вот так:
оказывается в документе http://www.owen.ru/uploads/re_rp_sp200.pdf есть пункт 4.1.7.2.2 в котором доступно все написано, чего шум то поднимать![]()
Работайте не с битами, а с регистрами, будет проще.
Спасибо всем за помощь!
Только вот не стыкуются переменные в моей программе.
Программа написана на языке "Функциональные схемы", поэтому сейчас использую элемент преобразования "PACK".
а зачем паковать, если памяти много можно сделать BOOL_TO_WORD и получаете регистр с двумя значениями 0 или 1
Вот, есть повод спросить. Как вы думаете, если действительно памяти в десятки раз больше, чем требуется - есть ли смысл работать с однобайтными переменными? Процессор ПЛК100 - как-то различает, скажем, BYTE и WORD при обработке?
Я в одном проектике взял да и сделал абсолютно все переменные двухбайтными. Но поисследовать, есть ли ухудшение быстродействия - не стало времени. Увезли игрушку
Можно пойти и дальше - а может все целочисленные переменные привести к DINT? Хотя, ИМХО, все же должны быть разные комадны для 8- и 32-разрядных операндов...
ПЛК100 имеет 32-х разрядный RISC-процессор, это означает что за один такт процессора можно выполнить инструкцию что с одним разрядом, что с 16-ю, скорость выполнения будет одинакова
не путайте с многоядерностью процессоров, за один такт вы выполните только одну инструкцию а будет это бит или 2-х байтное слово уже не важно