Типизация. Макрос генерации связей

Типизация. Макрос генерации связей

Самым трудоемким процессом в типизации является расстановка внешних связей, ведь типизированных объектов могут быть сотни и ручное перетаскивание связей становится неэффективным. В прошлой статье мы рассмотрели специальные контролы, которые позволяют собрать все связи в одном месте и выполнить их экспорт в формат CSV. После экспорта со связями можно работать сторонними средствами – например с помощью Excel.

Если связь имеет такой вид:
То можно воспользоваться функцией автозаполнения:
Но увы – в жизни так легко не бывает… Поэтому, в большинстве случае стандартными средствами Excel решить задачу не получится – необходимо использовать макросы.

Рассмотрим связи из нашего прошлого проекта.
Например, связь пилы у первого экземпляра имеет вид:
Система.Компьютер 1.InSAT Modbus OPC Server DA.Узел.Устройство1.Пила
Для второго она будет иметь вид:
Система.Компьютер 1.InSAT Modbus OPC Server DA.Узел.Устройство2.Пила
То есть в имени меняется имя экземпляра – Устройство1 на Устройство2 и т.д. То есть необходимо во всех строках выполнить замену Устройство1 на ячейку из столбца Экземпляр. Для решения этой задачи и был написан специальный макрос - пример макрос в конце статьи
Рекомендуется разместить его в той же папке, где и файл связей и дать такое же имя – это удобно если у вас несколько списков экземпляров. Запустите файл макроса – появится окно управления.
С помощью данного окна и производится формирование путей. По своей сути макрос достаточно прост. Его принцип состоит в следующем – в путях, мы находим определенное статичное имя (в нашем случае Устройство1) и производим подмену на текст ячейки из заданного столбца. В качестве такого столбца можно брать как столбец с именами экземпляров или сделать отдельный (если имена экземпляров и имена ОРС групп отличаются).

Макрос состоит из трех разделов. В верхнем разделе осуществляется привязка к определенному CSV файлу. С помощью кнопки Открыть файл открывается, Перечитать – обновляет файл (например, если вы добавили новую связь и экспортировали файл снова), а кнопкой Сохранить, сохраняет его. Откроем наш файл – его ячейки заполнят таблицу.
Теперь заполним ячейки Устройства2 – Устройства 10.
Можно воспользоваться стандартной Excel функцией копирования – выделить нужный диапазон и просто перетащить вниз. В нашем случае это будет проще всего, однако такой способ не всегда удобен.
Например, нам нужно заполнить не все столбцы, а только некоторые – С:F, G:H. В таком случае нам нужно будет поочередно выделять каждую группу столбцов и выполнять копирование. Кроме того, экземпляров может быть много, поэтому перетаскивание мышью займет много времени.
Для упрощения этой задачи в макросе есть раздел генерации путей. Его принцип следующий – сначала указывается какую именно строку мы хотим скопировать в последующие нижние строчки. Затем выделяются столбцы, которые нужно скопировать. При этом можно выделить столбцы мышью (в том числе используя групповое выделение с помощью клавиш Shift и Ctrl), а можно просто скрыть не нужные и выделить страницу целиком.

Выбираем вторую строку и выделяем группой столбцы.
Нажимаем Выполнить копирование – все ячейки вниз будут заполнены.
Теперь необходимо выполнить замену – для этого предназначен последний раздел макроса.
Указываем текст который мы хотим заменять – в нашем случае Устройство1.
Теперь нужно указать столбец с текстом для замены – то есть если в ячейке строки, будет найден данный текст, то из какого именно столбца нужно взять замену для найденного текста.
В нашем случае имя экземпляра и имя группы ОРС сервера совпадают – поэтому, просто выделяем столбец B(или любую ячейку в нем) и нажимаем на кнопку Выбрать столбец экземпляров. Выбранный столбец будет указан в поле Столбец экземпляров.
Если же имя группы не совпадает с именем экземпляра, вы можете сделать отдельный столбец в любом месте страницы и заполнить его. При этом, в MasterSCADA у ОРС сервера можно выполнить экспорт всех путей и из них извлечь имена групп. После этого столбец лучше скрыть – скрытые столбцы макрос не трогает при генерации и при сохранении, что позволит избежать случайно замены в нем.
Теперь можно начинать выполнять замену – нажмите на кнопку Выполнить замену. Связи будут заменены.
Теперь файл можно сохранить – нажав на кнопку Сохранить в окне управления. Файл макроса также рекомендуется сохранить. После этого файл CSV можно импортировать обратно в MasterSCADA.
При сохранении макрос не переносит скрытые строки и столбцы. Это позволяет делать собственные, сервисные столбцы – например для создания текстов значений до опроса.
При импорте MasterSCADA определяет принадлежность связи и экземпляра по именам. Это позволяет сделать несколько отдельных файлов связей и работать с ними отдельно – например, если ваш объект имеет связи с двумя ОРС серверами.
Код макроса открыт и доступен для изучения или редактирования. Скачать макрос можно по данной ссылке.