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

Тема: СПК107 не работает ФБ UNM_SerialRequest OwenCommunication

  1. #1

    По умолчанию СПК107 не работает ФБ UNM_SerialRequest OwenCommunication

    Добрый день.
    Ситуация такая:
    Программа на ST.
    Порт открывается OCL.COM_Control.
    передача данных происходит OCL.UNM_SerialRequest, устройство отвечает!
    А дальше OCL.UNM_SerialRequest данные в буфер не принимает выдает ошибку TIME_OUT!
    То есть вообще. Ни при каких
    tTimeout, szExpectedSize, wStopChar.
    Пишет uiResponseSize = 0.

    Хотя на другом порту OCL.MB_SerialRequest работает!

    Вот код.

    // VAR COM3 Master
    abIGM_Req: ARRAY [0..9] OF BYTE;
    abIGM_Res: ARRAY [0..13] OF BYTE;

    iIGM_T: INT;
    iIGM_CO2: INT;

    iDeleyReq: INT:= 0;

    fbComControl3: OCL.COM_Control; // ФБ упр-я COM3
    fb_module_IGM_1: OCL.UNM_SerialRequest; // ФБ опроса уст-ва IGM_1

    iStateCom3: INT; // шаг опроса по порту COM3

    // END_VAR COM3 Master




    ////
    CASE iStateCom3 OF
    0: // открытие порта COM3

    fbComControl3
    (
    xEnable:= TRUE,
    udiComPort:= 3, // RS485-3
    udiBaudrate:=9600,
    udiByteSize:=8,
    eParity:= OCL.COM_PARITY.NONE,
    eStopBit:=OCL.COM_STOPBIT.ONE

    );

    // ИГМ-0171
    // 0x23 0x30 0x31 0x44 0x41 0x54 0x41 0x3f 0x0d 0x0a
    // #01DATA?
    // 30 30 32 36 34 20 30 33 30 35 38 0d
    // 00264 03058
    abIGM_Req[0]:= 16#23;
    abIGM_Req[1]:= 16#30;
    abIGM_Req[2]:= 16#31;
    abIGM_Req[3]:= 16#44;
    abIGM_Req[4]:= 16#41;
    abIGM_Req[5]:= 16#54;
    abIGM_Req[6]:= 16#41;
    abIGM_Req[7]:= 16#3F;
    abIGM_Req[8]:= 16#0D;
    abIGM_Req[9]:= 16#0A;



    IF fbComControl3.xDone THEN
    iStateCom3:=1;
    END_IF

    1: // опрос IGM_1

    fb_module_IGM_1
    (
    xExecute:= TRUE,
    tTimeout:= T#1000MS,
    szExpectedSize:= 0, // разные врианты :=12 , 0
    wStopChar:= 16#000D, // разные врианты :=16#0000, 0
    usiRetry:= 1, // кол-во повторов
    hCom:= fbComControl3.hCom,
    pRequest:= ADR(abIGM_Req),
    szRequest:= SIZEOF(abIGM_Req),
    pResponse:= ADR(abIGM_Res),
    szResponse:= SIZEOF(abIGM_Res)

    );


    iIGM_T:= fb_module_IGM_1.uiResponseSize;

    IF fb_module_IGM_1.xDone OR fb_module_IGM_1.xError THEN
    // после выполнения блока его нужно сбросить
    fb_module_IGM_1(xExecute:= FALSE);
    iIGM_T:= abIGM_Res[0];
    iIGM_CO2:= abIGM_Res[1];

    iStateCom3:= 2;
    END_IF

    2: // опрос EF170_2


    iStateCom3:= 1;



    END_CASE

    ////

    Подскажите что не так.

  2. #2

  3. #3

    По умолчанию

    Подключился параллельно терминалкой и смотрю порт.
    SPK107_Modbus_Master.jpg

  4. #4

    По умолчанию

    А в какой момент UNM_SerialRequest переключается на прием? После отправки 10 -го байта?
    И почему если считает что таймаут вышел не отправляет повторных запросов если usiRetry:= 3 например?

  5. #5

  6. #6

    По умолчанию

    Код опроса датчика выполнялся в действии, которое вызывалось из основной программы (СОМ3()).
    Перенес код опроса в основную программу все заработало!
    Я не очень понимаю как выполняются задачи.

    Спасибо!
    Буду разбираться.

Похожие темы

  1. Библиотека OwenCommunication (релиз версии 3.5.11.7)
    от Евгений Кислов в разделе Библиотеки CODESYS
    Ответов: 5
    Последнее сообщение: 05.03.2024, 11:05
  2. Ответов: 2
    Последнее сообщение: 09.10.2019, 17:38
  3. Переход с СПК107 на СПК107 [М01]
    от eigor_vl в разделе СПК1хх [М01]
    Ответов: 2
    Последнее сообщение: 18.04.2019, 12:15
  4. ПЛК 160. Не работает...
    от Scream в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 31.10.2013, 11:44
  5. Не работает ПД-100
    от Боднар Олег Миколайович в разделе Эксплуатация
    Ответов: 1
    Последнее сообщение: 03.07.2008, 14:40

Ваши права

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