Показано с 1 по 7 из 7

Тема: Двунаправленная обработка переменных modbus

  1. #1

    По умолчанию Двунаправленная обработка переменных modbus

    сп310 мастер читает регистр из пр. Регистр разделён на две переменные usint(-128..127) чтобы влезть в кол-во доступных переменных пр. Отображаю обработанную макросом psw переменную, а вот как перехватить запись обработкой что то не понимаю. Прошу помощи знатоков.

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

    По умолчанию

    Цитата Сообщение от PavelGO Посмотреть сообщение
    сп310 мастер читает регистр из пр. Регистр разделён на две переменные usint(-128..127) чтобы влезть в кол-во доступных переменных пр. Отображаю обработанную макросом psw переменную, а вот как перехватить запись обработкой что то не понимаю. Прошу помощи знатоков.
    Например так
    Захват-01.png

    здесь байты из регистра 4х512 выделяются в одну пару регистров, например, PSW300 и PSW301,
    а ввод осуществляется в другую пару регистров, например, PSW400 и PSW401

    Захват-02.png

    Цифровые вводы имеют биты уведомления, от которых запускаются ф.области

    Захват-04.png Захват-05.png
    Вложения Вложения
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  3. #3

    По умолчанию

    Следующий вопрос будет, почему нет отрицательных чисел 254 отображается как 254, а не -2. Даже если поставить DEC.

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

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Следующий вопрос будет, почему нет отрицательных чисел 254 отображается как 254, а не -2. Даже если поставить DEC.
    Отрицательные не рассматривал, т.к. "Регистр разделён на две переменные usint"

    ЗЫ.
    Не думаю, что ТС сможет в ОЛ использовать знаковые переменные размером в один байт
    Последний раз редактировалось petera; 22.01.2023 в 13:02.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  5. #5

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    Отрицательные не рассматривал, т.к. "Регистр разделён на две переменные usint"

    ЗЫ.
    Не думаю, что ТС сможет в ОЛ использовать знаковые переменные размером в один байт
    Спасибо. Ошибся с типом. sint конечно же с отрицательными. В ОЛ сначала перевожу во float, в том числе отрицательные. С этим всё в порядке. Вопрос разрулить часть на сп, поскольку с ними не особо работал углубленно.

  6. #6

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Следующий вопрос будет, почему нет отрицательных чисел 254 отображается как 254, а не -2. Даже если поставить DEC.
    Как я понимаю, в макросе нужно смотреть 7й бит и если он тру, выставлять старшие 8 бит в тру. Работает, но нет ли подводных камней, знаток?
    WORD Value=0;
    BYTE B0=0;
    BYTE B1=0;

    BYTE const255=255;
    Read(PLC, 1, MODBUS_RTU_REG_3X, 525, 0, TYPE_WORD, &Value);

    B0=LOBYTE(Value);
    B1=HIBYTE(Value);

    if (B0>127) {
    Value=MAKEWORD(B0,const255);
    }else
    {
    Value=B0;
    }


    PSW[301]=Value;

  7. #7
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,317

    По умолчанию

    Наверное норм.
    Но обычно как-то так:
    PSW[301]=(signed char)LOBYTE(Value);

Похожие темы

  1. Адресация переменных по Modbus
    от Uniqum в разделе ПЛК1хх
    Ответов: 22
    Последнее сообщение: 16.09.2022, 14:16
  2. 10000 переменных modbus
    от lttn в разделе ПЛК (среда MasterSCADA 4D)
    Ответов: 0
    Последнее сообщение: 10.10.2019, 15:05
  3. Ответов: 2
    Последнее сообщение: 05.02.2017, 18:47
  4. Ответов: 21
    Последнее сообщение: 18.04.2015, 14:24
  5. Ответов: 1
    Последнее сообщение: 19.05.2012, 11:21

Ваши права

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