PDA

Просмотр полной версии : функциональный блок с тремя входами



in37usd
28.04.2015, 15:12
объявил фб
.....................
VAR_INPUT
inL:WORD;
in_real_TD:REAL;
in_real_resistor_L:REAL;
END_VAR
VAR_OUTPUT
outL:WORD;
END_VAR
VAR
l:word;
tempL: REAL;
//in_real: REAL;
END_VAR
...........................................
тело
..........................
l:=inL;
IF masL[l]-in_real_TD > deltaL THEN
masL[l]:=in_real_resistor_L;
masTD[l]:=in_real_TD;
arrN[l]:=(td-td_nul)/k_td;
tempL:=masL[l] -deltaL;
l:=l+1;
outL:=l;
masL[n]:=tempL ;
END_IF
.......................
как в тексте программы передатьв него значения и из него тоже???
fbL(inL:=n;in_real_TD:=td;in_real_resistor_L:=t1; ); //дает ошибку

capzap
28.04.2015, 15:43
Вы для каждого вопроса будете тему создавать, лучше внимательно исследуйте свой код, какого типа у Вас переменная outL ?

in37usd
28.04.2015, 15:55
word
нет вопросов -нет работы

Евгений Кислов
28.04.2015, 15:56
В CODESYS нажимаете F1. В Справке - Понятия и основные компоненты--->Программные компоненты-"POU"--->Функциональный блок--->Вызов функционального блока.

Обращайте внимание на синтаксис, в частности, проверьте, сколько ";" вы используете в вызове функционального блока, и сколько нужно на самом деле.

in37usd
28.04.2015, 16:03
у меня рус help и нет выз фб
посмотрю в англ

Евгений Кислов
28.04.2015, 16:08
у меня рус help и нет выз фб

Вы уверены?

17955

capzap
28.04.2015, 16:12
объявил фб
.....................
VAR_INPUT
inL:WORD;
in_real_TD:REAL;
in_real_resistor_L:REAL;
END_VAR
VAR_OUTPUT
outL:WORD;
END_VAR
VAR
l:word;
tempL: REAL;
//in_real: REAL;
END_VAR
...........................................
тело
..........................
l:=inL;
IF masL[l]-in_real_TD > deltaL THEN
masL[l]:=in_real_resistor_L;
masTD[l]:=in_real_TD;
arrN[l]:=(td-td_nul)/k_td;
tempL:=masL[l] -deltaL;
l:=l+1;
outL:=l;
masL[n]:=tempL ;
END_IF
.......................
как в тексте программы передатьв него значения и из него тоже???
fbL(inL:=n;in_real_TD:=td;in_real_resistor_L:=t1; ); //дает ошибку
теперь вижу что подправили, а дальше что, Вам не видно что у вас подчеркивается красным цветом?
word напишите заглавными буквами
комменты ввиде // не проходят, используйте (* *)
(inL:=2, in_real_TD:=36.6, in_real_resistor_L:=25.5, outL=>x ); это выдал асистент(нажатие на клавишу F2)
вобщем читайте документацию

in37usd
28.04.2015, 16:33
у меня уже без ошибок
а как писать , если три выхода- три указателя ЧЕРЕЗ ЗАПЯТУЮ????

capzap
28.04.2015, 16:37
у меня уже без ошибок
а как писать , если три выхода??

так же, либо через => , либо экземпляр_фб.выходная_переменная
в документации всё это расписано

in37usd
29.04.2015, 14:12
а где тут задавать новые появившиеся вопросы - прямо в этой теме??
у меня проблема такая :
условие
if masL[n]-t1>deltaL Then

где masL[n] real
t1-real
deltaL:real:=184.4;
"СРАБАТЫВАЕТ "по разному - в лучшем случае при 185=masL[n]-t1, а в худшем при 536=masL[n]-t1
что делать?
оно всегда должно срабатывать при 185!!!!!!!!!!!!!

_Mikhail
29.04.2015, 14:49
оно всегда должно срабатывать при 185!!!!!!!!!!!!!

У Вас переменная типа REAL, т.е. число с плавающей запятой. При использовании REAL не рекомендуется ставить условие =, если нужно срабатывание при повышении , то постальте >=
, если при понижении , то <=

in37usd
04.05.2015, 10:27
У Вас переменная типа REAL, т.е. число с плавающей запятой. При использовании REAL не рекомендуется ставить условие =, если нужно срабатывание при повышении , то постальте >=
, если при понижении , то <=

пробовал , делал >= так тогда условие начинает "срабатывать " уже когда выполняется равенство, а меня мало это устраивает
это видно связано с быстродействием системы в целом

а как сделать опрос только конкретной кнопки - есть ли у нее свойства(включена-выключена) или ей надо присваивать конкретную переменную????
РЕАЛЬНО- некоторые кнопки на СПК110 не хотят срабатывать - надо их , наверное , опрашивать в конкретном цикле по их свойству(включена- выключена)
В КАКОЙ ОЧЕРЕДНОСТИ ОПРАШИВАЮТСЯ КНОПКИ-МОЖЕТ ПО МЕРЕ ВОЗРАСТАНИЯ ИХ НОМЕРОВ???

in37usd
05.05.2015, 16:18
пробовал , делал >= так тогда условие начинает "срабатывать " уже когда выполняется равенство, а меня мало это устраивает
это видно связано с быстродействием системы в целом

а как сделать опрос только конкретной кнопки - есть ли у нее свойства(включена-выключена) или ей надо присваивать конкретную переменную????
РЕАЛЬНО- некоторые кнопки на СПК110 не хотят срабатывать - надо их , наверное , опрашивать в конкретном цикле по их свойству(включена- выключена)
В КАКОЙ ОЧЕРЕДНОСТИ ОПРАШИВАЮТСЯ КНОПКИ-МОЖЕТ ПО МЕРЕ ВОЗРАСТАНИЯ ИХ НОМЕРОВ???
Вопрос с кнопками на сегодня снимается- вроде все как бы работает

in37usd
08.05.2015, 18:21
Вопрос с кнопками на сегодня снимается- вроде все как бы работает

тут может хорошо начала бы работать программа а-б-с>0 прерывание по изменению знака операции
но вроде прерывания не обсуждаются на ОВЕНЕ и ассемблер тоже