Хотелось бы добавления битовых операций AND , XOR . OR . NOT над типом данных UDINT .
Вид для печати
Хотелось бы добавления битовых операций AND , XOR . OR . NOT над типом данных UDINT .
Есть такое, только не документировано:
Вложение 78371
Если это вы мне ,то спасибо конечно за ответ , но здесь тема про язык ST.
Почему же, очень даже документировано
Вложение 78375
А.. Ну тогда ждите. Может быть когда-нибудь.
Код:function function1: udint;
var_input
X1 : udint;
X2 : udint;
end_var
function1 := uAnd(X1, X2);
end_function
Код:function uAnd: udint;
var_input
X1 : udint;
X2 : udint;
end_var
uAnd.0 := X1.0 and X2.0;
uAnd.1 := X1.1 and X2.1;
uAnd.2 := X1.2 and X2.2;
uAnd.3 := X1.3 and X2.3;
uAnd.4 := X1.4 and X2.4;
uAnd.5 := X1.5 and X2.5;
uAnd.6 := X1.6 and X2.6;
uAnd.7 := X1.7 and X2.7;
uAnd.8 := X1.8 and X2.8;
uAnd.9 := X1.9 and X2.9;
uAnd.10 := X1.10 and X2.10;
uAnd.11 := X1.11 and X2.11;
uAnd.12 := X1.12 and X2.12;
uAnd.13 := X1.13 and X2.13;
uAnd.14 := X1.14 and X2.14;
uAnd.15 := X1.15 and X2.15;
uAnd.16 := X1.16 and X2.16;
uAnd.17 := X1.17 and X2.17;
uAnd.18 := X1.18 and X2.18;
uAnd.19 := X1.19 and X2.19;
uAnd.20 := X1.20 and X2.20;
uAnd.21 := X1.21 and X2.21;
uAnd.22 := X1.22 and X2.22;
uAnd.23 := X1.23 and X2.23;
uAnd.24 := X1.24 and X2.24;
uAnd.25 := X1.25 and X2.25;
uAnd.26 := X1.26 and X2.26;
uAnd.27 := X1.27 and X2.27;
uAnd.28 := X1.28 and X2.28;
uAnd.29 := X1.29 and X2.29;
uAnd.30 := X1.30 and X2.30;
uAnd.31 := X1.31 and X2.31;
end_function
Ещё раз спасибо за ответ с примером - (заменой полноценного AND, кстати по моим экспериментам такие замены работают раз в 30 медленнее полноценной реализации) но с реализацией замен у меня проблем нет , просто не плохо было бы ... полноценных AND OR XOR NOT.
==Код:function uAnd: udint;
var_input
X1 : udint;
X2 : udint;
end_var
uAnd.0 := X1.0 and X2.0;
...
много раз
...
uAnd.31 := X1.31 and X2.31;
end_function
или немного быстрее в некоторых случаяхКод:for i := 1 to 31 do
uAnd.31 := X1.0 and X2.0;
uAnd := shr(uAnd,1);
X1 := shr(X1,1);
X2 := shr(X2,1);
end_for
uAnd.31 := X1.0 and X2.0;
Код:M := 1;
while X1 <> 0 and X2 <> 0 do
if X1.0 and X2.0 then
uAnd := uAnd + M;
end_if
M1 := shl(M,1);
X1 := shr(X1,1);
X2 := shr(X2,1);
end_while
Ещё раз спасибо за ответ с примером - (заменой полноценного AND, кстати по моим экспериментам такие замены работают раз в 30 медленнее полноценной реализации) но с реализацией замен у меня проблем нет , просто не плохо было бы ... полноценных AND OR XOR NOT !
Для счастья не хватает использования без дополнительного ввода в функцию или функциональный блок (по заранее определённому имени) переменных из панели переменных(в том числе и сохраняемых(энергонезависимых) и сетевых).
А для Полного счастья не хватает без дополнительного ввода - вывода в функцию или функциональный блок , входов и выходов которые можно было бы использовать в виде вызова функции (типа: bpo1:=out1(0); или bpi1:=in1(); in1 забирает значение со входа 1 , а out1(0) записывает 0 на выход 1 и возвращает код ошибки при записи) .
Ну вот мои скромные пожелания ! Тогда бы ST стал в ОЛ полнофункциональным языком , а сейчас он только пристройка (хоть и удобная) к FB !
Для полного счастья что нужно - пальцы устанут стучать.
Судя по скорости обновления ОЛ-версии ST - где-то в 40х годах будут и логические с целыми в ST.
Но тем не менее уже сейчас большая разница с версиями "без ST"
А если парит какая то разница в скорости для некоторых хотелок, то проблема в архитектуре самого проекта