Страница 96 из 131 ПерваяПервая ... 46869495969798106 ... ПоследняяПоследняя
Показано с 951 по 960 из 1306

Тема: CODESYS V3.5. Настройка обмена с другими устройствами (Modbus, ОВЕН, OPC и др.)

  1. #951

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    У вас цель - полностью сделать "правильную" реализацию Modbus TCP с использованием данного ФБ или решить конкретную проблему с вашим конкретным слэйвом с "кривой реализацией" протокола?
    Если второе - то достаточно хардкодом задать нужные запросы и написать примитивный парсер ответов, вычленяющий данные по известным байтовым смещениям.
    Вся нужная для этого информация на вашем скриншоте с Communication Traffic есть.
    Цель - решить проблему с кривым слейвом. Имея готовую "правильную" реализацию Modbus TCP это сделать очень просто - заменить проверку длины ответа (строгое равенство =) на >=.

    Со слейва нужно вытаскивать много данных разными запросами, т.е. нужен полноценный Modbus TCP. Слейв просто лепит везде лишний байт, а так отвечает нормально.

  2. #952

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    В ответе слейва прямо в двух местах вставляются байты обозначающие сколько пакет несёт полезной информации, эмулятор слейва читается без проблем?
    Вопрос только в лишнем байте (последнем), который не дает использовать (предположительно) штатный Modbus TCP / реализацию Modbus TCP в OwenCommunication.

    Утилиты опроса по Modbus (например, Modbus Poll), опрашивают данный слейв, отображают данные, несмотря на некорректные ответы (лишний байт в конце).

  3. #953

  4. #954

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Тогда вам придется реализовать его самостоятельно.
    Мы не распространяем исходники своих библиотек.
    Имелся в виду пример CoDeSys-реализации Modbus TCP с использованием UNM_TcpRequest. Не исходники "правильного" MB_TcpRequest.

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

    По умолчанию

    Цитата Сообщение от vozlov Посмотреть сообщение
    Имелся в виду пример CoDeSys-реализации Modbus TCP с использованием UNM_TcpRequest. Не исходники "правильного" MB_TcpRequest.
    Это синонимичные вещи. MB_TcpRequest построен на базе UNM_TcpRequest.
    Поскольку обычно производители слэйвов не имеют привычки вставлять в ответ лишние байты - то ни у кого не возникало поводов создавать альтернативную open-source реализацию.

  6. #956

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    Ещё раз спрошу, Ваш мастер без проблем опрашивает правильные слейвы. Не сторонние мастера, а что там у Вас плк или панель?
    Да. Мастер (ПЛК200) без проблем опрашивает правильные слейвы штатным драйвером CoDeSyS и блоком MB_TcpRequest библиотекой OwenCommunication.

    Этот слейв оба варианта не могут опросить.

  7. #957

    По умолчанию

    Подскажите, для управления ПЧ AFD-E есть шаблон в котором управление происходит по отправке командного слова и подтверждающий Бит записи
    01.png
    хочу повторить код запроса без шаблона, часть кода есть - это отправка самого командного слова
    Код:
    VAR
       ...
       fbKnopTrig: R_TRIG;
    END_VAR
    
    
    // Проверка привода на готовность
    fbComControl1
    (
    	xEnable     := TRUE,
    	udiComPort  := 5,
    	udiBaudrate := 9600,
    	udiByteSize := 8,
    	eParity     := OCL.COM_PARITY.NONE,
    	eStopBit    := OCL.COM_STOPBIT.ONE
    );
    
    IF fbComControl1.xActive THEN
    	
            fbKnopTrig(CLK := xKnop);
    
    	IF fbKnopTrig.Q THEN
    	   eState := 20;
    	END_IF
    	
    	CASE eState OF
    
                     0: // ожидание команды
    		
    		10: // Опрос состояния AFD-E
    				
    		20: // запуск AFD-E
    		
                    wCmdWord := 22;
    		fbMbSerialRequest.xExecute 	:= TRUE;
    		fbMbSerialRequest.hCom		:= fbComControl1.hCom;
    		fbMbSerialRequest.xIsAsciiMode	:= FALSE;
    		fbMbSerialRequest.usiSlaveId 	:= 15; 		                       // адрес слейва
    		fbMbSerialRequest.eFuncCode	:= OCL.MB_FC.WRITE_SINGLE_REGISTER;    // функция
    		fbMbSerialRequest.uiDataAddr 	:= 4864; 		               // адрес начального запроса
    		fbMbSerialRequest.uiDataCount	:= 1; 		                       // число регистров
    		fbMbSerialRequest.pData	        := ADR(wCmdWord);
    		fbMbSerialRequest.szSize	:= SIZEOF(wCmdWord);
    
                    fbMbSerialRequest();
    
    		// fbMbSerialRequest.xError	:= xError;
    		// fbMbSerialRequest.eError	:= wError;
    		
    				
    		IF fbMbSerialRequest.xDone OR fbMbSerialRequest.xError THEN
    			
    			fbMbSerialRequest(xExecute := FALSE);
                            eState := 0;
    			
    		END_IF
    		
    	END_CASE
    
    END_IF
    а вот куда записывать бит не понятно
    В тех поддержу обращался, но там не поняли что надо и сбросили файл в котором они тестировали подключение.

    02.png03.png04.png

  8. #958

  9. #959

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Аналогом бита записи шаблона является вход xExecute в fbMbSerialRequest.
    В вашем коде аналогом этого бита является xKnop.
    В тех поддержке написали что регистр 4864 всегда должен быть в значении 22
    Т.Е. надо сделать зацикливание в программе я правильно понимаю?
    Код:
    IF fbMbSerialRequest.xDone OR fbMbSerialRequest.xError THEN
    			
    	fbMbSerialRequest(xExecute := FALSE);
            eState := 20;
    			
    END_IF

  10. #960

Страница 96 из 131 ПерваяПервая ... 46869495969798106 ... ПоследняяПоследняя

Похожие темы

  1. Настройка ПР200, управление 3-мя устройствами через RS-485
    от Orbes в разделе Среда программирования OWEN Logic
    Ответов: 20
    Последнее сообщение: 15.05.2017, 16:45
  2. СП3ХХ Пример настройка обмена с ПЛК на CODESYS 2.3
    от Denis_Kay в разделе Панели оператора (HMI)
    Ответов: 6
    Последнее сообщение: 02.03.2017, 15:12
  3. Ответов: 43
    Последнее сообщение: 13.04.2015, 14:05
  4. Универсальная функция для обмена с устройствами OwenIO и всеми любимый LabView.
    от Алексей Крагель в разделе Помощь Разработчикам
    Ответов: 0
    Последнее сообщение: 30.05.2014, 14:38

Ваши права

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