Просмотр полной версии : Подключение не стандартного устройва
При подключении устройства не через стандартный протокол мы смогли отправить на устройство сигнал(протокол был настроен).
Но получить ответ мы не можем, хотя сигнал точно уходит.
Предполагается что закрыт порт приёма сигнала.
Проблема решена всем спасибо за помощь.
возможно вы в программе закрываете порт после отправки своего сообщения?
Явно мы порт не закрываем, возможно по стандарту есть какое-то автоматическое закрытие порта.
Какой протокол вы реализовывали?, устройство на такую же посылку данных с ПК отвечает?
fbComControl1: OCL.COM_Control; // ФБ управления портом COM1
fbComControl4: OCL.COM_Control; // ФБ управления портом COM4
fbMU110_8R_DO: OCL.MB_SerialRequest; // ФБ опроса модуля МУ110-8Р (данный блок рабочий)
fbRS603_DI: OCL.UNM_SerialRequest; // ФБ опроса лазерного дальномера (а этот нет)
При подключение через ПК устройство отвечает.
Сравнивайте посылаемые пакеты, что тут еще можно еще сказать. станьте при помощи ПК на прослушку порта и смотрите, что там у вас посылается
Наш протокол состоит из отправки двух байтового запроса и получения назад 4 байтового ответа.
Уходит 2 байта, 4 байта назад отправляются, но СПК их не принимает.
Я не спрашивал про прием, я спросил а отправляет ли он на самом деле?
Прибор при этом отвечает?
Опять же, я не спрашиваю, принимает ли ПЛК, я спрашиваю отвечает ли при этом устройство?
Мы отправляем, устройство принимает, а затем отвечает нам.
ох уж эти программисты... нам это кому? Дедушке Василию на деревню?
ПЛК - отправил
Устроство - Ответило
ищите проблемы в ПЛК. Если ИНОЕ, то пишите подробнее. Как вы убедились что отправка произошла, как убедились что ответ произошел и так далее.
Мы и ищем в ПЛК.
Мы даже меняли порт, но от этого ничего не поменялось.
Отслеживали данные на конце провода с помощью компьютера.
Вот наш протокол. Возможно ли, что он после отправки закрывает порт или не открывает порт приёма?
fbComControl4: OCL.COM_Control; // ФБ управления портом COM4
fbRS603_DI: OCL.UNM_SerialRequest; // ФБ опроса лазерного дальномера
awAO2: ARRAY [0..1] OF BYTE; // регистры, записывающие в модуль RS603
awAI2: ARRAY [0..3] OF BYTE; // регистры, считанные с модуля RS603
CASE iStateCom4 OF
0: // открытие COM-порта COM4
fbComControl4
(
xEnable := TRUE,
udiComPort := 4,
udiBaudrate := 9600,
udiByteSize := 8,
eParity := OCL.COM_PARITY.EVEN,
eStopBit := OCL.COM_STOPBIT.ONE
);
IF fbComControl4.xDone THEN
iStateCom4 := 1;
END_IF
1: // опрос модуля RS603
awAO2[0] := 16#01;
awAO2[1] := 16#86;
fbRS603_DI
(
xExecute := fbComControl4.xDone,
tTimeout := T#500MS,
usiRetry := 3,
hCom := fbComControl4.hCom,
pRequest := ADR(awAO2),
szRequest := 2,
pResponse := ADR(awAI2),
szResponse := 4,
szExpectedSize := 0,
wStopChar := 16#0000
);
END_CASE
Евгений Кислов
15.08.2023, 10:16
На fbComControl4.xDone генерируется единичный импульс при открытии COM-порта - так что с помощью приведенного выше кода вы отправите на дальномера только один запрос при запуске проекта.
В общем случае вам должно помочь что-то вроде:
1: // опрос модуля RS603
awAO2[0] := 16#01;
awAO2[1] := 16#86;
fbRS603_DI
(
xExecute := TRUE,
tTimeout := T#500MS,
usiRetry := 3,
hCom := fbComControl4.hCom,
pRequest := ADR(awAO2),
szRequest := 2,
pResponse := ADR(awAI2),
szResponse := 4,
szExpectedSize := 0,
wStopChar := 16#0000
);
IF fbRS603_DI.xDone OR fbRS603_DI.xError THEN
fbRS603_DI(xExecute := FALSE);
END_IF
END_CASE
Надеюсь, на COM4 вы подключили только дальномер и не пытаетесь опрашивать через него другие устройства.
На COM4 мы больше ничего не опрашиваем.
Ваш код был реализован но к сожалению он не поменялось.
Возможно ли, что в CODESYS надо что-то включить, чтобы ПЛК начал принимать сигналы?
Евгений Кислов
15.08.2023, 10:52
На COM4 мы больше ничего не опрашиваем.
Ваш код был реализован но к сожалению он не поменялось.
Возможно ли, что в CODESYS надо что-то включить, чтобы ПЛК начал принимать сигналы?
Ничего дополнительно включать не надо.
Обеспечьте удаленный доступ по AeroAdmin - посмотрим, что у вас происходит.
Данные для подключения и ваш контактный телефон пришлите мне на почту или telegram (в подписи).
Стас Ц
Дальномер случаем не Рифтек?
Если да, то там свой фирменный протокол, и нужен бубен достаточно большого диаметра, что бы плк Овен начали его понимать.
Спасибо за помощь.
Проблема было из-за добавления новой задачи, а также изменения интервала и приоритета текущий задач.
Желательно это всё не трогать тогда и проблем не будет.
Powered by vBulletin® Version 4.2.3 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot