PDA

Просмотр полной версии : ПЛК - переменные в Codesys



ioo
05.04.2011, 22:30
Сталкнулись с проблемой - Codesys не поддерживает переменные типа LREAL ?
Каким образом в программе для ПЛК возможно обойти данную проблему.
Требуется подсчет показаний счетчика со значениями до 999 999,99 .
Процедура перехода через "0" - буду признателен за подсказку.

Дмитрий Артюховский
05.04.2011, 22:58
вещественные типы ниразу не подходят для счетчиков, при больших значениях разрядность матиссы убъет приращения... используйте целочисленные переменные, запятую ставьте в процедуре индикации величины

swerder
06.04.2011, 09:39
так ведь

Диапазон значений REAL от: 1.175494351e-38 до 3.402823466e+38
и

999 999,99
вроде входит в этот диапазон с приличным запасом. или я не прав?

Александр Приходько
06.04.2011, 09:42
Все верно. DWORD вполне для данной задачи подойдет. Делаете условное смещение на 2 разряда с панели или при выводе в скаду.

ioo
06.04.2011, 10:20
Спасибо ! Мы начинающие...:mad:
Соответственно вопрос: когда реальный счетчик перепрыгнет через 999999.99 как синхронизировать переход в "ноль" в программе ?

Александр Приходько
06.04.2011, 10:25
Что значит "синхронизировать переход в "ноль" в программе"?

Дмитрий Артюховский
06.04.2011, 13:25
проверяйте превышение счетчика над максимально допустимым, при превышении максимума - присваивайте счетчику величину приращения

if (count >= max_count) then
count := count - max_count;
end_if

Pointer
06.04.2011, 13:55
if (count > max_count) then
count := 0;
end_if
так не проще?

swerder
07.04.2011, 10:03
Что значит "синхронизировать переход в "ноль" в программе"?
опробую свои телепатические особенности:
реальный счетчик считает до числа 999 999.99 а затем продолжает счет с 0. в программе надо сделать так, чтоб после этого перехода через максимум значение в счетчике было = текущее значение + количество "перепрыгов" * 999 999.99

Andriy6
07.04.2011, 18:51
Pointer, если
count := count - max_count;
то мы сохраним число, на которое счетчик превысил максимальное значение. Разве нет?