В третьей версии OPC сервера мы добавили функцию импорта тегов. В данной статье мы рассмотрим подробнее способы ее использования.
Импортирование тегов предназначено для быстрого создания конфигураций OPC сервера на основе CSV файлов. CSV файл – это простой, текстовый формат предназначенный для представления табличных файлов. Для формирования колонок используется специальный разделитель. Изначально в качестве разделителя использовалась запятая (аббревиатура CSV означает Comma-Separated Values — значения, разделённые запятыми), однако в настоящий момент чаще всего в качестве разделителя используют символ «;» - «точка с запятой». С CSV файлом может работать любой табличный редактор – Excel или Open Office Calc.
Чтобы произвести импорт CSV файла в OPC сервер необходимо чтобы файл был определенной структуры. По умолчанию требуется файл следующего формата:
Name;Address;DataType;Access;ByteOrder;Region;Comment
Статус;2;int16;ReadOnly;10325476;INPUT_REGISTERS;Статус измерения
значение;3;Float;ReadOnly;32105476;INPUT_REGISTERS;Измеренное значение
Статус;7;int16;ReadOnly;10325476;INPUT_REGISTERS;Статус измерения
значение;8;Float;ReadOnly;32105476;INPUT_REGISTERS;Измеренное значение
В табличном представлении данные записи будут выглядеть так:

Каким образом можно получить CSV файл? Для конфигурируемых приборов (измерителей, регуляторов, модулей ввода-вывода) производитель предоставляет таблицу Modbus адресов в том или ином виде. Это может быть готовый Excel файл, однако чаще всего регистры описываются в документации представленной в pdf формате, но даже в этом случае извлечь данные не составит труда.
Сначала PDF файл нужно преобразовать в Word-формат – это можно сделать при помощи различных утилит (в том числе online-конвертеров) или воспользоваться Microsoft Word 2013 – он способен открывать и редактировать PDF формат. Открыв PDF в Word необходимо скопировать таблицу Modbus адресов в буфер, а затем вставить в Excel – теперь в вашем распоряжении весь функционал табличного редактора.





Шаблоны импортаКак быть если существует готовый CSV файл, но его формат не совсем соответствует требуемому формату для импорта? В этом случае на помощь придут шаблоны импорта.
Ранее мы использовали шаблон по умолчанию – у него все свойства тега получаются из полей CSV файла и никак дополнительно не обрабатываются. Есть возможность сделать собственный шаблон – который будет иметь нужные названия и количество полей, а также может обработать исходные данные по заданному алгоритму.
В качестве примера рассмотрим следующий CSV файл:

- Столбец с адресом регистра называется NumReg
- Адреса регистров представлены в шестнадцатеричном формате.
- Столбец DataType двухбайтовые числа обозначает как Word, который сервером не воспринимается (в сервере типу Word соответствует тип uint16).
- Тип доступа имеет обозначения R/O, R/W вместо необходимых ReadOnly и ReadWrite.
- Столбцы ByteOrder и Region отсутствуют. Чередование байт определяется типом данных, а Region – всегда Holing Registers.





function ConvertContent(Content) return false,Content end |
function ConvertContent(Content) local value=tonumber(Content,16); if value~=nil then return false,tostring(value); end; return true,Content; end |
Можно в этом же окне проверить работу скрипта. Для этого в панели есть специальная кнопка – Проверить работу скрипта.



function ConvertContent(Content) if Content=="Float" then return false,"float"; end; if Content=="Word" then return false,"uint16"; end; return true,Content; end |

function ConvertContent(Content) if Content=="Word" then return false,"10325476"; end; if Content=="Float" then return false,"32104567"; end; return true,Content ; end |

function ConvertContent(Content) if Content=="R/O" then return false,"ReadOnly"; end; if Content=="R/W" then return false,"ReadWrite"; end; if Content=="W/O" then return false,"WriteOnly"; end; return true,Content; end |



Таким образом, используя шаблоны импорта можно адаптировать мастер импорта под нужный тип CSV файлов.