AstraRegul
Руководство системного интегратора
×

6.16. POU ДЛЯ НЕЯВНЫХ ПРОВЕРОК

Выполнение в контроллере приложения пользователя с ошибками может приводить к  возникновению исключений (Exception). При появлении исключения контроллер останавливает выполнение приложения пользователя.
 
В среде разработки Astra.IDE реализованы специальные POU, выполняющие функции неявного мониторинга. Во время выполнения программы эти функции проверяют границы массива, корректность адресов указателей и деление на ноль.
 
CheckBounds. Задача этой функции мониторинга состоит в соответствующей обработке нарушения границ. В ответ на нарушения границ могут устанавливаться флаги ошибок и изменяться значения индекса массива. Проверка выполняется только для переменного индекса массива.
 CheckDivInt, CheckDivLint, CheckDivReal, CheckDivLReal. Функции контроля значения делителя во избежание деления на ноль.
CheckRangeSigned, CheckRangeUnsigned. Функции контроля предела диапазона для типа поддиапазона в режиме исполнения. Применяется к типам данных DINT/UDINT.
CheckLRangeSigned, CheckLRangeUnsigned. Функции контроля предела диапазона для типа поддиапазона в режиме исполнения. Применяется к типам данных LINT/ULINT.
CheckPointer. Эта функция должна контролировать:
  • ссылается ли возвращаемый указатель на действительный адрес памяти;
  • контроль соответствия ориентации используемого диапазона памяти типу переменной, на который ссылается указатель.
Если выполняются оба условия, указатель возвращается. В противном случае функция CheckPointer должна выполнять соответствующую обработку ошибок. В отличие от других функций мониторинга, стандартного варианта реализации CheckPointer не существует. Следует определять реализацию в соответствии с вашими требованиями.