FUNCTION_BLOCK FB9
Title = 'RTC'
VAR_TEMP
TarihBCD:DATE_AND_TIME;
Tarih AT TarihBCD:STRUCT
Yil:BYTE;
Ay:BYTE;
Gun:BYTE;
Saat:BYTE;
Dakika:BYTE;
Saniye:BYTE;
Milisaniye:BYTE;
END_STRUCT;
SFC1Donus:INT;
END_VAR
VAR_OUTPUT
A_Yil:INT;
A_Ay:INT;
A_Gun:INT;
A_Saat:INT;
A_Dakika:INT;
A_saniye:INT;
A_m_saniye:INT;
END_VAR
SFC1Donus:=SFC1(CDT:=TarihBCD);
A_Yil:=WORD_TO_INT(BYTE_TO_WORD(Tarih.Yil));
A_Ay:=WORD_TO_INT(BYTE_TO_WORD(Tarih.Ay));
A_Gun:=WORD_TO_INT(BYTE_TO_WORD(Tarih.Gun));
A_Saat:=WORD_TO_INT(BYTE_TO_WORD(Tarih.Saat));
A_Dakika:=WORD_TO_INT(BYTE_TO_WORD(Tarih.Dakika));
A_saniye:=WORD_TO_INT(BYTE_TO_WORD(Tarih.Saniye));
A_m_saniye:=WORD_TO_INT(BYTE_TO_WORD(Tarih.Milisaniye));
END_FUNCTION_BLOCK
CALL "RTC" , "RTC_DB"
A_Yil :=MW100
A_Ay :=MW102
A_Gun :=MW104
A_Saat :=MW106
A_Dakika :=MW108
A_saniye :=MW110
A_m_saniye:=MW112
FUNCTION deneme:VOID
title = 'deneme' // FC1 tanimladik
//Herhangi bir fonksiyon blocktan veya OB1 icerisinden bu Fonksiyonu cagirarak kullaniriz
VAR_INPUT
a : BOOL; // Bu bizim inputumuz.
END_VAR
VAR_OUTPUT
i:INT; // Buda bizim cikisimiz..
END_VAR
IF a= true THEN
i:= 1;
ELSE
i:=0;
END_IF;
END_FUNCTION
CALL "deneme" // FC1
a:=I0.0 // gercek inputumuz
i:=MW10 // Buda gercek cikisimiz.
Giriş degerini(analog bir deger olabilir) alt ve üst limitler arasında sınırlayan( max değerden büyükse maksimum, minumum değerden küçükse minumum, arasında ise direkt çıkaşa aktaran progr*****) SCL programlama kodu
Kod:FUNCTION FC50:VOID //FC50 yi kullandık VAR_INPUT //Değişkenleri tanımladıgımız kısım MX : INT; //Upper limit IN : INT; //Input value MN : INT; //Lower limit END_VAR VAR_OUTPUT OUT:INT; END_VAR // Degişken tanımlama sonu, BEGIN //Programımız buradan başlıyor IF IN > MX THEN OUT := MX; //Giris degeri IN, maksimum degerden büyükse çıkışımıza MX atanır ELSIF IN < MN THEN OUT := MN; //Giriş degeri IN, minumumdan küçükse çıkışımıza MN degeri atanır ELSE OUT := IN; // Giriş degerimiz iki deger arasındaysa OUT=IN, yani çıkış=giriş END_IF; // Şart sonu END_FUNCTION