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

Тема: PLC210 - опрос 2ТРМ1 по Modbus

  1. #1

    По умолчанию PLC210 - опрос 2ТРМ1 по Modbus

    Доброго дня!
    Уже несколько дней бьюсь над простейшей задачей - опросить 2ТРМ1 (свежий, новый) с ПЛК210.
    Пересмотрел все видео по теме, читал документацию - не работает. В ответ всегда тайм-аут. ТРМ рабочий, его опросил с компа через преобразователь без проблем. На ПЛК пробовал оба интерфейса. Светодиод RS на ТРМ мигает в момент запроса и всё.
    Версия OCL 3.5.11.7.
    Настройки на трм: rtu, 10, 9.6, 8n1.
    Сделал отдельный чистый проект, там только код для опроса:
    Код:
    PROGRAM PLC_PRG
    VAR
    	iStateCOM: BOOL := 0;
    	fbComControl: OCL.COM_Control; // ФБ настройки и открытия порта COM
    	fbMBRead: OCL.MB_SerialRequest;
    	arrAI1: ARRAY [0..1] OF WORD;  
    	VAL: REAL;
    	iError: INT := 0;
    END_VAR
    Код:
    IF NOT iStateCOM THEN
    	fbComControl
    	(
    		xEnable := TRUE,
    		udiComPort := 5,
    		udiBaudrate := 9600,
    		udiByteSize := 8,
    		eParity := OCL.COM_PARITY.NONE,
    		eStopBit := OCL.COM_STOPBIT.ONE
    	);
    	IF fbComControl.xDone THEN
    		iStateCOM := 1;
    	END_IF
    END_IF
    IF iStateCom THEN
    	fbMBRead
    	(
    		xExecute := fbComControl.xActive,
    		tTimeout := T#200MS,
    		usiRetry := 0,
    		hCom := fbComControl.hCom,
    		xIsAsciiMode := FALSE ,
    		usiSlaveId := 10,
    		eFuncCode := OCL.MB_FC.READ_HOLDING_REGISTERS,
    		uiDataAddr := 4105,
    		uiDataCount := 2,
    		pData := ADR(arrAI1),
    		szSize := SIZEOF(arrAI1)
    	);
    	IF fbMBRead.xDone OR fbMBRead.xError THEN
    		iError := fbmbread.eError;
    		VAL := OCL.WORD2_TO_REAL(arrAI1[0], arrAI1[1], FALSE);
    		fbMBRead(xExecute := FALSE);
    	END_IF
    END_IF
    Прошу помочь!

  2. #2

    По умолчанию

    Код:
    PROGRAM PLC_PRG
    VAR
    	iStateCOM: INT := 0;
    	fbComControl: OCL.COM_Control; // ФБ настройки и открытия порта COM
    	fbMBRead: OCL.MB_SerialRequest;
    	arrAI1: ARRAY [0..1] OF WORD;  
    	VAL: REAL;
    	iError: INT := 0;
    END_VAR
    Код:
    CASE iStateCOM OF
    0:
            fbComControl
    	(
    		xEnable := TRUE,
    		udiComPort := 5,
    		udiBaudrate := 9600,
    		udiByteSize := 8,
    		eParity := OCL.COM_PARITY.NONE,
    		eStopBit := OCL.COM_STOPBIT.ONE
    	);
            IF fbComControl.xError THEN
    		iStateCOM := 2;
                    fbComControl(xEnable := FALSE);
    	END_IF
    	IF fbComControl.xDone THEN
    		iStateCOM := 1;
    	END_IF
    
    1:
    	fbMBRead
    	(
    		xExecute := fbComControl.xActive,
    		tTimeout := T#200MS,
    		usiRetry := 0,
    		hCom := fbComControl.hCom,
    		xIsAsciiMode := FALSE ,
    		usiSlaveId := 10,
    		eFuncCode := OCL.MB_FC.READ_HOLDING_REGISTERS,
    		uiDataAddr := 4105,
    		uiDataCount := 2,
    		pData := ADR(arrAI1),
    		szSize := SIZEOF(arrAI1)
    	);
    	IF fbMBRead.xDone OR fbMBRead.xError THEN
    		iError := fbmbread.eError;
    		VAL := OCL.WORD2_TO_REAL(arrAI1[1], arrAI1[0], FALSE);
    		fbMBRead(xExecute := FALSE);
                    iStateCOM := 2;
    	END_IF
    2:
                    iStateCOM := 0;
    END_CASE

  3. #3

    По умолчанию

    Я из уважения попробовал этот вариант, но он ожидаемо также не работвет. Кроме того, в нём есть ошибка, из-за которой он выполняется один раз и потом никогда не выходит из iStateCom=0. В последнем присваивании его надо iStateCOM := 1, тогда запросы повторяются.

  4. #4

    По умолчанию

    Цитата Сообщение от ScreamerXXI Посмотреть сообщение
    Я из уважения попробовал этот вариант, но он ожидаемо также не работвет. Кроме того, в нём есть ошибка, из-за которой он выполняется один раз и потом никогда не выходит из iStateCom=0. В последнем присваивании его надо iStateCOM := 1, тогда запросы повторяются.
    Если не работает, то проблема либо в неправильном номере порта, либо в настройках RS485. Ещё тайм аут можно добавить до 500-1000 мс.
    Последний раз редактировалось kondor3000; 08.12.2024 в 19:19.

  5. #5

    По умолчанию

    Еслиб дело было в неверном номере порта, ТРМ бы не зажигал диод обмена данными по RS.
    таймаут итак 200, куда еще больше?

  6. #6

    По умолчанию

    Цитата Сообщение от ScreamerXXI Посмотреть сообщение
    Еслиб дело было в неверном номере порта, ТРМ бы не зажигал диод обмена данными по RS.
    таймаут итак 200, куда еще больше?
    Код у вас рабочий, только поменял регистры в массиве наоборот. 1 Проверка опроса.jpg
    Так же как и рабочий код Николай Суриков, с исправлением iStateCOM := 1 в конце. Сборка из массива у него правильная.
    Проверял на ПЛК слейве, на скорости 115200, а вот для скорости 9600 тайм аут может быль слишком маленький.
    Последний раз редактировалось kondor3000; 08.12.2024 в 19:52.

  7. #7

    По умолчанию

    Попробуйте опрашивать регистр 2, вместо 4105.

  8. #8

    По умолчанию

    Можно попробовать комп опросить с ПЛК
    Можно попробовать стандартной конфигурацией опросить
    Может резистор согласующий у ПЛК отключен
    Может не удален интерфейс из дерева проекта

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

    По умолчанию

    ScreamerXXI, если вопрос еще актуален - пожалуйста, подготовьте доступ по AnyDesk и напишите мне в телеграм (см. в подписи) или на support@owen.ru

  10. #10

    По умолчанию

    Большое человеческое спасибо Евгению, с ним за 15 минут нашли в чем было дело - у меня время цикла задачи, в которой был размещен код опроса Модбас, было 500 мс, а для нормальной работы требуется сильно меньше (20 мс всё отлично работает).
    Всем спасибо за участие, однако гадание на кофейной гуще вообще не помогло, а помог подход техподдержки (подключиться и проверить онлайн все параметры, влияющие на процесс).

Похожие темы

  1. PLC210-04. RETAIN. AB-энкодер
    от Александр ! в разделе ПЛК2хх
    Ответов: 2
    Последнее сообщение: 21.08.2024, 19:58
  2. PLC210 + OPC UA. проблема с переменными 4-20
    от VanoKing в разделе ПЛК2хх
    Ответов: 5
    Последнее сообщение: 12.08.2022, 13:03
  3. SDK owen-openwrt PLC210
    от SanSanich в разделе Помощь Разработчикам
    Ответов: 1
    Последнее сообщение: 26.10.2020, 20:44
  4. Ответов: 4
    Последнее сообщение: 18.09.2012, 21:16

Ваши права

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