L 0 //her cycle başında sıfırla
T MW 100
A M 10.0 //Bit 0 kontrol et
JCN m001
L MW 100
L 1 // Bit aktif ise MW100 ü 1 arttır
+I
T MW 100
m001: A M 10.1 //Bit 0 kontrol et
JCN m002
L MW 100
L 1 // Bit aktif ise MW100 ü 1 arttır
+I
T MW 100
m002: A M 10.2
JCN m003
L MW 100
L 1
+I
T MW 100
m003: A M 10.3
JCN m004
L MW 100
L 1
+I
T MW 100
m004: A M 10.4
JCN m005
L MW 100
L 1
+I
T MW 100
m005: A M 10.5
JCN m006
L MW 100
L 1
+I
T MW 100
m006: A M 10.6
JCN m007
L MW 100
L 1
+I
T MW 100
m007: A M 10.7
JCN end
L MW 100
L 1
+I
T MW 100
end: BE
FUNCTION BIT_COUNT : INT
TITLE = 'BIT_COUNT'
//
//BIT_COUNT counts the amount True of bits in a dword.
//for example: bit_count(3) returns 2 because two bits (bits 0 and 1) are true and all others are false.
//
VAR_INPUT
IN : DWORD;
END_VAR
VAR
temp: DWORD;
attemp AT temp : ARRAY[0..31] OF BOOL;
END_VAR
BEGIN
Bit_Count := 0;
temp := in;
WHILE DWORD_TO_DINT(temp) <> 0 DO
IF attemp[24] THEN Bit_Count := Bit_Count +1; END_IF;
temp := SHR(IN:=temp,N:=1);
END_WHILE;
END_FUNCTION
eğer 300- 400 veya 1500 kullanıyorsanız bitsum diye bir fonksiyon var girişine sayılmasını istediğiniz bölge çıkışıandada size setli bit sayısını verir 2#0100001=iki gibi tek komut deneyin