Программирование функций преобразования в LAD и FBD
На рисунке 2.28 показан пример блочного представления функции преобразования INT в BCD (I_BCD).
Рисунок 2.28 - Обозначение функции преобразования I_BCD
Значения, которые подлежит конвертированию, подаются на вход IN, результат конвертирования формируется на выходе OUT. Тип данных входа и выхода зависит от функции преобразования. В функции преобразования DI_R (DINT в REAL), например, вход имеет тип DINT, а тип выхода – REAL.
Функция преобразования выполняется, если на входе разрешения присутствует сигнал «1». Если во время преобразования возникнет ошибка, то выход ENO устанавливается в «0», в противном случае он устанавливается в «1». Если выполнение функции не разрешено (EN = 0), преобразования не происходит и на выходе ENO также устанавливается нуль.
В таблице 2.7 приведены функции преобразования для чисел типов INT и DINT. Переменные на входах и выходах должны иметь определенные типы данных, а операнды, которые адресуются абсолютно, отвечать их размерам.
Таблица 2.7 – Функции преобразования чисел типов INT и DINT
Преобразование типа данных | Блочный элемент | Тип данных параметра | |
IN | OUT | ||
INT в DINT | I_DI | INT | DINT |
INT в BCD | I_BCD | INT | WORD |
DINT в BCD | DI_BCD | DINT | DWORD |
DINT в REAL | DI_R | DINT | REAL |
Не все функции преобразования сообщают об ошибке. Ошибка возникает только тогда, когда превышается допустимый диапазон чисел (I_BCD, DI_BCD) или определено недействительное число REAL.
Если входное значение для преобразования BCD_I или BCD_DI содержит псевдотетраду, то выполнение программы перерывается, и вызывается организационный блок обработки ошибок ОВ 121 (синхронные ошибки работы программы).
На рисунке 2.29 показан пример преобразования числа INT. Значение слова MW 120 интерпретируется как число типа INT и хранится как Bcd-число в памяти меркеров MW 122.
Рисунок 2.29 - Пример преобразования числа INT
Есть несколько функций для преобразования числа в формате REAL в число формата DINT (преобразование дробного числа в целое число). Эти функции приведены в таблице 2.8. Они отличаются по образу округления.
Таблица 2.8 - Преобразование чисел типа REAL в числа типа DINT
Преобразование типа данных с округлением | Блочный элемент | Тип данных параметра | |
IN | OUT | ||
К следующему большему целому числу | CEIL | REAL | DINT |
К следующему меньшему целому числу | FLOOR | REAL | DINT |
К следующему целому числу | ROUND | REAL | DINT |
Без округления | TRUNC | REAL | DINT |
К входам и выходам должны быть применены переменные определенного типа данных размером в двойное слово.
Функции CEIL, FLOOR, ROUND и TRUNC интерпретируют значение на входе IN как число в формате REAL и превращают его в число формата DINT на выходе OUT.
CEIL возвращает целое, которое больше или равно конвертируемому числу. Если значение на входе IN находится вне диапазона, допустимого для чисел формата DINT, или оно не отвечает числу в формате REAL, то CEIL устанавливает биты состояния OV и OS. Преобразование при этом не выполняется.
Функция FLOOR возвращает целое, которое меньше или равно конвертируемому числу. Если значение на входе IN находится вне диапазона, допустимого для чисел в формате DINT, или оно не отвечает числу в формате REAL, то FLOOR устанавливает биты стана OV и OS. Преобразование при этом не выполняется.
Функция ROUND возвращает следующее целое число. Если результат находится точно между непарным и парным числом, преимущество отдается парному числу. Если значение на входе IN находится вне диапазона, допустимого для чисел в формате DINT, или оно не отвечает числу в формате REAL, то ROUND устанавливает биты состояния OV и OS. Преобразование при этом не выполняется.
Функция TRUNC возвращает целую составляющую преобразованного числа, а дробная составляющая отсекается.
Дата добавления: 2016-12-09; просмотров: 3235;