tia portal fb

yani fb.nin kendisini döndürmek istiyorum :)
 
Yazımızda endüstrinin can damarı sayılabilecek PLC’yi inceleyeceğiz.
KNX Standardı, küçük bir rezidansın içerisindeki aydınlatma, perde panjur, klima kontrolünden, Dünya’nın en büyük havalimanlarındaki aydınlatma otomasyonu gibi çözümler için tercih edilen bir Dünya standardıdır.
Zaten Multi Instance olan bir FB'yi neden array olarak kullanmak istiyorsunuz açıkçası anlamadım. FOR döngüsü içerisinde FB her bir stepte bir kez çağırılır isterseniz FB girişlerini ve Çıkışlarını diziye atarsınız ya da diziden alırsınız olur biter. Yani FB nin dizi olması ya da olmaması burada bir şey değiştirmez aksine boşa hafıza kullanmış olursunuz. Çünkü FB zaten Multi instance dır ve zaten Multi Instance olan bir yapıyı tekrardan çoklamanın mantığı yoktur. Bu teori CodeSys içinde aynen geçerlidir. FB tipleri bir YAPI dır (Structure) ve Siemens'de "YAPI" tipi bir dizi oluşturamazsınız. Çünkü STRUCTURE kompleks bir veri tipidir.


Siemens CodeSys gibi TON yapısı kullanmaz. Ya yazılımsal Timerları kullanmalısınız (Legacy) ya da IEC Timer kullanabilirsiniz. Yukarıda bahsettiğim yöntemle tek bir multi instance timer bloğu ve değerlerini diziden alarak-vererek çoklayabilirsiniz.
 
örnek teşkil etmesi açısından :
VAR
PI_C: ARRAY [1..100] OF PI;
END_VAR

FOR x:=1 TO PumpNo DO
PI_C[X](
Enable:= Scada_Pump_Obj.SW0_ScdCmd ,
P:=Ctrl_P_Gain ,
I:=Ctrl_I_Gain ,
PV:=PI_PV[X] ,
SP:=PI_SP ,
Reset_I:= AnyCmd_P ,
Low_Limit:=Ctrl_Low_Limit ,
High_Limit:=Ctrl_High_Limit ,
I_Lim_Scaled_Per:=Ctrl_Lim_Scaled_Per ,
I_time:=t#3.0s ,
MV=>PI_MV[X] );

StartCon[X]:= PI_MV[X]>96 AND Scada_Pump_Obj.SW0_ScdCmd AND Rem[X] AND Drv[X].SW2_StopRun;

StartCon[7]:= StartCon[X] OR StartCon[7];

StopCon[X]:= PI_MV[X]<40 AND Scada_Pump_Obj.SW0_ScdCmd AND Rem[X] AND Drv[X].SW2_StopRun;

StopCon[7]:= StopCon[X] OR StopCon[7];

END_FOR;
 

Forum istatistikleri

Konular
128,369
Mesajlar
917,066
Kullanıcılar
450,244
Son üye
halilsezen

Yeni konular

Geri
Üst