Хотелось бы добавления битовых операций AND , XOR . OR . NOT над типом данных UDINT .
Хотелось бы добавления битовых операций AND , XOR . OR . NOT над типом данных UDINT .
Есть такое, только не документировано:
Owen.jpg
Последний раз редактировалось EFrol; 31.08.2024 в 08:02.
Если это вы мне ,то спасибо конечно за ответ , но здесь тема про язык ST.
Почему же, очень даже документировано
1.png
А.. Ну тогда ждите. Может быть когда-нибудь.
Код: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 !
Последний раз редактировалось iljael; 31.08.2024 в 12:18.
Для полного счастья что нужно - пальцы устанут стучать.
Судя по скорости обновления ОЛ-версии ST - где-то в 40х годах будут и логические с целыми в ST.
Но тем не менее уже сейчас большая разница с версиями "без ST"
А если парит какая то разница в скорости для некоторых хотелок, то проблема в архитектуре самого проекта
Последний раз редактировалось Валенок; 31.08.2024 в 13:05.