Клиент 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. Для обмена с моделью при этом может быть использовать штатный отладочный модуль или же блок типа Удаленный прибор.

Входы

нет

Выходы

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

Формат пакета

Свойства:

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

Параметры

нет