- Katılım
- 13 Ocak 2007
- Mesajlar
- 2,353
- Puanları
- 1,866
- Yaş
- 49
Aşağıdaki kod S1-S4 Sensorleri için (4 Adet dijital çıkışlı Sensor için) tek tek sorgulama yerine sayı değeri oluşturup kodu daha rahat yazmayı ve okunaklığı sağlar. Binary en düşük değer S1 en yüksek değer S4 seçilip sayı değeri oluşturulur.
4 Sensor için 2^4(2 üzeri 4) = 16 farklı sensor durumu oluşur. n tane sensor için 2^n farklı sensor durumu oluşur.
// İstediğim durumlar
S4 =0 S4 =0 S4=0 S4=0 S4=1
S3 =0 S3 =0 S3=0 S3=1 S3=1
S2 =0 S2 =0 S2=1 S2=1 S2=1
S1 =0 S1 =1 S1=1 S1=1 S1=1
Result =0 Result =1 Result=3 Result=7 Result=15
Out.SensValue=1 ise Sadece S1 görüyor
Out.SensValue=3 ise Sadece S2-S1 görüyor.
Out.SensValue=7 ise Sadece S3-S2-S1 görüyor.
Out.SensValue=15 ise S4-S3-S2-S1 görüyor.
......
Out.SensValue Sıfırdan farklı ise sensorlerden biri görüyor vs...
4 Sensor için 2^4(2 üzeri 4) = 16 farklı sensor durumu oluşur. n tane sensor için 2^n farklı sensor durumu oluşur.
// İstediğim durumlar
S4 =0 S4 =0 S4=0 S4=0 S4=1
S3 =0 S3 =0 S3=0 S3=1 S3=1
S2 =0 S2 =0 S2=1 S2=1 S2=1
S1 =0 S1 =1 S1=1 S1=1 S1=1
Result =0 Result =1 Result=3 Result=7 Result=15
Out.SensValue=1 ise Sadece S1 görüyor
Out.SensValue=3 ise Sadece S2-S1 görüyor.
Out.SensValue=7 ise Sadece S3-S2-S1 görüyor.
Out.SensValue=15 ise S4-S3-S2-S1 görüyor.
......
Out.SensValue Sıfırdan farklı ise sensorlerden biri görüyor vs...
Kod:
(* 4 Adet sensor için oluşan binary değerleri Sayıya çevirme kodu *)
Out.SensValue :=
(( BOOL_TO_USINT(inSensors.S4) )* 8) + (( BOOL_TO_USINT(inSensors.S3) )* 4) +
(( BOOL_TO_USINT(inSensors.S2) )* 2) + (( BOOL_TO_USINT(inSensors.S1) )* 1);
Son düzenleme:
