exponenta event banner

Работа с различными типами данных

Преобразование между типами данных MATLAB и типами данных вариантов COM

Стандарт доступа к данным OPC использует спецификацию Microsoft ® COM для связи между сервером OPC и клиентом OPC. Значительный объем данных, которыми обмениваются OPC-сервер и клиент, представляет собой значение из элемента сервера или значение, которое клиент хочет записать в элемент сервера. Спецификация Microsoft COM использует Microsoft Variants для отправки различных типов данных между клиентом и сервером. В этом разделе описывается, как программное обеспечение OPC Toolbox™ преобразует типы данных MATLAB ® в варианты COM при записи значений, а варианты COM в типы данных MATLAB при чтении значений.

Серверы OPC требуют записи всех значений в элементы сервера в формате COM Variant. Сервер также предоставляет панель инструментов с вариантами COM, когда элемент Value считывается или возвращается сервером. Панель инструментов автоматически преобразуется между типами данных COM Variant и MATLAB в соответствии с таблицей, показанной ниже.

Таблица 8-1, Преобразование типа данных MATLAB в тип данных варианта COM

Тип данных MATLAB

Тип данных сервера OPC (тип варианта COM)

Замечания

double

VT_R8

 

single

VT_R4

 

char

VT_BSTR

 

logical

VT_BOOL

 

uint8

VT_UI1

 

uint16

VT_UI2

 

uint32

VT_UI4

 

uint64

VT_UI8

 

int8

VT_I1

 

int16

VT_I2

 

int32

VT_I4

 

int64

VT_I8

 

function_handle

N/A

Не допускается

cell

Н/Д

Не допускается

struct

Н/Д

Не допускается

object

Н/Д

Не допускается

Н/Д

VT_DISPATCH

Не допускается

Н/Д

VT_BYREF

Не допускается

double

VT_EMPTY

Возвращает пустую матрицу ([])

Преобразование значений, записанных на сервер OPC

При записи значений на сервер OPC с помощью write или writeasync для операции записи можно предоставить любые данные MATLAB. При записи данных на сервер OPC выполняются следующие преобразования данных:

  1. Программа OPC Toolbox преобразует значение в эквивалентный вариант COM в соответствии с таблицей 8-1 «Преобразование из типа данных MATLAB в тип данных варианта COM». При обнаружении недопустимого типа данных (например, при попытке записи структуры MATLAB) генерируется ошибка.

  2. Вариант COM отправляется на сервер OPC.

  3. Сервер OPC попытается преобразовать COM Variant в канонический тип данных элемента сервера, используя правила преобразования COM Variant. Если преобразование завершится неуспешно, сервер вернет ошибку.

Преобразование значений, считанных с сервера OPC

Когда сервер OPC возвращает значения для элемента сервера в MATLAB, сервер OPC сначала преобразует это значение в эквивалент COM Variant типа данных, указанного в daitem объект DataType собственность. Если преобразование завершается неуспешно, возвращается сообщение об ошибке со значением. Когда программное обеспечение OPC Toolbox получает значение, вариант COM преобразуется в эквивалентный тип данных MATLAB в соответствии с таблицей 8-1 «Преобразование типа данных MATLAB в тип данных варианта COM».

Обработка массивов для значений номенклатуры

Спецификация OPC поддерживает массивы значений, записываемых в элемент сервера и считываемых из элемента сервера. Однако определенный элемент сервера может не принимать массив значений. Поведение сервера в этом случае зависит от сервера. Например, один сервер может использовать только первое значение массива. Другой сервер может вернуть ошибку при попытке записи массива значений в элемент сервера, поддерживающий только скалярное значение. Программа OPC Toolbox не может определить, принимает ли элемент сервера только скалярные значения.

Для всех типов данных, перечисленных в таблице 8-1, преобразование из типа данных MATLAB в тип данных варианта COM, которые могут быть преобразованы между MATLAB и вариантом COM, скалярные данные и данные массива разрешены панелью инструментов. Однако спецификация OPC поддерживает только одномерные массивы данных. Массивы MATLAB более высокой размерности сплющиваются в одномерный вектор при записи данных на сервер OPC.