This is topic Программа на Техно ST in forum TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version at Форум TRACE MODE: техническая поддержка.
Добрый день. Для подсчета расхода воды в емкости использую следующую программу
PROGRAM VAR_INPUT ТУ : LREAL; END_VAR VAR_INOUT период : REAL; END_VAR VAR_OUTPUT текущийРасход : REAL; END_VAR VAR_OUTPUT М3 : REAL; END_VAR VAR_INPUT T2 : LREAL; END_VAR VAR lT2 : LREAL; END_VAR
if фЗ==0 then фЗ=1; L1=ТУ; T1=T2; goto pExit; end_if; lT2=T2+getAttributeI[1,88]*0.001; if [lT2-T1]<[период*0.001] then goto pExit; end_if; текущийРасход=[ТУ-L1]/[lT2-T1]; М3=текущийРасход*3.6; L1=ТУ; T1=lT2; pExit: END_PROGRAM
аргумент______значение___________привязка ТУ____________тек. уровень воды__значение датчика период________период расчета,мс__задано 55 мс текущийРасход_текущий расход,л/с_выходное значение М3____________тек. расход,м3/ч___выходное значение T2____________тек. время_________атрибут 45 основного экрана
глобальные переменные фЗ int признак работы L1 LREAL уровень воды на предыдущем подсчете T1 LREAL время на предыдущем подсчете
при отладке выяснилось, что значение T2 меняется 1 раз в 128 секунд, а значение getAttributeI[1,88] всегда равно 0 Что не так? Прим.Круглые скобки не пропустили, вместо них квадратные
[ 06.10.2020, 14:09: Сообщение отредактировал / Message edited by АдАстра. Техподдержка ]
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
quote:Отправитель / Originally posted by Booster0: значение getAttributeI[1,88] всегда равно 0
Проверьте через Панель МРВ значение атрибута 88 канала с ID=1. У канала Call.Screen атрибут 88 всегда равен 0.
quote:Отправитель / Originally posted by Booster0: ... VAR_INPUT T2 : LREAL; END_VAR ... T2 текущее время атрибут 45 основного экрана
при отладке выяснилось, что значение T2 меняется 1 раз в 128 секунд, ...
атрибут 45 имеет тип не LREAL, а DATE_and_TIME. атрибут 45 изменяется с заданной периодичностью. Смотрите настройки канала вызова основного экрана Период и Единица Измерения.
Posted by Booster0 (Участник № / Member № 8431) on :
А где тогда взять милисекунды?
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
Опишите решаемую Вами задачу. Как Вы планируете использовать миллисекунды отработки канала вызова экрана?
Posted by Booster0 (Участник № / Member № 8431) on :
Это нужно для точного подсчета расхода воды. На каждом цикле вычисляется разность текущего уровня и уровня на предыдущем цикле и делится на разность текущего и предыдущего времен. После вычисления в глобальные переменные записываются текущие расход и время, которые на следующем цикле будут использованы в качестве предыдущих. Периодичность опроса - 55 мс.
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
В этом случае рекомендуется использовать значение атрибута 88 числового канала, который получает от датчика значение текущего уровня воды.