- •Введение
- •Создание функциональных блоков Создание новой библиотеки функциональных блоков
- •Последовательность разработки функциональных блоков
- •Использование групп, набор входов которых определяется пользователем.
- •Определение группы free_pingroup_def в фб.
- •Инструкция по внедрению шаблона cfbPropPageImpl в страничку свойств функционального блока.
- •Атрибуты входов, находящихся в группе free_pingroup_def.
- •Получение событий от таймера
- •Получение текущего времени
- •Проверка правильности в страничках свойств.
- •Использование таймера в функциональных блоках.
- •Признаки качества в Функциональных блоках Коды признака качества значения
- •Установка признаков качества выходов фб
- •Получение признака качества
- •Передача признаков качества входа выходу
- •Сообщения в фб.
- •Вывод информация об ошибках в фб в протокол работы.
- •Восстановление состояния фб при горячем рестарте.
- •Страницы свойств фб
- •Справка к фб
- •Справка к страницам свойств фб
- •Разработка визуальных фб на основе существующей библиотеки фб
- •Создание общего h-файла (подкл в файл описания фб и файл описания контрола)
- •Изменения в создании фб
- •Создание ActiveX контрола
- •Чтобы создать свойства нужно:
Признаки качества в Функциональных блоках Коды признака качества значения
Константа |
Назначение |
Описание |
OPC_QUALITY_CONFIG_ERROR |
Ошибка конфигурации |
Алгоритм имеет проблемы с конфигурацией, например, не все связи или настройки заданы |
OPC_QUALITY_NOT_CONNECTED |
Нет соединения |
Алгоритм имеет проблемы со связью, например, у входа алгоритма оборвана связь с выходом алгоритма-источника данных |
OPC_QUALITY_DEVICE_FAILURE |
Ошибка устройства |
Предписанные алгоритмом операции нельзя выполнить (например, деление на нуль или переполнение порядка) |
OPC_QUALITY_SENSOR_FAILURE |
Ошибка датчика |
Хотя бы одна входная переменная не удовлетворяет условиям, накладываемым на входные переменные алгоритмом, или хотя бы одна входная переменная пришла с любым из плохих признаков качества |
OPC_QUALITY_LAST_KNOWN |
Последнее известное значение |
Сбой связи. Последнее опрошенное значение доступно. Время опроса имеется в отметке времени, сопровождающей значение |
OPC_QUALITY_COMM_FAILURE |
Нет связи |
Связи с источником данных для какого-либо из входов нет. Последнее опрошенное значение не существует. Или алгоритм работает, но выходное значение пока еще не сформировано (например. расчет интеграла) |
OPC_QUALITY_OUT_OF_SERVICE |
Не обслуживается |
При существующих настройках алгоритма данный выход не формируется. |
Установка признаков качества выходов фб
Алгоритм имеет проблемы, не позволяющие ему установить правильные значения на выходы. Например в случаях
«Алгоритм имеет проблемы с конфигурацией»
«Предписанные алгоритмом операции нельзя выполнить(если ошибка касается всех выходов, а не кагого-нибудь одного)»
«Хотя бы одна входная переменная не удовлетворяет условиям, накладываемым на входные переменные алгоритмом».
В этих случаях необходимо вызвать функцию SetErrorOnPout (передается код ошибки) и прервать вычисления. Функция UpdatePoutData может иметь такой вид:
HRESULT UpdatePoutData(long lWave)
{
if (<ошибка конфигурации>){
SetErrorOnPout (OPC_QUALITY_CONFIG_ERROR);
return S_OK;
}
if (<входные переменные не удовлетворяют некоторым условиям>){
SetErrorOnPout (OPC_QUALITY_SENSOR_FAILURE);
return S_OK;
}
<Вычисление выходных значений>
return S_OK;
}
Значение какой-то одной выходной переменной нельзя вычислить. Необходимо вызвать функцию SetPoutData([GroupIndex,] PoutIndex, m_varEmpty, -1, DefaultFileTime, Validity) Validity – код ошибки DefaultFileTime – специальная константа, указывающая на то, что метку времени выхода надо вычислить исходя из меток времени входов.
Значение выхода посчитать можно, но оно имеет некоторые признаки качества Необходимо вызвать функцию SetPoutData([GroupIndex,] PoutIndex, Value, -1, DefaultFileTime, Validity) Value – значение выхода
Если хотя бы одна входная переменная пришла с любым из плохих признаков качества, то перед вызовом UpdatePoutData на все выходы будет автоматически выставлен признак качества OPC_QUALITY_SENSOR_FAILURE.
