Siemens Simatic S7 SCL Programlama Dili

Bir forum sitesinde aşağıdaki uyarıyı görmüştüm, belki yardımcı olur, köşeli parantezler yerine () kullanılmasını söylüyor...

It will appear some errors,go in each block and correct the syntax.

I found some common errors like Indirect address..

Old (simatic v5.x) : WORD_TO_BLOCK_DB(_pt.DBNr).DD[ptw] := 0;
New (TIA Portal) : WORD_TO_BLOCK_DB(#_PT.DBNr).DD(#tPT) := 0;

The diference is in Brackets in old byte address form and parentheses in new byte address form.
 
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.
Yazımızda endüstrinin can damarı sayılabilecek PLC’yi inceleyeceğiz.
Arkadaşlar merhaba,



Tia'da IO ve Merker tanımlamak için notasyon değişmiş ve bu durum birtek S7300 ve 400 tipli eski teknoloji paketleri ile üretilen CPUlar için geçerli 1200 ve 1500 serisi plclerde eski notasyon ve karakterler ile aynı.


S7300,400 -> #_byte:=%IB(0);

S71200,1500 -> #_byte:=IB[0];

Kolay gelsin
 
Arkadaşlar merhaba ;

Tia v12 sp1 kullanıyorum aşağıdaki ifadede;

#DST:=P#I64.0 byte 2;

DST : any tipinde bu değişkenin içine input 64.0 başlayarak 2 byte değişkeni atıyorum fakat benim arzu ettiğim ise i64.0 değişkenini indirek yapabilmek. bir türlü indirek hale getirip bir fonksiyon bloğun içine alamıyorum .

İndirek hale gelirse hangi nputtan başlayarak 2 byte okumasnı istyorsam onu okumasını istiyorum

Yardımlarını bekliyorum

Kolay gelsin
 
scl dilinde yükselen kenar nasıl kullanılır. pos e, neg e.
 


arkadaşlar yukarıdaki ladder ın scl karşılığını yapabilirmisiniz?
 
Moderatör tarafında düzenlendi:
Kabaca
_T1 ( //Start on delay
IN := NOT _T2.q,
PT := T#500ms);​

_T2 ( //Start on delay
IN := NOT _T1.q,
PT := T#500ms);​

M10.0:= (_T1.q) OR (_T2.q);
 
Son düzenleme:


Sayın eletronik muh. cok yararlı bir paylaşımYukarıdaki kodu yazdığımızda 32 adet alana 1 den fazla aynı veriyi sıralamaktadır.Ek olarak ek'teki hatayı alıyoruz.Nerede Yanlış yapıyor olabiliriz. Yardımcı olabilir misiniz?

FUNCTION FC1000:VOID

VAR_IN_OUT
Start:INT; // Hedef DB deki (DB aşağıda) başlangıç indeksi
End :INT; // Hedef DB deki son indeks

END_VAR

VAR
i,jINT;
SwapINT; // Takas degişkeni verileri yer degiştirmede kullandım
END_VAR

BEGIN
FOR i:=Start TO (End-1) BY 1 DO // İç içe iki for döngüsüyle verileri
FOR j:= i+1 TO End BY 1 DO // tarıyoruz
IF DB1013.Data> DB1013.Data[j] THEN // i ve j inci veriler test edilir
Swap :=DB1013.Data[j]; // Yer degiştirme işlemi yapıyoruz
DB1013.Data[j]:=DB1013.Data;
DB1013.Data:=Swap;
END_IF;
END_FOR;
END_FOR;
END_FUNCTION

DATA_BLOCK DB1013 //Hedef DB miz DB1013, 32 adet bilgi var içinde
STRUCT
Data: ARRAY [0..31] OF DINT;
END_STRUCT
BEGIN

END_DATA_BLOCK
 
Son düzenleme:
CASE "deger".cevrim.giris.sayici OF
0:
IF "giris_sensoru" = 1 OR "Data_blok_1".bosalt = 1 THEN
"kaliciGKONV1" := 1;
END_IF;

"konve1".TONR(IN:="kaliciGKONV1",
PT:="deger".zaman.giris,
Q=>"kaliciGKONV1_cikis",
ET=>"anime_zaman".giris1);

IF "kaliciGKONV1_cikis" = 1 THEN
"kaliciGKONV1" := 0;
"deger".cevrim.giris.sayici := 5;
END_IF;

5:
IF "deger".ENCn_zincir.zemin = 1 AND "giris_sensoru" AND ("on_guvenlik" = 0 OR "arka_guvenlik") THEN
"kaliciGZINCIR_UP" := 1;
RESET_TIMER("konve1");
END_IF;
IF "deger".ENCn_zincir."6dan7ye" = 1 THEN
"kaliciGZINCIR_UP" := 0;
"deger".cevrim.giris.sayici := 10;
END_IF;


.
.
.
.


burada konve1 timerın girişine bağlanan tag gittiği zaman süre kaldığı yerden devam ediyor mu?
simülasyonda timer girişi kesildği an timer tekrar başa dönüyor ama fbd ya da lad dilinde böyle bir sıkıntı olmuyor.
simülasyonla mı alakalı yoksa bi yer mi atladım.
yardımcı olursanız çok sevinirim.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…