Показано с 1 по 10 из 22

Тема: ПЛК63+RS485

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #7

    По умолчанию

    Уважаемые специалисты! Помогите разобраться со следующей проблемой.
    ПЛК63-РРРРРР-М пытаюсь соединить с МДВВ по интерфейсу RS485. Протокол Modbus RTU. 9600N1.
    Я воспользовался примерами и написал пробную программу, которая читает состояние регистра дискретных входов(0х33) МДВВ и записывает это состояние в регистр дискретных выходов(0х32) МДВВ.
    В прикреплённом файле prb120708_1 приведён исходный текст отлаженной работоспособной программы. Но имеется несколько вопросов и комментариев.

    1. В примерах программ дан следующий фрагмент кода, открывающий порт
    (*Открываем COM-порт*)
    (*COM_SERVICE1(Enable:=(port_opened=0) , Settings:=Settings , Task:=OPEN_TSK );*)
    COM_SERVICE1(Enable:=TRUE , Settings:=Settings , Task:=OPEN_TSK );
    (*Если COM-порт открыт, то переходим к приему и передачи данных *)
    IF COM_SERVICE1.ready
    THEN
    port_opened:=2;
    ELSE
    COM_SERVICE1(Enable:=(port_opened=0) , Settings:=Settings , Task:=CLOSE_TSK );
    END_IF;

    При таком коде порт у меня не открывается. Для открытия порта использую следующий фрагмент кода

    COM_SERVICE1(Enable:=TRUE , Settings:=Settings , Task:=OPEN_TSK );
    (*Если COM-порт открыт, то переходим к приему и передачи данных *)
    IF COM_SERVICE1.ready
    THEN
    port_opened:=2;
    END_IF;

    2. Библиотечная функция COM_SERVICE1, оказывается, пытается открывать порт только при каждом сотом обращении к ней. В начале этой функции есть следующий текст
    Delay := Delay + 1;
    IF (Delay MOD 100) = 0 THEN ..

    Этот недостаток для моего приложения не является существенным, просто система начнёт работать на 15-20 секунд позже включения питания

    3. Функции
    get04_modbus: MB_RD_INP_REGS; (*функция 04 - чтение параметров типа INT*)
    send16_modbus: MB_WR_REGS; (*функция 16 - запись параметров*)

    используются для чтения и записи параметров в MДВВ.

    Но требуется 4 раза подряд обратиться к функции get04_modbus прежде получить правильный ответ, и требуется 3 раза подряд обратиться к функции send16_modbus прежде получить правильный ответ.
    Это настораживает. Я подсчитал отношение числа запросов к числу правильных ответов. Это отношение оказывается постоянным, значит, эти сбои не являются случайными, а связаны с какой-то моей ошибкой. Прошу ответить тех, кто имеет какие-то соображения на этот счёт.
    Вложения Вложения

Похожие темы

  1. ПЛК63 и RS485
    от Nick_V1 в разделе Помощь Разработчикам
    Ответов: 9
    Последнее сообщение: 14.11.2011, 17:23
  2. СИ-8 RS485
    от afsh в разделе Эксплуатация
    Ответов: 6
    Последнее сообщение: 04.04.2011, 12:45
  3. Usb-rs485
    от Bobilnik в разделе Эксплуатация
    Ответов: 13
    Последнее сообщение: 25.03.2009, 12:02
  4. ПЛК - rs485 - СИ8
    от Максим_Фалалеев в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 16.09.2008, 13:23
  5. Rs485
    от незарегистрированный в разделе ПЛК1хх
    Ответов: 11
    Последнее сообщение: 17.03.2008, 10:56

Ваши права

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