PDA

Просмотр полной версии : функция V3



Пьер
01.02.2018, 21:40
подскажите, как в V 3 написать функцию, чтобы она работала в PLC_PRG, а то она у меня результат не выдает. в V 2 таких проблем не было.
Спасибо!

Rake Runner
02.02.2018, 08:12
В зависимости от используемого языка программирования функция пишется либо путем ввода кода в текстовой редактор, либо размещения и соединения на холсте графического редактора пиктограмм объектов (операторов, функций, ФБ и т.д.).

Пьер
02.02.2018, 08:20
В зависимости от используемого языка программирования функция пишется либо путем ввода кода в текстовой редактор, либо размещения и соединения на холсте графического редактора пиктограмм объектов (операторов, функций, ФБ и т.д.).

Забыл, на ST. Как обращаться, чтобы она результат выдавала, что то в V3 не выходит "каменный цветок"!

Rake Runner
02.02.2018, 08:31
Как-то типа того:

35376

Пьер
02.02.2018, 08:47
Как-то типа того:

35376

В том то и дело, не дает result результата в V3. а в V2 эта функция прекрасно работает.

Rake Runner
02.02.2018, 08:50
Значит, функция вызывается в PLC_PRG. А привязана ли PLC_PRG к какой-нибудь задаче проекта?

Пьер
02.02.2018, 09:08
Значит, функция вызывается в PLC_PRG. А привязана ли PLC_PRG к какой-нибудь задаче проекта?

FUNCTION wtr : REAL
VAR_INPUT
inW:WORD;
END_VAR
VAR
Transport:REAL;
END_VAR
---------------------------------
Transport:=(WORD_TO_REAL(65535-inW))/100;


А обращаюсь.
Tr:=wtr(inW:=PLC_PRG.w01);
и так
Tr:=wtr(inW:=w01);
и так
Tr:=wtr(w01);
всегда Tr = 0
что то где то не так делаю.

capzap
02.02.2018, 09:12
FUNCTION wtr : REAL
VAR_INPUT
inW:WORD;
END_VAR
VAR
Transport:REAL;
END_VAR
---------------------------------
Transport:=(WORD_TO_REAL(65535-inW))/100;


А обращаюсь.
Tr:=wtr(inW:=PLC_PRG.w01);
и так
Tr:=wtr(inW:=w01);
и так
Tr:=wtr(w01);
всегда Tr = 0
что то где то не так делаю.

у Вас функция имеет имя wtr а в теле функции есть только присвоение к локальной переменной Transport. Вопрос что Вы хотите от такой функции?

Пьер
02.02.2018, 09:18
у Вас функция имеет имя wtr а в теле функции есть только присвоение к локальной переменной Transport. Вопрос что Вы хотите от такой функции?

Просто много переменных ВОРД преобразовать в РЕАЛ. Функция для такой рутины удобнее, чем постоянно прописывать повторяющийся код.
У меня отрицательные значения передаются по Modbus TCP из V2.3 в V3.5 и там нельзя передать значение с плавающей запятой и отрицательное, надо поизголяться.

Пьер
02.02.2018, 09:20
Битый час сижу, не знаю как свой ВОРД ТУ РЕАЛ написать.:)

capzap
02.02.2018, 09:27
Битый час сижу, не знаю как свой ВОРД ТУ РЕАЛ написать.:)
наверное не поняли, замените Transport на wtr
И не обманывайте, что такая функция в v2 работает

Пьер
02.02.2018, 09:28
Спасибо, мужики!

Пьер
02.02.2018, 09:29
наверное не поняли, замените Transport на wtr
И не обманывайте, что такая функция в v2 работает

все верно,wtr в "результате не стояла"