PDA

Просмотр полной версии : Немного вопросов по ST OWEN Logic.



MechanicV
17.04.2023, 18:32
Всём добрый день. Я начал изучать PLC взял для начала Программируемые реле ПР200 оно с ЖК и кнопками на панели оченьудобно.
Так вот при использовании собственной функции написанной в ST, как можно сохранять значение переменных i и t установленных в условии if inputVariable = true then после того как переменная
inputVariable приняла значения false?


function function1: udint; //имя функции и тип данных выхода
var_input //объявление входных переменных
inputVariable : bool; //входная переменная с типом данных bool
end_var

var //объявление локальных переменных
i : udint; //локальная переменная с типом данных real и начальным значением 13.3
t : udint;
end_var
if inputVariable = true then
i := 200;
t := 300;
end_if

end_function

Есть ли способ вставлять между строками задержку выполнения кода?
Как можно более простым способом инкрементировать переменную? Скажем в Си это делается так


int tmp=0;
while(1)
{
tmp++;
}

Но такого оператора в ST как ++ я не нашёл.
А ещё в самой программе OWEN Logic есть инструкции по работе с программой я так понимаю в ней не всё есть?

MechanicV
17.04.2023, 19:35
или дополнительно два входа и два входа и с наружи функции повесить обратные связи

Два входа можно сделать в функции, а вот два выхода не нашёл как. Если можно как то два выхода вывести из функции подскажите пожалуйста?

kondor3000
17.04.2023, 20:23
Два входа можно сделать в функции, а вот два выхода не нашёл как. Если можно как то два выхода вывести из функции подскажите пожалуйста?

В функции не может быть 2 выхода, только 1 и в ней нет памяти , поэтому, всё что нужно запомнить надо вывести и подать на входы через линию задержки.
Например надо вывести 23 и 45, 23*100+45= 2345, на выходе надо отнять 45 и 2300/100=23, получите искомые 23 и 45.
Или так 2345/100=23, 2345-23*100=45

В Лоджике язык ST далеко не полный, его пока сделали в основном для расчётов. ФБ пока нет и многого другого тоже.
Кое что можно посмотреть здесь https://owen.ru/forum/showthread.php?t=37203
И здесь https://owen.ru/forum/showthread.php?t=35489&page=35

MechanicV
17.04.2023, 21:43
Это всего навсего Программируемые реле так что многого хочу. Типа огромный шкаф с релюшками.

lagutin
20.04.2023, 08:18
А какая задача стоит? Если правильно поставить задачу, может и возможностей ПР с головой хватит? И почему все хотят несколько выходов у функции? Ни в одном языке программирования нет более одного(насколько я знаю). Выкручиваются передачей массива, к примеру, на выход. Ну а чем число c плавающей запятой не массив. Пиши байты, а потом извлекай..
Задержка выполнения программы с помощью цикла - так везде не советуют делать. Выполнение чего то или нет должно идти по условиям.

melky
20.04.2023, 08:41
lagutin непосредственно выхода возвращаемого значения больше одного нет, но есть out которые позволяют сделать "два" и более выходов :)

lagutin
20.04.2023, 10:53
Если имеется ввиду передача параметров по ссылке, то ну их... Я их побаиваюсь)) А при наличии такого отладчика(очень скромного) можно закопаться. ИМХО.

MechanicV
24.04.2023, 18:00
Если имеется ввиду передача параметров по ссылке

Почему бы и нет? Но увы данный метод пока отсутствует в ST OWEN Logic