Методика создания логических блоков
• Логические блоки OB, FB и FC содержат в себе три раздела: раздел описания переменных, раздел кодов, а также определенные свойства. В разделе (таблице) описания переменных определяются параметры, их системные атрибуты и локальные переменные блока. В разделе кодов создается пользовательская программа. Свойства блока содержат метки времени или путь, который вводится системой. Кроме того, в свойствах блока можно ввести системные атрибуты для блоков, а также его собственные детали, которые относятся к имени, семейству, версии и автору.
В принципе не имеет значения, в каком порядке редактируются эти части логического блока.
Результатом описания переменных является следующее:
• При описании временных переменных блока память резервируется в L-стеке, а при описании статических переменных память выделяется в экземплярном DB, который будет присоединен при вызове.
• При назначении входных и выходных параметров определяется интерфейс вызова блока в программе.
• При описании переменных в функциональном блоке формируется также структура данных для каждого экземплярного блока данных DB, связанного с этим функциональным блоком.
Установка системных атрибутов предусматривает назначение специальных свойств параметрам передачи сообщений и конфигурации соединений, а также определение функций взаимодействия с оператором.
Таблица объявления переменных и раздел кодов логических блоков тесно связаны друг с другом, потому что имена из таблицы описания переменных используются в разделе кодов. Для контроля сделанных объявлений используется интерфейс блока.
Окно интерфейса блока отображает в левой части (браузере) список разрешенных для декларирования типов (IN, OUT, IN_OUT, STAT, TEMP), а в правой части представляет детальный обзор переменных (рис. 1.7).
Рисунок 1.7 - Пример таблицы описания переменных
Программирование последовательности операций для логического блока осуществляется в разделе кодов путем введения соответствующих команд. После введения команды редактор немедленно выполняет проверку синтаксиса и отображает ошибку красным курсивом.
Раздел кодов логического блока содержит в себе ряд сегментов (цепей). Отдельные части раздела кодов можно редактировать в любом порядке. При этом можно указать имя сегмента, а также ввести комментарии к сегментам или отдельным командам.
Благодаря комментариям программа легче читается, что повышает эффективность поиска ошибок. Комментарии являются важной частью программной документации и должны использоваться везде.
Интерфейс блоков (Block Interface)
Таблица объявления переменных содержит интерфейс блока, который составляется из входных и выходных параметров блока, а также статических локальных данных. Временные локальные данные не принадлежат интерфейсу блока. Переменные, которые входят в интерфейс блока, необходимо инициализировать (задать начальные значения) при вызова блока.
Редактор программ проверяет соответствие параметров, заданных при инициализации блока, его интерфейсу. Для этого редактор использует метки времени. Метки времени необходимы для того, чтобы интерфейс вызываемого блока создавался раньше, чем интерфейс блока, который сделал вызов. Другими словами – последние изменения интерфейса должны быть выполненны до его объединения с блоком. Редактор программ обновляет метку времени интерфейса при изменении числа параметров, типа данных, а также значений параметров.
Конфликт временных меток (Time stamp conflict)
Если интерфейс вызываемого блока имеет более позднюю относительно вызывающего блока временную метку, возникает "конфликт временных меток" – Time stamp conflict. Это может случиться, например, при попытке открыть для редактирования уже скомпилированный блок. В этом случае редактор выделит некорректный вызов блока красным цветом.
Конфликт временных меток возникает в следующих случаях:
• Интерфейс вызываемого блока имеет более позднюю временную метку (younger), чем код вызываемого блока. Конфликта не будет, если сначала переменные будут объявлены, а после этого будет написан программный код, в котором эти переменные используются.
• Интерфейс инициализации не согласован с интерфейсом блока.
• Функциональный блок имеет более позднюю временную метку, чем его экземплярный блок данных.
• Интерфейс локального экземпляра имеет более позднюю временную метку, чем экземпляр, который его вызвал (касается функциональных блоков).
• Пользовательский тип данных UDT имеет более позднюю временную метку, чем блок, в котором этот тип объявлен.
Проверка блока на консистентность (Check Block Consistency)
Редактор программ лишь информирует о наличии конфликта временных меток. Для полной проверки программы нужно использовать функцию проверки консистентности блока – Check Block Consistency. Эта функция снимает большинство конфликтов интерфейса и указывает на места в программе, которые требуют редактирования.
Дата добавления: 2016-12-09; просмотров: 3187;