Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12

Тема: Опрос Регистратора РМТ39 ("Elemer)

  1. #1

    По умолчанию Опрос Регистратора РМТ39 ("Elemer)

    Здравствуйте. Кто может помочь с реализацией опроса регистратора РМТ39DM производства Элемер с контроллера ОВЕН ПЛК210-01? Необходимо вывести данные в СКАДу. Вариант с установкой OPC-сервера на комп уже отработал. Но хочется обойтись без дополнительного оборудования и прокладки кабелей.

  2. #2
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,595

    По умолчанию

    Цитата Сообщение от Андрей_ТМЗ Посмотреть сообщение
    Здравствуйте. Кто может помочь с реализацией опроса регистратора РМТ39DM производства Элемер с контроллера ОВЕН ПЛК210-01? Необходимо вывести данные в СКАДу. Вариант с установкой OPC-сервера на комп уже отработал. Но хочется обойтись без дополнительного оборудования и прокладки кабелей.
    Добрый день.
    Чтобы реализовать опрос - нужно запросить у Элемер протокол обмена данного прибора.

  3. #3

    По умолчанию

    Опрашиваю по протоколу RMTA.
    Вложения Вложения

  4. #4
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,595

    По умолчанию

    Раз описание протокола есть (и он довольно простой) - то можно воспользоваться этим документом и реализовать его по аналогии с приведенным там примером DCON:
    https://ftp.owen.ru/CoDeSys3/11_Docu...cols_v.3.0.pdf

  5. #5

    По умолчанию

    Спасибо за подсказки. Не знал с чего начать. Буду пробовать писать протокол. По результату отпишусь.

  6. #6

    По умолчанию

    Здравствуйте. Благодаря EFrol и Евгению Кислову удалось написать протокол обмена регистратора РМТ39DM фирмы Элемер с ПЛК ОВЕН. Точнее удалось отправить корректный запрос, получить ответ и вытащить из него значение температуры в формате REAL. Но возник следующий вопрос: прибор 6-ти канальный, запрос сразу шести каналов у меня не получился. В связи с этим через оператор CASE были составлены запросы для всех шести каналов (Листинг прилагается). Каналы опрашиваются и значения записываются в массив, НО при опросе на половину секунды значение в канале меняется на значение из предыдущего канала. Не могу понять почему. Если необходимо видео, то чуть позже приложу. Также прилагаю полный архив проекта (может кому-то ещё понадобится).

    PROGRAM DCON_PRG_OCL
    VAR
    // ФБ открытия COM-порта
    fbComControl: OCL.COM_Control;
    // ФБ для опроса устройств по протоколу DCON
    fbDconMaster: DCON_MASTER_OCL;
    // номер опрашиваемого канала для запроса Elemer_RMT39DM_READ_CHANNEL
    uiAiChannelNumber: UINT;
    // значение канала
    rAiChannelValue: REAL;
    // массив значений всех каналов модуля
    arAiChannelsValues: ARRAY [1..6] OF REAL;
    // ответ на запрос USER_DEFINED (без какой-либо обработки)
    sUserDefinedResponse: STRING;
    // таймер задержки между запросами
    fbPollDelay: TON;
    // текущий обрабатываемый запрос
    eDconParam: DCON_PARAMS := DCON_PARAMS.Elemer_RMT39DM_READ_CHANNEL_1;

    wAiChannelsValues: ARRAY [0..11] OF WORD;
    fbAiChannelsValues1 : ocl.real_to_word2;
    fbAiChannelsValues2 : ocl.real_to_word2;
    fbAiChannelsValues3 : ocl.real_to_word2;
    fbAiChannelsValues4 : ocl.real_to_word2;
    fbAiChannelsValues5 : ocl.real_to_word2;
    fbAiChannelsValues6 : ocl.real_to_word2;

    END_VAR

    VAR CONSTANT
    // задержка между запросами
    c_tPollDelay: TIME := T#1S;
    END_VAR


    ================================================== =======================

    // открытие COM-порта
    fbComControl
    (
    xEnable := TRUE,
    udiComPort := 2,
    udiBaudrate := 9600,
    udiByteSize := 8,
    eParity := OCL.COM_PARITY.NONE,
    eStopBit := OCL.COM_STOPBIT.ONE
    );

    // код опроса
    IF fbComControl.xActive THEN

    CASE eDconParam OF

    // опрос конкретного канала по его номеру
    DCON_PARAMS.Elemer_RMT39DM_READ_CHANNEL_1:
    uiAiChannelNumber := 1;
    fbDconMaster
    (
    xExecute := TRUE,
    tTimeout := T#400MS,
    hCom := fbComControl.hCom,
    eParam := eDconParam,
    usiDeviceAddr := 8,
    // номер канала
    pRequestData := ADR(uiAiChannelNumber),
    szRequestData := SIZEOF(uiAiChannelNumber),
    //
    pResponseData := ADR(rAiChannelValue),
    szResponseData := SIZEOF(rAiChannelValue),
    uiChannelNumber := uiAiChannelNumber
    );
    arAiChannelsValues[uiAiChannelNumber] := rAiChannelValue;
    // задержка, сброс блока и переход к следующему запросу
    prvDelayAndSwitchToNextRequest(dcon_params.Elemer_ RMT39DM_READ_CHANNEL_2);

    DCON_PARAMS.Elemer_RMT39DM_READ_CHANNEL_2:
    uiAiChannelNumber := 2;
    fbDconMaster
    (
    xExecute := TRUE,
    tTimeout := T#400MS,
    hCom := fbComControl.hCom,
    eParam := eDconParam,
    usiDeviceAddr := 8,
    // номер канала
    pRequestData := ADR(uiAiChannelNumber),
    szRequestData := SIZEOF(uiAiChannelNumber),
    //
    pResponseData := ADR(rAiChannelValue),
    szResponseData := SIZEOF(rAiChannelValue)
    );
    arAiChannelsValues[uiAiChannelNumber] := rAiChannelValue;
    // задержка, сброс блока и переход к следующему запросу
    prvDelayAndSwitchToNextRequest(dcon_params.Elemer_ RMT39DM_READ_CHANNEL_3);

    DCON_PARAMS.Elemer_RMT39DM_READ_CHANNEL_3:
    uiAiChannelNumber := 3;
    fbDconMaster
    (
    xExecute := TRUE,
    tTimeout := T#400MS,
    hCom := fbComControl.hCom,
    eParam := eDconParam,
    usiDeviceAddr := 8,
    // номер канала
    pRequestData := ADR(uiAiChannelNumber),
    szRequestData := SIZEOF(uiAiChannelNumber),
    //
    pResponseData := ADR(rAiChannelValue),
    szResponseData := SIZEOF(rAiChannelValue)
    );
    arAiChannelsValues[uiAiChannelNumber] := rAiChannelValue;
    // задержка, сброс блока и переход к первому запросу
    prvDelayAndSwitchToNextRequest(dcon_params.Elemer_ RMT39DM_READ_CHANNEL_4);

    DCON_PARAMS.Elemer_RMT39DM_READ_CHANNEL_4:
    uiAiChannelNumber := 4;
    fbDconMaster
    (
    xExecute := TRUE,
    tTimeout := T#400MS,
    hCom := fbComControl.hCom,
    eParam := eDconParam,
    usiDeviceAddr := 8,
    // номер канала
    pRequestData := ADR(uiAiChannelNumber),
    szRequestData := SIZEOF(uiAiChannelNumber),
    //
    pResponseData := ADR(rAiChannelValue),
    szResponseData := SIZEOF(rAiChannelValue)
    );
    arAiChannelsValues[uiAiChannelNumber] := rAiChannelValue;
    // задержка, сброс блока и переход к первому запросу
    prvDelayAndSwitchToNextRequest(dcon_params.Elemer_ RMT39DM_READ_CHANNEL_5);

    DCON_PARAMS.Elemer_RMT39DM_READ_CHANNEL_5:
    uiAiChannelNumber := 5;
    fbDconMaster
    (
    xExecute := TRUE,
    tTimeout := T#400MS,
    hCom := fbComControl.hCom,
    eParam := eDconParam,
    usiDeviceAddr := 8,
    // номер канала
    pRequestData := ADR(uiAiChannelNumber),
    szRequestData := SIZEOF(uiAiChannelNumber),
    //
    pResponseData := ADR(rAiChannelValue),
    szResponseData := SIZEOF(rAiChannelValue)
    );
    arAiChannelsValues[uiAiChannelNumber] := rAiChannelValue;
    // задержка, сброс блока и переход к первому запросу
    prvDelayAndSwitchToNextRequest(dcon_params.Elemer_ RMT39DM_READ_CHANNEL_6);

    DCON_PARAMS.Elemer_RMT39DM_READ_CHANNEL_6:
    uiAiChannelNumber := 6;
    fbDconMaster
    (
    xExecute := TRUE,
    tTimeout := T#400MS,
    hCom := fbComControl.hCom,
    eParam := eDconParam,
    usiDeviceAddr := 8,
    // номер канала
    pRequestData := ADR(uiAiChannelNumber),
    szRequestData := SIZEOF(uiAiChannelNumber),
    //
    pResponseData := ADR(rAiChannelValue),
    szResponseData := SIZEOF(rAiChannelValue)
    );
    arAiChannelsValues[uiAiChannelNumber] := rAiChannelValue;
    // задержка, сброс блока и переход к первому запросу
    prvDelayAndSwitchToNextRequest(dcon_params.Elemer_ RMT39DM_READ_CHANNEL_1);
    END_CASE
    fbAiChannelsValues1(rInput := arAiChannelsValues[1], xSwapBytes := FALSE, wOutput1 => wAiChannelsValues[0], wOutput2 => wAiChannelsValues[1]);
    fbAiChannelsValues2(rInput := arAiChannelsValues[2], xSwapBytes := FALSE, wOutput1 => wAiChannelsValues[2], wOutput2 => wAiChannelsValues[3]);
    fbAiChannelsValues3(rInput := arAiChannelsValues[3], xSwapBytes := FALSE, wOutput1 => wAiChannelsValues[4], wOutput2 => wAiChannelsValues[5]);
    fbAiChannelsValues4(rInput := arAiChannelsValues[4], xSwapBytes := FALSE, wOutput1 => wAiChannelsValues[6], wOutput2 => wAiChannelsValues[7]);
    fbAiChannelsValues5(rInput := arAiChannelsValues[5], xSwapBytes := FALSE, wOutput1 => wAiChannelsValues[8], wOutput2 => wAiChannelsValues[9]);
    fbAiChannelsValues6(rInput := arAiChannelsValues[6], xSwapBytes := FALSE, wOutput1 => wAiChannelsValues[10], wOutput2 => wAiChannelsValues[11]);
    END_IF
    Вложения Вложения

  7. #7

    По умолчанию

    К сожалению, это глюк самого РМТ. У меня были моменты, когда каналы менялись местами. Помогал только сброс питания. Поэтому заменили на безбумажный РМТ19.

  8. #8

    По умолчанию

    Цитата Сообщение от EFrol Посмотреть сообщение
    К сожалению, это глюк самого РМТ. У меня были моменты, когда каналы менялись местами. Помогал только сброс питания. Поэтому заменили на безбумажный РМТ19.
    Спасибо. Но заменить пока не вариант. Может подскажете как этот эффект сгладить? При опросе контроллера через ОРС этот эффект происходит ещё реже.

  9. #9

    По умолчанию

    Полностью сгладить не получилось. Увеличил период между опросами на максимально возможную для процесса величину - эффект все равно проявлялся раз в месяц (даже через родной OPC).

  10. #10

    По умолчанию

    Спасибо. Будем как-то с этим жить.

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. Ответов: 2
    Последнее сообщение: 22.04.2020, 19:53
  2. Опрос "Эргомера 126" с ПЛК 100 по RS485
    от Sau-alex в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 23.03.2018, 19:05
  3. Групповое чтение ПЛК100 из Elemer EL-4019
    от Knive87 в разделе ПЛК1хх
    Ответов: 11
    Последнее сообщение: 04.11.2015, 11:22
  4. Elemer ИРТ5501
    от The-Boss в разделе Master SCADA 3
    Ответов: 13
    Последнее сообщение: 16.04.2015, 15:19

Ваши права

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