Оценка ошибок с помощью выходного параметра RET_VAL
Системная функция (SFC), исполняемая в Ваше пользовательской программе показывает, смог ли CPU успешно выполнить функцию SFC. Вы можете получить информацию о любых произошедших ошибках двумя способами:
- в бите BR слова состояния
- в выходном параметре RET_VAL (возвращаемое значение)
Перед анализом выходных параметров, относящихся к SFC, Вы всегда должны выполнять следующие шаги:
• Сначала проанализируйте бит BR слова состояния.
• Затем проверьте выходной параметр RET_VAL. Если бит BR показывает, что произошла ошибка, или если RET_VAL содержит код общей ошибки, то Вам нельзя использовать выходной параметр SFC!
Информация об ошибках в возвращаемом значении
Системная функция (SFC) через значение "0" бита двоичного результата (BR) слова состояния показывает, что при исполнении функции произошла ошибка. Некоторые системные функции предоставляют в распоряжение дополнительный код ошибки на выходе, известном как возвращаемое значение (RET_VAL). Если в выходной параметр RET_VAL вводится общая ошибка (объяснение см. ниже), то она отображается только посредством значения .0. бита BR слова состояния.
Возвращаемое значение относится к типу данных .целое число. (INT). Отношение возвращаемого значения к значению .0. показывает, появилась ли при исполнении функции ошибка.
CPU исполняет SFC | BR | Возвращаемое значение | Знак целого числа |
---|---|---|---|
с ошибкой (ами) | 0 | меньше, чем "0" | отрицательный (знаковый бит равен "1") |
без ошибки | 1 | больше или равно "0" | положительный (знаковый бит равен "0") |
Реакция на информацию об ошибках
Существует два различных типа кодов ошибки в RET_VAL:
- общий код ошибки, который могут выдавать все системные функции
- специфический код ошибки, который SFC может выдавать в зависимости от своей конкретной функции
Можно написать свою программу таким образом, что она будет реагировать на ошибки, возникающие при исполнении системной функции. Этим Вы препятствуете возникновению последующих ошибок, являющихся результатом первой ошибки.
Общая и специфическая информация об ошибках
Возвращаемое значение (RET_VAL) системной функции предоставляет в распоряжение один из двух следующих типов кодов ошибки:
- Общий код ошибки, относящийся к ошибкам, которые могут возникнуть в любой системной функции
- Специфический код ошибки, который относится только к конкретной системной функции
Хотя тип данных выходного параметра RET_VAL целый (INT), коды ошибок системных функций группируются в соответствии с шестнадцатеричными значениями. Если Вы хотите проанализировать возвращаемое значение и сравнить это значение с кодами ошибок, которые приведены на этом сайте, то отобразите код ошибки в шестнадцатеричном формате.
Следующий рисунок показывает структуру кода ошибки системной функции в шестнадцатеричном формате.
Общая информация об ошибках
Общий код ошибки показывает ошибки, которые могут встречаться во всех системных функциях. Общий код ошибки состоит из двух следующих номеров:
- Номер параметра в диапазоне от 1 до 111, где 1 указывает на первый параметр, 2 - на второй параметр SFC и т.д.
- Номер события в диапазоне от 0 до 127. Номер события указывает на то, что произошла синхронная ошибка
Если в RET_VAL был записан общий код ошибки, то возможны следующие ситуации:
• Возможно, была запущена или уже выполнена операция, относящаяся к SFC.
• Возможно, что при выполнении этой операции произошла специфическая ошибка SFC. Однако в результате общей ошибки, произошедшей позднее, специфическая ошибка не могла больше отображаться
Специфическая информация об ошибках
Некоторые системные функции (SFC) обладают возвращаемым значением, которое предоставляет в распоряжение специфический код ошибки. Этот код ошибки показывает, что во время обработки функции появилась ошибка, которая относится к определенной системной функции (см. рисунок). Специфический код ошибки состоит из двух следующих чисел:
- Класс ошибки от 0 до 7
- Номер ошибки от 0 до 15
Общие коды ошибок
Следующая таблица объясняет общие коды возвращаемого значения. Код ошибки отображается в шестнадцатеричном формате. Буква x в каждом кодовом номере служит только как символ-заполнитель и представляет номер параметра системной функции, вызвавшего ошибку.
Код ошибки (W#16#...) | Пояснение |
---|---|
8x7F | Внутренняя ошибка Этот код ошибки указывает на внутреннюю ошибку в параметре x. Эта ошибка была вызвана не пользователем и не может быть им устранена |
8x22 8x23 |
Ошибка длины области при чтении параметра. Ошибка длины области при записи параметра. Этот код ошибки показывает, что параметр x полностью или частично находится за пределами диапазона адресов или что длина битового поля для параметра типа ANY не кратна 8. |
8x24 8x25 |
Ошибка области при чтении параметра Ошибка области при записи параметра. Этот код ошибки показывает, что параметр x находится в области, которая недопустима для системной функции. За информацией о недопустимых областях обращайтесь к описаниям отдельных функций |
8x26 | Параметр содержит слишком большой номер таймера. Этот код ошибки показывает, что таймер, заданный в параметре x, не существует |
8x27 | Параметр содержит слишком большой номер счетчика (ошибка номерасчетчика). Этот код ошибки показывает, что счетчик, указанный в параметре x, не существует |
8x28 8x29 |
Ошибка выравнивания при чтении параметра. Ошибка выравнивания при записи параметра. Этот код ошибки показывает, что ссылка на параметр x является битовым адресом, не равным 0. |
8x30 8x31 |
Параметр находится в защищенном от записи глобальном DB. Параметр находится в защищенном от записи экземплярном DB. Этот код ошибки показывает, что параметр x находится в защищенном от записи блоке данных. Если этот блок данных был открыт самой системной функцией, то системная функция всегда возвращает значение W#16#8x30. |
8x32 8x34 8x35 |
Параметр содержит слишком большой номер DB (ошибка номера DB). Параметр содержит слишком большой номер FC (ошибка номера FC). Параметр содержит слишком большой номер FB (ошибка номера FB). Этот код ошибки показывает, что параметр x содержит номер блока, который больше, чем максимально допустимый номер блока. |
8x3A 8x3C 8x3E |
Параметр содержит номер незагруженного DB. Параметр содержит номер незагруженного FC. Параметр содержит номер незагруженного FB. |
8x42 8x43 |
Имела место ошибка доступа в то время, когда система пыталась считать параметр из периферийной области входов. Имела место ошибка доступа в то время, когда система пыталась считать параметр из периферийной области выходов. |
8x44 8x45 |
Ошибка при n.ом (n > 1) обращении для чтения после появления ошибки. Ошибка при n.ом (n > 1) обращении для записи после появления ошибки. Этот код ошибки показывает, что получен отказ в доступе к требуемому параметру. |
<-- Предыдущая статья | Следующая статья --> |