Written on: 08. 10. 2018 [12:47]
|
rainproof
Виктор Иванов
Topic creator
registered since: 02.02.2018
Posts: 32
|
Создал функцию управления заслонкой в библиотеке techApp
if( (!(st_close && st_time_close && !com) && !(st_open && st_time_open && com)))
{
tmp_up=(pos>0&&pos<100)?0:(tmp_up>0&&lst_com==com)?tmp_up-1./f_frq:t_up;
pos+=(tmp_up>0)?0:(100.*(com?1.:-1.))/(t_full*f_frq);
pos=(pos>100)?100:(pos<0)?0:pos;
st_time_open=(pos>=100)?true:false;
st_time_close=(pos<=0)?true:false;
lst_com=com;
open_out = com && !st_open && !st_time_open && lst_com;
close_out = !com && !st_close && !st_time_close && !lst_com;
}
alarm_tmp = (st_close ^ st_time_close)||(st_open ^ st_time_open);
DAQ.JavaLikeCalc.lib_techApp.delayOn(alarm_tmp,t_al,alarm);
В этой же библиотеке создал функцию delayOn, для задержки активации аварийного сигнала alarm:
if(in && !flag){
time_tmp = SYS.time();
flag = true;
}
if((SYS.time() - time_tmp) > time){
out = in;
if(!in){
flag = false;
}
}
Путь из функции заслонки к функции delayOn - DAQ.JavaLikeCalc.lib_techApp.delayOn(alarm_tmp,t_al,alarm); - указан вроде как правильно.
Создал блок в BlockCalc с использованием функции работы заслонки.
При проверке работы блока заслонки - функция delayOn внутри него - не работает.
Создал блок в BlockCalc для проверки работы функции delayOn - функция работает корректно.
Подставил константы в функцию:
DAQ.JavaLikeCalc.lib_techApp.delayOn(true,1,alarm);
Но переменная alarm так же не принимает значения true
В чем может быть причина? ведь путь указан в соответствии с мануалом и примерами в демопроекте.
[This article was edited 1 times, at last 08.10.2018 at 12:55.]
|
Written on: 08. 10. 2018 [13:17]
|
roman
Roman Savochenko
Moderator Contributor Developer
registered since: 12.12.2007
Posts: 3750
|
Что-то из alarm_tmp, t_al, alarm — возврат, и что очевидно исключает его из списка аргументов, перенося в результат функции. Или в определении указанных аргументов, в середине или перед, есть ещё ряд других.
В любом случае изучайте примеры, которых в ДемоБД много и они работают!
P.S. А вообще не понятно зачем delayOn() делать таким образом если её можно реализовать встроенной функцией, если она будет использоваться только в вызывающей.
Learn, learn and learn better than work, work and work.
|
Written on: 08. 10. 2018 [13:27]
|
rainproof
Виктор Иванов
Topic creator
registered since: 02.02.2018
Posts: 32
|
"roman" wrote:
не понятно зачем delayOn() делать таким образом если её можно реализовать встроенной функцией, если она будет использоваться только в вызывающей.
у вас в демопроекте в функции pipe1_1 используется вызов функции DAQ.JavaLikeCalc.lib_techApp.pipeBase
Я планировал использовать функцию delayOn не только в составе функции управления заслонкой. Можно конечно включить код функции delayOn в текст кода функции управления заслонкой, но мне стало интересно. почему в вашей функции вызов DAQ.JavaLikeCalc.lib_techApp.pipeBase работает. а в моей - вызов DAQ.JavaLikeCalc.lib_techApp.delayOn - не работает.
|