| ||
| | | |||||||
Siemens Simatic S7 SCL Programlama DiliPLC Genel Katagorisinde ve Siemens PLC - Program & Dökümanlar Forumunda Bulunan Siemens Simatic S7 SCL Programlama Dili Konusunu Görüntülemektesiniz.=>Simatic SCL Nedir? Simatic SCL Siemensin S7 serisi PLC lerinde kullandığı yüksek seviyeli programlama dilidir. S tructured C ontrol L ... |
|
![]() |
| | LinkBack | Seçenekler | Stil |
| | #1 (permalink) |
| Simatic SCL Nedir? Simatic SCL Siemensin S7 serisi PLC lerinde kullandığı yüksek seviyeli programlama dilidir. Structured Control Language anlamına gelir. Bu yazılım dili bir çoğumuzun aşina olduğu Delphi gibi editörlerin ana dili olan Pascal yazılım diline dayanır. Yazılım içerisinde tıpkı Ladder, Graph, STL ve FBD gibi HMI (Human Machinery Interface) temeline dayanan genel yazılımların tüm fonksiyonlarını yapabilir ve bilgisayar gibi hafızada değişkenler oluşturabilir bunları Data Blocklara atayabilir onlardan alabilir. Ayrıca Pascal dili yardımıyla Counter, Timer, Set,Reset, Clock, Interrupt, System Function gibi işlemlerede üst düzeyde izin verir. Birçok PLC yazılımcı firma bu dili çok komplike ve uzman seviyesinde bilgi gerektirdiğinden kullanmakta zorlanır ama genel olarak Dilin becerisi PLC üzerinde çok fazladır. Örnek kodu şu biçimde özetlenebilir: S_CUD (C_NO:=C12, CD:=I0.0, CU:=I0.1, S:=I0.2 & I0.3, PV:=120, R:=FALSE, CV:=binVal, Q:=actFlag); FUNCTION_BLOCK COUNT VAR_INPUT Count: ARRAY [1..4] of STRUCT C_NO: INT; PV : WORD; END_STRUCT; . . END_VAR . . FOR I:= 1 TO 4 DO S_CD(C_NO:=Count[i].C_NO, S:=true, PV:= Count[i].PV); END_FOR; FUNCTION_BLOCK COUNTER VAR_INPUT MYCounter:COUNTER; END_VAR . . CurrVal:=S_CD (C_NO:=MyCounter,.....); Bu örnek kodlar sayesinde SCUD tipinde yukarı aşağı sayıcının gerektirdiği aktif olma sinyali, Counter parametreleri ve sayıcı içeriğinin nerelerle ilişkilendirildiği gibi faktörler oluşturduk. Orta ve temel düzey kullanıcılar için öğrenilmesi tavsiye edilmese bile ileri düzey kullanıcılar için oldukça spesifik işlemler yaptırabilmektedir. SCL Editörünün çalıştırılması için Simatic Manager ve Simatic SCL V5.3 bilgisayarınızda yüklü olmalıdır. [Lütfen. Üye Olunuz...]
__________________ Aklıyla övünen kişi, hücresiyle övünen mahkuma benzer. Albert Einstein. Konu MuraTh tarafından (29-10-2009 Saat 00:35 ) değiştirilmiştir.. | |
| | |
| Sponsorlarımız |
| | #2 (permalink) |
![]() | Evet fluke kardeş SCL güçlü bir dil, bu gücü daha çok komplex algoritmaların oluşturulması, Data Bloklarla ilgili sıralama, veya matemetiksel işlemler, indeksli değişkenler oluşturularak bilgilerin taranması vs gibi işlemlerde bizlere çok kolaylık getiren Pascal tabanlı bir dil... For Next , While End, Do While, Repat Until gibi döngüleri PLC prglarken kullanabiliyorsunuz ve bu size diğer dillerde yazılmış algoritmaların PLC tarafına adapte edilmesinde baya kolaylık sağlıyor.(Tabi SCL dilini compile ettiğinizde STL olarak karşımıza çıkıyor.) 3 SCL AVANTAJLARI NELERDİR? Scl yüksek seviyeli bir programlamanın bütün avantajlarını sunmaktadır. SCL bu esnekliği ile PLC programcılığı için oldukça kolaylaştırıcı rol oynamaktadır. Programcı SCL ile istediği yapıları istediği programlama tekniğini (STATE metodu,İLİŞKİSEL metodu. vs.) kullanarak ortaya koyabilir. SCL STEP 7 için kullanılan blok yapılarını destekler. Dolayısıyla SCL içerisinde STL’ de ya da Ladder ’da oluşturulan bloklar çağırılabilir ve aynı şekilde SCL programlama dili kullanılarak oluşturulan bloklar STL’de ve Ladder ‘da çağırılabilir. SCL dilinin yapısını fonksiyonların oluşturulmasını örneklerle anlatan ingilizce bir döküman [Lütfen. Üye Olunuz...] S7-SCL V5.3 for S7-300/400 manuali: [Lütfen. Üye Olunuz...]
__________________ Programlama Sanatı Teknik lise mezunu... Konu elektronikmuh tarafından (30-10-2009 Saat 16:39 ) değiştirilmiştir.. |
| | |
| | #3 (permalink) |
![]() | 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
__________________ Programlama Sanatı Teknik lise mezunu... Konu elektronikmuh tarafından (15-01-2009 Saat 10:14 ) değiştirilmiştir.. |
| | |
| | #4 (permalink) |
![]() | Kod: // SCL dilide çıkan kenar algılama ve yapılacak işlemler ile ilgili örnektir. FUNCTION FC10:VOID VAR_INPUT Manual : BOOL; END_VAR VAR Manual_FM : BOOL; END_VAR //Edge evalaution (rising edge) IF Manual AND NOT Manual_FM THEN (*rising edge*); END_IF; Manual_FM := Manual; //Correct edge memory bit END_FUNCTION
__________________ Programlama Sanatı Teknik lise mezunu... Konu elektronikmuh tarafından (15-01-2009 Saat 10:16 ) değiştirilmiştir.. |
| | |
| | #5 (permalink) |
![]() ![]() Üyelik Tarihi: 11-05-07 Üye No : 11982 Yaş: 26 Mesajlar: 7
Popularite : 11 Populerlik : ![]() | selamlar acaba kandi yaptığınız örnekler varsa yayınlayabilir misiniz? PLC dünyasına direk bu dille daldım. fakat bazı fonksiyonları ve kullanımları anlayabilmem için daha basit ve daha fazla örnege ihtiyacım var. ben yaptığım basit bir otomasyonu gönderiyorum. inşallah buradan birbirimize yardım ederek bu dille siemens plc programlamayı gelişterebiliriz. Aşağıdaki program baraj kontrolü, bütün kodların açıklamaları yanlarında yazılı, CPU 315, 24DC'lik dijital giriş çıkış var. Lütfen birbirimize yardımcı olalım. bu işe yeni başlayan arkadaşların tecrübeli arkadaşlardan öğreneceği çok şey var Kod: FUNCTION FC1:VOID
//Giriş deklarasyonları yapıldı
//-----------------------------------------------------------------------------------------------
VAR_INPUT
basla:BOOL;
bitir:BOOL;
uyari1:BOOL;
uyari2:BOOL;
uyari3:BOOL;
END_VAR
//-----------------------------------------------------------------------------------------------
//çıkış deklarasyonları yapıldı
//-----------------------------------------------------------------------------------------------
VAR_OUTPUT
normal_calisma:BOOL;
uyari_lambasi:BOOL;
sesli_uyari:BOOL;
baraj_kapaklari:BOOL;
END_VAR
//-----------------------------------------------------------------------------------------------
//yanıp sönme için gerekli döngünün deklarasyonu yapıldı
//-----------------------------------------------------------------------------------------------
VAR
i:INT;
END_VAR
//-----------------------------------------------------------------------------------------------
BEGIN
IF basla=1 AND bitir=0 THEN //başla ve bitir butonlarına göre baraj sistemi kontrolü başlangıcı
i:=i+1; // yanıp sönme işlemi için sayıcı
IF uyari1=1 THEN //eğer uyarı1 gelirse yapılacakların kodlandığı alan
//yanıp sönme için yazılan kod uyarı lambası 2 sn aralıklarla yanıp sönecek
//-----------------------------------------------------------------------------------------------
IF i>0 AND i<100 THEN
uyari_lambasi:=1;
END_IF;
IF i>100 AND i<200 THEN
uyari_lambasi:=0;
END_IF;
IF i>200 THEN
i:=0;
END_IF;
//-----------------------------------------------------------------------------------------------
//uyarı1 gelmezse normal çalışma lambası yanacak ve uyarı1 lambası sönecektir
//-----------------------------------------------------------------------------------------------
ELSIF uyari1=0 THEN
normal_calisma:=1;
uyari_lambasi:=0;
END_IF;
//-----------------------------------------------------------------------------------------------
//uyarı1 ve uyarı2 geldiğinde ve gelmediğinde uyarı1 ile olusacak uyarılar yanında sesli uyarı
//da aktif olacak veya sesli uyarı pasif yapılacaktır. bu arada eğer uyarı1 ve uyarı2 gelmezse
//normal çalışma ışığı yanacaktır.
//-----------------------------------------------------------------------------------------------
IF uyari2=1 AND uyari1=1 THEN
sesli_uyari:=1;
ELSE
normal_calisma:=1;
sesli_uyari:=0;
END_IF;
//-----------------------------------------------------------------------------------------------
//uyarı1, uyarı2 ve uyarı3 geldiğinde ve gelmediğinde uyarı1 ve uyarı2 ile olusacak uyarılar
//yanında baraj kapakları da aktif olacak veya baraj kapakları pasif yapılacaktır. bu arada
//eğer uyarı1, uyarı2 ve uyarı3 gelmezse normal çalışma ışığı yanacaktır.
//-----------------------------------------------------------------------------------------------
IF uyari3=1 AND uyari2=1 AND uyari1=1 THEN
baraj_kapaklari:=1;
ELSE
normal_calisma:=1;
baraj_kapaklari:=0;
END_IF;
//-----------------------------------------------------------------------------------------------
//eğer başla butonuna basılmazsa ve bitir butonuna basılırsa yapılacaklar
//-----------------------------------------------------------------------------------------------
ELSE
normal_calisma:=0;
uyari_lambasi:=0;
sesli_uyari:=0;
baraj_kapaklari:=0;
//-----------------------------------------------------------------------------------------------
END_IF;
END_FUNCTION
ORGANIZATION_BLOCK OB1
BEGIN
//FC1 fonksiyonunun deklare edilen giriş ve çıkışlara göre çağırılması
//-----------------------------------------------------------------------------------------------
FC1(basla:=I0.0,bitir:=I0.1,uyari1:=I0.2,uyari2:=I0.3,uyari3:=I0.4,normal_calisma:=Q0.0,uyari_lambasi:=Q0.1,sesli_uyari:=Q0.2,baraj_kapaklari:=Q0.3);
//-----------------------------------------------------------------------------------------------
END_ORGANIZATION_BLOCK
Konu elektronikmuh tarafından (19-03-2009 Saat 11:12 ) değiştirilmiştir.. |
| | |
| | #6 (permalink) |
![]() | Kod: Function f_lin : real title ='f_lin' var_input x : real; a : real; b : real; end_var var end_var f_lin := a * x + b; end_function
__________________ Programlama Sanatı Teknik lise mezunu... Konu elektronikmuh tarafından (18-02-2009 Saat 11:43 ) değiştirilmiştir.. |
| | |
| | #7 (permalink) |
![]() ![]() Üyelik Tarihi: 01-08-07 Üye No : 16667 Yaş: 23 Mesajlar: 8
Popularite : 11 Populerlik : ![]() | bu dili öğrenecek arkadaşlara tavsiye pascal dilini iyi öğrensinler.Mühendislik hesaplamalarında hala geçerliliğini korumaktadır çünkü yüksek seviyesi(anlaşılabilirlik) karmaşık gibi görünen problemleri çözmeyi kolaylaştırmaktadır saygılarımla |
| | |
| | #8 (permalink) |
![]() ![]() Üyelik Tarihi: 16-07-06 Üye No : 424 Yaş: 25 Mesajlar: 2
Popularite : 10 Populerlik : ![]() | Merhaba. SCL dilinde yazdığımız program FOR döngüsü sırasında programı Loop'a mı sokuyor yoksa OB döngüsünü tamamlatıyor mu?? Eğer Loop içerisinde kalıyorsa programın döngü süresinin uzaması ve diğer yapılacak işlemlerin gecikmesi söz konusu olacaktır. Görüşleriniz nelerdir acaba arkadaşlar? |
| | |
| | #9 (permalink) |
![]() ![]() Üyelik Tarihi: 11-05-07 Üye No : 11982 Yaş: 26 Mesajlar: 7
Popularite : 11 Populerlik : ![]() | OB1 fonksiyonunun döngüsel özelliği vardır. onun için uzun zaman alan döngüler yerine OB1 fonksiyonun bu özelliği kullanılabilir.
__________________ [Lütfen. Üye Olunuz...] [Lütfen. Üye Olunuz...] [Lütfen. Üye Olunuz...] [Lütfen. Üye Olunuz...] [Lütfen. Üye Olunuz...] [Lütfen. Üye Olunuz...] [Lütfen. Üye Olunuz...] [Lütfen. Üye Olunuz...] [Lütfen. Üye Olunuz...] |
| | |
![]() |
| Etiketler |
| dili, programlama, scl, siemens, simatic |
| Seçenekler | |
| Stil | |
| |
Benzer Konular | ||||
| Konu | Konuyu Başlatan | Forum | Cevaplar | Son Mesaj |
| Microsoftun Simülasyonlu Robot programlama dili indirin!(Free!) | elektronikmuh | Robotik | 14 | 25-02-2010 10:55 |
| Siemens Simatic S7 Graph Programlama dili | Fluke | Siemens PLC - Program & Dökümanlar | 24 | 16-01-2010 22:52 |
| siemens simatic S5(İKİNCİ EL) | seric | İkinci El Pazarı | 7 | 10-07-2009 16:28 |
| Ladder Programlama Dili | cek_83 | Siemens PLC - Program & Dökümanlar | 2 | 28-05-2009 11:55 |
| S7 higraph programlama dili | cek_83 | Siemens PLC - Program & Dökümanlar | 0 | 26-05-2009 23:03 |