Вход

Просмотр полной версии : Проблема реализации нестандартного протокола на RS - 232



Семен Горбунков
11.12.2023, 10:17
Всем добрый день!
Вниvамние, дальше много текста)))
Есть задача настроить взаимодействие контроллера овен СПК 107 М01 и банковского терминала по MDB. Между этими двумя устройствами, есть преобразователь MDB - RS232.
У меня на данный момент был уже опыт реализации такой задачи на ПЛК 110 М02 в среде программирования Codesys 2.3. Теперь есть потребность перейти на среду программирования Codesys 3.5. Так как СПК 107, в данной среде не последнее устройство(возможно перейду на другой контроллер, но в этой среде), есть понимание что нужно использовать библиотеку Serial Communication.
Ознакомившись с описанием библиотеки приступил к написанию кода.
Сначала был написан ФБ открытия закрытия порта.
Пример фБ во вложение (открытие - закрытие порта)
Затем определившись с Алгоритмом отправки команд были написанны лействия на отправку команд и получения ответов.
Пример реализации во вложенние.
На первое дествие, отправки первого сообщения, ответа быть не должно(но на снифере были полученные данные ответа).
А вот на посылке настроект терминала, на запрос, должен прийти ответ. Как раз с этим моментом у меня проблема. Ответы из COM порта не приходят, или я как то не так их пытаюсь получить. Может быть я их пытаюсь принять и переложить не в тот тип данных.
Реализовывать методы отправки и принятия данных пробывал по разном. И положить код в "действия", и единым кейсом, исходя отправляемого сообщения. И открывать/закрывать порт после каждого действия, и не закрывать порт совсем. Во всех попытках Запросы от СПК отправляются, а вот ответов нет на СПК.
Бьюсь над простой задачей уже три дня результата нет, что то делаю не так. Помогите пожалуйста разобраться с получением ответа.

Семен Горбунков
11.12.2023, 10:19
Логи со снифера.
Пример со списанием, и подтверждением того что все прошло успешно
[ 11:12:10:019 > ] 10 - мой запрос на активацию опроса на терминале

[ 11:12:10:096 < ] 30 30 20 0D 0A - ответ считывателя на запрос активации опроса
[ 11:12:10:270 < ] 31 30 20 30 30 0D 0A - ответ считывателя на запрос активации опроса

[ 11:12:15:650 > ] 11 00 03 00 00 00 - Запрос на активацию режима ожидания с указанием того что бы показывалась надпись выбирите товар

[ 11:12:15:739 < ] 30 30 20 0D 0A - ответ терминала на запрос показа
[ 11:12:15:940 < ] 31 30 20 30 31 20 30 33 20 46 46 20 46 46 20 30 31 20 30 30 20 46 41 20 30 44 0D 0A - ответ терминала на запрос показа

Евгений Кислов
11.12.2023, 11:44
Добрый день.
Свяжитесь, пожалуйста, со мной завтра утром (контакты в подписи) - поможет решить вашу задачу.

Семен Горбунков
11.12.2023, 12:01
Хорошо, обязательно с вами свяжусь.
Для полного удобства, уточните пожалуйста удобное для вас время. И telegram для связи подойдет?

Евгений Кислов
11.12.2023, 12:09
Хорошо, обязательно с вами свяжусь.
Для полного удобства, уточните пожалуйста удобное для вас время. И telegram для связи подойдет?

Чем раньше - тем удобнее. Я доступен примерно с 6:00 по московскому времени.
Телеграм отлично подойдет.

Семен Горбунков
11.12.2023, 15:04
Разобрался с проблемой.
Для корректного получения ответа(или вообще любого ответа) необходимо было наследовать показания с указателя, нужного типа данных. Как только это прописал, сразу начал получать ответы на все сообщения.
Евгений, вам большое спасибо, за предоставление возможности в помощи.
Ну а мой опыт может быть кому то пригодится.

Семен Горбунков
11.12.2023, 15:07
Если очень грубо, то вот так....