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

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

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

Серверы OPC требуют, чтобы все значения были записаны в серверные элементы в Различном формате COM. Сервер также предоставляет тулбоксу Варианты COM когда Value элемента свойство считано или возвращено сервером. Тулбокс автоматически преобразует между Различным типом COM и типами данных 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 в канонический тип данных серверного элемента, с помощью правил преобразования Варианта COM. Если преобразование перестанет работать, сервер возвратит ошибку.

Преобразование чтения значений от сервера OPC

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

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

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

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