Сервер TCP-IP

| Векторизован |
в палитре на схеме

Блок производит двунаправленный обмен данными по протоколу TCP-IP.

Формат пакета для данного блока, а также блока Клиент TCP-IP следующий (как на приём так и на передачу):

При отправке в SimInTech (для передачи данных в модель, если в ней стоит блок TCP-сервер):
  1. ID команды (4ех байтовый int)
    • cm_Stop = 1; //команда - стоп сервера
    • cm_Exchange = 2; //команда - записать данные на сервер и прочитать данные с сервера
    • cm_ExchangeWait = 3; //команда - дождаться пока не достигнет заданное время и обменяться данными
    • cm_Disconnect = 4; //команда - отсоединение клиента
  2. Модельное время клиента - 8ми байтовое число с плавающей запятой (double).
  3. Размерность посылаемых данных (InBufLen) - 4ех байтовое целое число (суммарное количество чисел в посылке).
  4. Массив чисел типа double размерностью InBufLen (т.е. размер в байтах будет InBufLen⋅8)
При приеме от SimInTech (от модели):
  1. Размерность массива принятых данных cnt (4ех байтовое целое число).
  2. Модельное время сервера (модели) - (8ми байтовое число с плавающей запятой типа double).
  3. Если cnt > 0, то далее считываем массив чисел с плавающей запятой размерностью cnt (т.е. 8⋅cnt байт).
Примечание: если cnt < 0 то это говорит о том, что на стороне клиента произошла ошибка, данные от него скорее всего недостоверны, а соединение в этом случае рекомендуется разорвать.
Можно использовать и более сложный протокол, который реализован для исполнительной системы реального времени NordWind и который подразумевает запрос переменных по именам. Для этого на стороне сервера (контроллера) надо иметь в составе исполнительной среды сервер обмена данными. Исходники его расположены локально по адресу \SimInTech\bin\CodeTemplates\Linux64\GdbServer. Для обмена с моделью при этом может быть использовать штатный отладочный модуль или же блок типа Удаленный прибор.

Входы

  • inport_n - входной порт блока. Число входных портов устанавливается в свойствах блока.

Выходы

нет

Свойства:

  • Количество входов - управление количеством входов;
  • Массив размерностей выходов;
  • Массив начальных значений выходов;
  • Шаг обмена данными – шаг, с которым производится запись и считывание данных в буферы блока;
  • Останов по команде клиента – если флаг установлен, то при команде от клиента расчёт будет остановлен;
  • Интервал ожидания завершения потока – время задержки до завершения потока для клиента;
  • Порт tcp-ip – номер TCP-порта обмена.

Параметры

нет