Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 23

Тема: Адресация переменных по Modbus

  1. #11
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    Ну-ка обкатаем мою новую программу*, подсунем ей ваш 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.

  2. #12
    Пользователь
    Регистрация
    19.07.2013
    Адрес
    Комсомольск-на-Амуре
    Сообщений
    23

    По умолчанию

    Ув. Петра, хм.... меня тоже несколько раздражает тот факт что я туплю извиняюсь что и вас это коснулось.


    Я так понимаю что если я использую 8 битовые значения я должен писать в поле Register Adress "адрес бита", а если использую 2 и 1 байтовые значения "адрес регистра" ?

    И если следующее модуль будет Float у него будет в поле Register Adress значение 4 ?

    а если за ним будет ещё и 8 битный у него будет в поле Register Adress значение 96 ?

    Adress.png

  3. #13

    По умолчанию

    Цитата Сообщение от Павел Б. Посмотреть сообщение
    Я так понимаю что если я использую 8 битовые значения я должен писать в поле Register Adress "адрес бита", а если использую 2 и 1 байтовые значения "адрес регистра" ?
    Зависит от того, какую функцию Вы используете (поле command). Если Вы используете функцию чтения/записи битов/койлов, то указываете адрес бита/койла, если используете функцию чтения/записи регистра, то указываете адрес регистра.

  4. #14
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,825

    По умолчанию

    Цитата Сообщение от Павел Б. Посмотреть сообщение
    Ув. Петра, хм.... меня тоже несколько раздражает тот факт что я туплю извиняюсь что и вас это коснулось.


    Я так понимаю что если я использую 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/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  5. #15
    Пользователь
    Регистрация
    19.07.2013
    Адрес
    Комсомольск-на-Амуре
    Сообщений
    23

    По умолчанию

    Получилось, для этого выбрал в параметреComand значение Read coils status (0x01)
    а в параметр Register Adress поставил значение 32.


    Попытки занести в параметреComand значение Read input Registr (0x04), а в параметр Register Adress значения 2 , 4, 5 , 6 не приносили результата.... (((

    С вашей помощью задача — решена значения переданы. Помимо общей своей тупизны тупил тем что не "игрался" с параметром Comand спасибо что подсказали.


    Всем спасибо за помощь.

  6. #16

    По умолчанию

    День добрый, уже всю голову сломал, есть два плк 110-60 соединенные по rs-485 загвоздка как у автора темы, один плк - мастер, второй - слейв, вообщем с мастера в слейв данные пишутся, но мастером со слейва не читаются, никак, даже если на слейве делаю всего 1 переменную float в мастере делаю real input, читаю мастером по адресу регистра 0 и ничего не приходит. На слейве изменяю значения на мастере изменения не отображаются. В чем может быть причина.

  7. #17

    По умолчанию

    Вообщем так: поставил вместо 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. Так что иммейте ввиду, я оставил все как есть по принципу работает стабильно да и ладно.

  8. #18

    По умолчанию

    А можно такой же пример для GKR63? или ссылку где можно почитать. не как не разберусь как объявить переменную что бы передать ее на Орс сервер

  9. #19

    По умолчанию

    Добрый день, подскажите, почему переменным не присваивается значение TRUE?
    Изображения Изображения
    • Тип файла: png 1.PNG (9.8 Кб, Просмотров: 28)
    • Тип файла: png 2.PNG (27.2 Кб, Просмотров: 94)

  10. #20

    По умолчанию

    Цитата Сообщение от xrus Посмотреть сообщение
    Добрый день, подскажите, почему переменным не присваивается значение TRUE?
    Добрый день!

    У Вас запущен опрос?
    Похоже, что мастер перезатирает те значения, которым Вы пытаетесь присвоить TRUE.

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Похожие темы

  1. Ответов: 28
    Последнее сообщение: 18.08.2015, 20:39
  2. Ответов: 1
    Последнее сообщение: 14.03.2014, 13:13
  3. Адресация переменных по стандарту МЭК 61131-3
    от DrDWoo в разделе Помощь Разработчикам
    Ответов: 8
    Последнее сообщение: 27.12.2013, 12:32
  4. адресация глобальных переменных
    от Назаров Александр в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 24.12.2009, 12:01
  5. Ограничения по количеству переменных в MODBUS
    от Павел ГОН в разделе ПЛК1хх
    Ответов: 5
    Последнее сообщение: 24.04.2007, 11:53

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •