Мы отправляем, устройство принимает, а затем отвечает нам.
Мы отправляем, устройство принимает, а затем отвечает нам.
ох уж эти программисты... нам это кому? Дедушке Василию на деревню?
ПЛК - отправил
Устроство - Ответило
ищите проблемы в ПЛК. Если ИНОЕ, то пишите подробнее. Как вы убедились что отправка произошла, как убедились что ответ произошел и так далее.
Мы и ищем в ПЛК.
Мы даже меняли порт, но от этого ничего не поменялось.
Отслеживали данные на конце провода с помощью компьютера.
Последний раз редактировалось Стас Ц.; 15.08.2023 в 09:36. Причина: Дополнил
Вот наш протокол. Возможно ли, что он после отправки закрывает порт или не открывает порт приёма?
Код: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:31.
На fbComControl4.xDone генерируется единичный импульс при открытии COM-порта - так что с помощью приведенного выше кода вы отправите на дальномера только один запрос при запуске проекта.
В общем случае вам должно помочь что-то вроде:
Надеюсь, на COM4 вы подключили только дальномер и не пытаетесь опрашивать через него другие устройства.Код: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
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
На COM4 мы больше ничего не опрашиваем.
Ваш код был реализован но к сожалению он не поменялось.
Возможно ли, что в CODESYS надо что-то включить, чтобы ПЛК начал принимать сигналы?
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
Стас Ц
Дальномер случаем не Рифтек?
Если да, то там свой фирменный протокол, и нужен бубен достаточно большого диаметра, что бы плк Овен начали его понимать.
Спасибо за помощь.
Проблема было из-за добавления новой задачи, а также изменения интервала и приоритета текущий задач.
Желательно это всё не трогать тогда и проблем не будет.