Программирование функций преобразования в LAD и FBD

На рисунке 2.28 показан пример блочного представления функции преобразования INT в BCD (I_BCD).

Программирование функций преобразования в LAD и FBD - №1 - открытая онлайн библиотека

Рисунок 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.

Программирование функций преобразования в LAD и FBD - №2 - открытая онлайн библиотека

Рисунок 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 возвращает целую составляющую преобразованного числа, а дробная составляющая отсекается.