Точно? Я просто делал загрузочное после изменений, но вроде всё нормально работало. Всё тэги не меняли свои значения после этого. Надо будет проверить, но мне кажется вы тут не правы. Codesys 3.5 позволяет делать загрузочное при онлайн подключении.
Вид для печати
Здраствуйте. Прошу помощи: по дискретному сигналу(0 в 1) необходимо произвести вычитание двух чисел (А и В) с плавающей запятой. Далее по следующему дискретномому сигналу из разницы (А-В) вычесть В и т.д.
Если каждую операцию надо делать разово, то дискреты заводить на р триггеры и операцию присваивания от выражения выполнять по выходу этого триггера...ов
Наверное, так
Вложение 75269
Проблема в том, что А и В это переменные. Решил сделать ФБ на ST:
function_block Freq_Proxy
var_input
stp:bool;
ENA:bool;
START:real;
RAZN:real;
end_var
var_output
Q:real;
end_var
if ENA = true then
Q := START;
else
if stp= true then
Q := Q - RAZN;
else
end_if
end_if
end_function_block
Работает как надо, но за время имульса по входу stp разность производится несколько раз.
Вход на вход ENA однократно подается импульс в начале цикла.
Если честно, какая то шляпа... Сказали А и В, а сами что-то замудрили. Переведите то что вам предложили с ФБР на СТ тогда. А тут у вас не триггер, а условие, которое вы ещё и не сбрасываете потом. Да и первое условие тоже не сбросится если, то что будет? Мне ваш код непонятно, вы в условии не так писали.
Зуб болит, поэтому от нечего делать напишу код по вашему из... В голове это выглядит так:
Но тут разные дискретные сигналы... Первоначально подумал что это не один сигнал...Код:If firstbit then
firstbit:=false;
nextoper:=true;
Result:=A-B;
end if
If nextoper and secondbit then
nextoper:=false;
secondbit:=false;
Result:=Result-B
end if
Для одного:
Код:If bit then
bit:=false;
Result:=Result-B
end if