Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Ну-ка обкатаем мою новую программу*, подсунем ей ваш slave.pro:
mbimp.png
Первая цифра это номер регистра, если что. В мастере придётся делать не 4×8 bit, а 2×16 bit (то есть 2×'2 byte', оно же register input module), чтобы всё получилось прочитать. И будет примерно так:
Register input module (register address 0)
Register input module (register address 1)
Real input module (register address 2)
К сожалению, двухбайтовые узлы не отображаются в конфигурации поразрядно (petera знает, как это обойти, но я умоляю его не показывать в этой теме), поэтому обращаться к отдельным битам этих register input module придётся из POU.
Ув. Петра, хм.... меня тоже несколько раздражает тот факт что я туплю извиняюсь что и вас это коснулось.
Я так понимаю что если я использую 8 битовые значения я должен писать в поле Register Adress "адрес бита", а если использую 2 и 1 байтовые значения "адрес регистра" ?
И если следующее модуль будет Float у него будет в поле Register Adress значение 4 ?
а если за ним будет ещё и 8 битный у него будет в поле Register Adress значение 96 ?
Adress.png
для вашей картинке -да у последнего 8 битного будет в поле Register Adress значение 96.
Причем в этом поле "96" относится именно к первому биту модуля, у последнего (восьмого)107.
Т.е. для 8-битных модулей Вы указываете адрес(номер) первого бита в группе из восьми.
Самое интересное, что для этой 8-битной группы можно указать адрес бита с любого числа, не обязательно кратного 8, например 9 или 11 и любого другого. Естественно, что адреса последующих в группе бит будут иметь (10,11,12,13,14,15,16) или (12,13,14,15,16,17,18). Конечно первая последовательность частично попадет в 1 регистр Word, а именно 16 бит будет эквивалентен нулевому разряду 1 регистра Word.
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Получилось, для этого выбрал в параметреComand значение Read coils status (0x01)
а в параметр Register Adress поставил значение 32.
Попытки занести в параметреComand значение Read input Registr (0x04), а в параметр Register Adress значения 2 , 4, 5 , 6 не приносили результата.... (((
С вашей помощью задача — решена значения переданы. Помимо общей своей тупизны тупил тем что не "игрался" с параметром Comand спасибо что подсказали.
Всем спасибо за помощь.
День добрый, уже всю голову сломал, есть два плк 110-60 соединенные по rs-485 загвоздка как у автора темы, один плк - мастер, второй - слейв, вообщем с мастера в слейв данные пишутся, но мастером со слейва не читаются, никак, даже если на слейве делаю всего 1 переменную float в мастере делаю real input, читаю мастером по адресу регистра 0 и ничего не приходит. На слейве изменяю значения на мастере изменения не отображаются. В чем может быть причина.
Вообщем так: поставил вместо ASCII RTU удалось получить переменную WORD, однако real упорно не считывался, плюс ко всему начал жестко тупить обмен данных по rs485 на том слоте у меня еще висел четырехканальный модуль ввода тензодатчиков, в итоге законнектил оба контроллера по rs232, а все остальное оборудование оставил на rs485, но real так прочитать и не смог пришлось преобразовывать в int затем в word после чего передавать как два байта, а получать как input register. Для меня это было не критично меня целые числа устраивали. С адресацией творилась какая-то ерунда у меня были в слейве у меня были два ворда которые я писал мастером по адресам 0 и 1 соответственно, далее у меня был float который я хотел прочитать по адресу 2 модулем real input, однако у меня ничего так и не вышло, далее в слейве у меня был float который я успешно писал из мастера модулем real output по адресу 5!!! как так хз, однако оно работает и успешно пишет и дробные отрицательные числа в 5 адрес хотя по идее должно писаться по четвертому адресу, т.к. 0 регистр - word, 1 - word, 2-3 - float который я так и не считал, 4-5 должен быть float, однако он писался по адресу 5, а по 6 адресу я успешно считывал то число которое я хотел считывать из 2 регистра в формате real, но после преобразований считал как целочисленное в формате word, пробовал вывести переменную float в конце но получал неправильный вид. Вот как-то так, долго разговаривал с техподдержкой пришли к выводу что глюк с адресацией памяти надо менять прошивку контроллера у меня была 2.14.0, а последняя 2.15.9. Так что иммейте ввиду, я оставил все как есть по принципу работает стабильно да и ладно.
Добрый день, подскажите, почему переменным не присваивается значение TRUE?