This is topic Программа на Техно ST in forum TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/31/t/001709.html

Posted by Booster0 (Участник № / Member № 8431) on :
 
Добрый день. Для подсчета расхода воды в емкости использую следующую программу


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 числового канала, который получает от датчика значение текущего уровня воды.
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2