Elka
14.02.2011, 13:15
Задача: вывести температуру, полученную с аналогового выхода на экран в виде двух цифр. Собственно кусок функции:
VAR
FormatTemp: STRING(10):='%+02.0f';
t_r: REAL;
...
END_VAR
t:=ShowString(z, col, 0, 't');
... (здесь учитывается вывод ошибочных величин и 0, далее)
собственно вывод температуры (3 позиции)
t:=ShowReal(z, col+1, 0, FormatTemp, t_r);
вывод символа "градус" (спасибо за поддержку в ПЛК63! ;-) и обозначения используемой шкалы - "по цельсию"
t:=ShowString(z, col+4, 0, '$9BC');
Исходил из формата printf, и если мне не изменяет память, то во времена оные указанное выше представление на сишных компиляторах давало следующий вывод:
при t_r=-14 (<-10)
-14
при t_r=-3 (>-10, но <0)
-03
при t_r=0
+00
при t_r=4 (>0, но <10)
+04
при t_r=12 (>10)
+12
Проблема: сейчас на контроллере ПЛК63 температура +3 выводится как +30. Я где-то неправ?
Эксперементы шли то дома, то в тёплом коттедже, где температура ниже +10 не падала, а на объекте такой облом :-(
VAR
FormatTemp: STRING(10):='%+02.0f';
t_r: REAL;
...
END_VAR
t:=ShowString(z, col, 0, 't');
... (здесь учитывается вывод ошибочных величин и 0, далее)
собственно вывод температуры (3 позиции)
t:=ShowReal(z, col+1, 0, FormatTemp, t_r);
вывод символа "градус" (спасибо за поддержку в ПЛК63! ;-) и обозначения используемой шкалы - "по цельсию"
t:=ShowString(z, col+4, 0, '$9BC');
Исходил из формата printf, и если мне не изменяет память, то во времена оные указанное выше представление на сишных компиляторах давало следующий вывод:
при t_r=-14 (<-10)
-14
при t_r=-3 (>-10, но <0)
-03
при t_r=0
+00
при t_r=4 (>0, но <10)
+04
при t_r=12 (>10)
+12
Проблема: сейчас на контроллере ПЛК63 температура +3 выводится как +30. Я где-то неправ?
Эксперементы шли то дома, то в тёплом коттедже, где температура ниже +10 не падала, а на объекте такой облом :-(