Как передавать произвольные данные по сети из программы PMP20?

Проверено экспертом Опубликовано: 14.03.2025 Обновлено: 11.07.2025 3378 просмотров Помогло 86%

Для обмена посылками произвольного вида служит протокол свободного сокета — сетевой аналог свободного формата на последовательном порту. Отправка выполняется инструкцией S_SEND, приём — инструкцией S_RCV, и обе работают только в паре с инструкциями открытия и закрытия сокета.

Операнды у них одинаковые: первый — номер сокета, второй — адрес локального регистра, откуда берутся или куда кладутся данные, третий — количество данных. Отправка выполняется по нарастающему фронту; приём может выполняться и по фронту, и по обычному условию включения.

Ограничение по объёму жёсткое и определяется размером кэша контроллера: за одну отправку и за один приём проходит 1000 байт. Посылку большего размера придётся резать на части самостоятельно.

Три роли, в которых работает свободный сокет: контроллер сам устанавливает соединение с удалённым сервером; контроллер ждёт подключения клиента; контроллер работает без установления соединения и слушает заданный локальный порт. Роль задаётся операндами инструкции открытия сокета, дальнейшая работа с данными во всех трёх случаях одинакова.

Что остаётся на программе. Контроллер передаёт и принимает сырые байты — разбор посылки, проверка целостности, перевод символов в числа пишутся вручную. Здесь же пригодится поле блока параметров, куда контроллер кладёт фактическое число принятых байт: по нему проверяют, что прибор ответил посылкой ожидаемой длины, а не оборвал передачу.

Типичные потребители такого обмена — весовые терминалы, сканеры, измерительные приборы и системы верхнего уровня со своим форматом посылки.

Прикреплённая документация

Георгий Жуков Георгий Жуков Ведущий инженер

Этот ответ был полезен?

Не нашли ответ?

Инженер сервисной службы ответит на почту. Вопросы, которые повторяются, мы публикуем в базе знаний — без ваших контактов.

Вопрос из раздела Как передавать произвольные данные по сети из программы PMP20?