Просмотр полной версии : ПЛК - переменные в Codesys
Сталкнулись с проблемой - Codesys не поддерживает переменные типа LREAL ?
Каким образом в программе для ПЛК возможно обойти данную проблему.
Требуется подсчет показаний счетчика со значениями до 999 999,99 .
Процедура перехода через "0" - буду признателен за подсказку.
Дмитрий Артюховский
05.04.2011, 22:58
вещественные типы ниразу не подходят для счетчиков, при больших значениях разрядность матиссы убъет приращения... используйте целочисленные переменные, запятую ставьте в процедуре индикации величины
так ведь
Диапазон значений REAL от: 1.175494351e-38 до 3.402823466e+38
и
999 999,99
вроде входит в этот диапазон с приличным запасом. или я не прав?
Александр Приходько
06.04.2011, 09:42
Все верно. DWORD вполне для данной задачи подойдет. Делаете условное смещение на 2 разряда с панели или при выводе в скаду.
Спасибо ! Мы начинающие...:mad:
Соответственно вопрос: когда реальный счетчик перепрыгнет через 999999.99 как синхронизировать переход в "ноль" в программе ?
Александр Приходько
06.04.2011, 10:25
Что значит "синхронизировать переход в "ноль" в программе"?
Дмитрий Артюховский
06.04.2011, 13:25
проверяйте превышение счетчика над максимально допустимым, при превышении максимума - присваивайте счетчику величину приращения
if (count >= max_count) then
count := count - max_count;
end_if
if (count > max_count) then
count := 0;
end_if
так не проще?
Что значит "синхронизировать переход в "ноль" в программе"?
опробую свои телепатические особенности:
реальный счетчик считает до числа 999 999.99 а затем продолжает счет с 0. в программе надо сделать так, чтоб после этого перехода через максимум значение в счетчике было = текущее значение + количество "перепрыгов" * 999 999.99
Pointer, если
count := count - max_count;
то мы сохраним число, на которое счетчик превысил максимальное значение. Разве нет?
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot