Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 17 из 17

Тема: помогите разобраться с universal devise ModBus

  1. #11

    По умолчанию

    Почему то не работает
    Screenshot_11.png
    команда Read Holding Register, контроллер ПЛК110

  2. #12

    По умолчанию

    Делаю так:
    IF q_MbReadCmd=16#00 THEN
    q_MbReadCmd:=16#FF;
    ELSE
    q_MbReadCmd:=16#00;
    END_IF;

    Делал и в ручном режиме - в Last Addr и Last Err стоит "0"

  3. #13

    По умолчанию

    Цитата Сообщение от xapymam6ypoji Посмотреть сообщение
    Делаю так:
    IF q_MbReadCmd=16#00 THEN
    q_MbReadCmd:=16#FF;
    ELSE
    q_MbReadCmd:=16#00;
    END_IF;

    Делал и в ручном режиме - в Last Addr и Last Err стоит "0"
    Всё верно за исключением добавленного подэлемента.
    Нужно добавить Register input module State.
    Инженер по продуктам «ПЛК и модули»
    e-mail: i.masterenko@owen.ru | skype: i.masterenko_owen

  4. #14

    По умолчанию

    Спасибо. Работает. Единственный момент - в A69_RdCmd нужно записывать 0xFF два раза, как следует из руководства пользователя Овен ПЛК 110 М02. Т.е. для постоянного опроса работает следующая конструкция:
    IF A69_RdCmd =16#00 THEN
    A69_RdCmd :=16#FF;
    ELSE
    A69_RdCmd :=16#00;
    END_IF;
    Screenshot_12.png

  5. #15
    Пользователь
    Регистрация
    21.05.2018
    Адрес
    Белгород
    Сообщений
    3

    По умолчанию

    Подскажите пожалуйста будет работать следующая конструкция? В UMD WORK MODE стоит BY POLL TIME. В нем добавлен REAL OUTPUT MODULE STATE. Мне нужно, что бы модуль опрашивался постоянно, а вот значение одного регистра записывалось только по нажатию кнопки. В коде нажатия кнопки будет прописано:
    IF prob<>etalon_ud8 THEN
    tarir1:=etalon_ud8;
    command1:=50700;
    IF write1=16#00 THEN
    write1 :=16#FF;
    ELSE
    write1 :=16#00;
    END_IF;
    END_IF;
    пример.png
    Последний раз редактировалось 31nick; 28.07.2018 в 00:47.

  6. #16

    По умолчанию

    Цитата Сообщение от 31nick Посмотреть сообщение
    Подскажите пожалуйста будет работать следующая конструкция? В UMD WORK MODE стоит BY POLL TIME. В нем добавлен REAL OUTPUT MODULE STATE. Мне нужно, что бы модуль опрашивался постоянно, а вот значение одного регистра записывалось только по нажатию кнопки. В коде нажатия кнопки будет прописано:
    IF prob<>etalon_ud8 THEN
    tarir1:=etalon_ud8;
    command1:=50700;
    IF write1=16#00 THEN
    write1 :=16#FF;
    ELSE
    write1 :=16#00;
    END_IF;
    END_IF;
    пример.png
    Нет, такая конструкция работать не будет.
    Добавьте 2 UMD:
    1 - режим By Poll Time - регистры на чтения,
    2 - режим By value Change - регистры на запись.

    By value Change - однократно генерирует запрос устройству, когда новое значение не равно предыдущему.

    Пример
    _examplePLC110_30 v2.pro
    Инженер по продуктам «ПЛК и модули»
    e-mail: i.masterenko@owen.ru | skype: i.masterenko_owen

  7. #17
    Пользователь
    Регистрация
    21.05.2018
    Адрес
    Белгород
    Сообщений
    3

    По умолчанию

    Цитата Сообщение от Мастеренко Иван Посмотреть сообщение
    Нет, такая конструкция работать не будет.
    Добавьте 2 UMD:
    1 - режим By Poll Time - регистры на чтения,
    2 - режим By value Change - регистры на запись.

    By value Change - однократно генерирует запрос устройству, когда новое значение не равно предыдущему.

    Пример
    _examplePLC110_30 v2.pro
    Спасибо за ответ. Вариант как предлагаете Вы, реализовал вчера. Но на форуме наткнулся на подобную тему http://www.owen.ru/forum/showthread.php?t=2060 из нее понял, что нужно писать FF и FE не в цикле, а единично только при необходимости старта (FF) и остановки (FE) обмена. И все заработало, как я изначально хотел. пример.png
    Пример кода:
    IF tar1_ud8=1 THEN
    IF T_tarir.Q=0 AND T_tarir.ET=T#0S THEN
    tarir1:=etalon1_ud8;
    cmd_tarir1:=255;
    command1:=50700;
    T_tarir(IN:=1,PT:=T#5S);
    END_IF;
    IF T_tarir.Q=0 AND T_tarir.ET=T#5S THEN
    cmd_tarir1:=254;
    command1:=43948;
    END_IF;
    IF err_modul1=1 THEN
    command1:=0;
    T_tarir.IN:=0;
    tar1_ud8:=0;
    END_IF;
    END_IF;
    Последний раз редактировалось 31nick; 31.07.2018 в 08:54.

Страница 2 из 2 ПерваяПервая 12

Ваши права

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