УкраїнськаEnglishmRussian
Вход/Новый
В теме нет новых постов

Адресация к функции библиотеки


Автор Сообщение
Сообщение создано: 08. 10. 2018 [12:47]
rainproof
Виктор Иванов
Создатель темы
Зарегистрирован(а) с: 02.02.2018
Сообщения: 32
Создал функцию управления заслонкой в библиотеке techApp
JAVASCRIPT
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:

JAVASCRIPT
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 - функция работает корректно.

Подставил константы в функцию:
JAVASCRIPT
DAQ.JavaLikeCalc.lib_techApp.delayOn(true,1,alarm);

Но переменная alarm так же не принимает значения true


В чем может быть причина? ведь путь указан в соответствии с мануалом и примерами в демопроекте.



[Сообщение редактировалось 1 раз(а), в последний раз 08.10.2018 в 12:55.]
Сообщение создано: 08. 10. 2018 [13:17]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
Что-то из alarm_tmp, t_al, alarm — возврат, и что очевидно исключает его из списка аргументов, перенося в результат функции. Или в определении указанных аргументов, в середине или перед, есть ещё ряд других.

В любом случае изучайте примеры, которых в ДемоБД много и они работают!

P.S. А вообще не понятно зачем delayOn() делать таким образом если её можно реализовать встроенной функцией, если она будет использоваться только в вызывающей.

Learn, learn and learn better than work, work and work.
Сообщение создано: 08. 10. 2018 [13:27]
rainproof
Виктор Иванов
Создатель темы
Зарегистрирован(а) с: 02.02.2018
Сообщения: 32
"roman" wrote:

не понятно зачем delayOn() делать таким образом если её можно реализовать встроенной функцией, если она будет использоваться только в вызывающей.

у вас в демопроекте в функции pipe1_1 используется вызов функции DAQ.JavaLikeCalc.lib_techApp.pipeBase
Я планировал использовать функцию delayOn не только в составе функции управления заслонкой. Можно конечно включить код функции delayOn в текст кода функции управления заслонкой, но мне стало интересно. почему в вашей функции вызов DAQ.JavaLikeCalc.lib_techApp.pipeBase работает. а в моей - вызов DAQ.JavaLikeCalc.lib_techApp.delayOn - не работает.



16210