Siemens — Команды преобразования

Набор команд S7–200 Глава 6 Рис. 6–16. Операнд FMT для команды преобразования целого числа в строку символов ASCII (DTA) Принцип действия команды преобразования вещественного числа в строку символов ASCII Длина (количество символов) результирующей строки символов ASCII соответствует размеру выходного буфера и может быть задана в диапазоне от 3 до 15 символов или байтов. Формат чисел с плавающей точкой, используемый S7–200, поддерживает не более 7 значащих цифр. Попытка отобразить более 7 значащих цифр приводит к ошибке округления. На рис. 6–17 описан операнд формата (FMT) для команды RTA. Размер выходного буфера определяется полем ssss. Размеры 0, 1 или 2 байта недопустимы.

Количество цифр справа от десятичной точки в выходном буфере определяется полем nnn. Допустимый диапазон поля nnn составляет от 0 до 5. Задание 0 цифр справа от десятичной точки приводит к тому, что число отображается без десятичной точки. Выходной буфер заполняется символами пробела ASCII для значений nnn, больших 5, или если заданный выходной буфер слишком мал для хранения преобразованного значения. Бит c определяет использование запятой (с=1) или десятичной точки (с=0) в качестве разделителя целой и дробной части. На рис.

6–17 также приведены примеры чисел, форматированных с помощью десятичной точки (c = 0), с одной цифрой справа от десятичной точки (nnn=001) и размером буфера, равным 6 байтам (ssss=0110). Выходной буфер форматируется в соответствии со следующими правилами: - Положительные числа записываются в выходной буфер без знака. - Отрицательные числа записываются в выходной буфер с ведущим знаком минус (-). - Нули в старших разрядах слева от десятичной точки (кроме цифры, смежной с десятичной точкой) подавляются. - Значение справа от десятичной точки округляется в соответствии с заданным количеством цифр справа от десятичной точки.

- Размер выходного буфера должен, по крайней мере, на три байта превышать количество цифр справа от десятичной точки. - Числа в выходном буфере выравниваются вправо. LSB FMT MSB 7 6 5 4 3 2 1 0 in = 1234.5 ssss = размер выходного буфера c = запятая (1) или десятичная точка (0) nnn = цифры справа от десятичной точки in = − 0.0004 in = − 3.67526 in = 1.95 Рис. 6–17. Операнд FMT для команды преобразования вещественного числа в строку символов ASCII (RTA) 107 FMT Out Out Out Out Out Out Out Out Out Out Out Out MSB LSB +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 7 6 5 4 3 2 1 0 0 0 0 0 c n n n in=−12 − 0 . 0 0 1 2 in=1234567 1 2 3 .

4 5 6 7 c = запятая (1) или десятичная точка (0) nnn = цифры справа от десятичной точки Out Out +1 Out +2 Out +3 Out +4 Out +5 Out +6 Out +7 Out +8 Out +9 Out +10 Out +11 − 0 . 0 0 1 2 1 2 3 . 4 5 6 7 0 0 0 0 c n n n Команда преобразования вещественного числа в строку символов ASCII (RTA) преобразует число с плавающей точкой IN в символы ASCII. Формат FMT определяет точность преобразования справа от десятичной точки, а также форму представления разделителя целой и дробной части – в виде запятой или точки и размер выходного буфера. Результат преобразования помещается в выходном буфере, начиная с адреса OUT.

Сбойные состояния, устанавливающие ENO = 0 ■ 0006 (косвенный адрес) ■ nnn > 5 ■ ssss Out Out +1 Out +2 Out +3 Out +4 Out +5 1 2 3 4 . 5 0 . 0 − 3 . 7 2 . 0 s s s s c n n n