{"id":34019,"date":"2025-11-10T02:01:01","date_gmt":"2025-11-09T23:01:01","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/tia-portal-ile-akilli-isik-kontroloru-durum-makinesi-programlama\/"},"modified":"2025-11-10T02:01:01","modified_gmt":"2025-11-09T23:01:01","slug":"tia-portal-ile-akilli-isik-kontroloru-durum-makinesi-programlama","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/tia-portal-ile-akilli-isik-kontroloru-durum-makinesi-programlama\/","title":{"rendered":"TIA Portal ile Ak\u0131ll\u0131 I\u015f\u0131k Kontrol\u00f6r\u00fc Durum Makinesi Programlama"},"content":{"rendered":"<p><body><\/p>\n<p>Ak\u0131ll\u0131 bina otomasyonundan end\u00fcstriyel tesislere kadar bir\u00e7ok alanda kar\u015f\u0131m\u0131za \u00e7\u0131kan \u0131\u015f\u0131k kontrol sistemleri, basit gibi g\u00f6r\u00fcnse de dinamik ihtiya\u00e7lara cevap verebilmek i\u00e7in karma\u015f\u0131k bir yap\u0131ya b\u00fcr\u00fcnebilir. Bu makale, Siemens TIA Portal ortam\u0131nda bir \u0131\u015f\u0131k kontrol\u00f6r\u00fc i\u00e7in durum makinesi (state machine) mant\u0131\u011f\u0131n\u0131 ad\u0131m ad\u0131m nas\u0131l programlayaca\u011f\u0131n\u0131z\u0131 detayl\u0131 bir \u015fekilde a\u00e7\u0131klayarak, s\u0131f\u0131rdan ba\u015flayarak profesyonel d\u00fczeyde \u00e7\u00f6z\u00fcmler \u00fcretmenizi sa\u011flayacakt\u0131r.<\/p>\n<p>G\u00fcn\u00fcm\u00fcz otomasyon sistemleri, sadece basit a\u00e7ma\/kapama fonksiyonlar\u0131n\u0131n \u00f6tesinde, belirli olaylara g\u00f6re davran\u0131\u015flar\u0131n\u0131 de\u011fi\u015ftiren, farkl\u0131 modlar aras\u0131nda ge\u00e7i\u015f yapan dinamik yap\u0131lar gerektirir. \u0130\u015fte tam bu noktada durum makineleri devreye girer. Peki, bir durum makinesi tam olarak nedir ve TIA Portal gibi bir PLC (Programlanabilir Mant\u0131k Denetleyicisi) ortam\u0131nda bu yap\u0131lar\u0131 kullanmak neden bu kadar kritiktir?<\/p>\n<p>Bir durum makinesi, bir sistemin belirli bir anda i\u00e7inde bulunabilece\u011fi sonlu say\u0131da &#8220;durumu&#8221; ve bu durumlar aras\u0131nda belirli &#8220;olaylar&#8221; veya &#8220;ko\u015fullar&#8221; tetiklendi\u011finde nas\u0131l ge\u00e7i\u015f yapaca\u011f\u0131n\u0131 tan\u0131mlayan matematiksel bir modeldir. \u00d6rne\u011fin, bir \u0131\u015f\u0131k kontrol\u00f6r\u00fc i\u00e7in &#8220;Kapal\u0131&#8221;, &#8220;A\u00e7\u0131k &#8211; D\u00fc\u015f\u00fck Parlakl\u0131k&#8221;, &#8220;A\u00e7\u0131k &#8211; Y\u00fcksek Parlakl\u0131k&#8221;, &#8220;Yan\u0131p S\u00f6nme&#8221; gibi durumlar olabilir. Sens\u00f6rden gelen hareket alg\u0131lama sinyali, bir butona bas\u0131lmas\u0131 veya belirli bir s\u00fcre ge\u00e7mesi gibi olaylar, sistemin bir durumdan di\u011ferine ge\u00e7mesini tetikler. Bu yap\u0131, \u00f6zellikle s\u0131ral\u0131 ve olay tabanl\u0131 s\u00fcre\u00e7lerin modellenmesi ve programlanmas\u0131 i\u00e7in inan\u0131lmaz derecede g\u00fc\u00e7l\u00fc ve anla\u015f\u0131l\u0131r bir y\u00f6ntem sunar.<\/p>\n<p>Durum makinelerinin PLC programlamas\u0131ndaki \u00f6nemi birka\u00e7 temel fakt\u00f6re dayan\u0131r. Birincisi, karma\u015f\u0131kl\u0131\u011f\u0131 y\u00f6netilebilir hale getirmesidir. Birden fazla de\u011fi\u015fkenin ve ko\u015fulun i\u00e7 i\u00e7e ge\u00e7ti\u011fi senaryolarda, durum makinesi yakla\u015f\u0131m\u0131, sistemin davran\u0131\u015f\u0131n\u0131 net bir \u015fekilde g\u00f6rselle\u015ftirmemizi (genellikle durum diyagramlar\u0131 ile) ve her bir durumu ba\u011f\u0131ms\u0131z olarak ele alarak programlama hatalar\u0131n\u0131 azaltmam\u0131z\u0131 sa\u011flar. \u0130kincisi, hata tespiti ve bak\u0131m\u0131 kolayla\u015ft\u0131rmas\u0131d\u0131r. Sistem hangi durumda oldu\u011funu a\u00e7\u0131k\u00e7a belirtti\u011fi i\u00e7in, bir sorun an\u0131nda hangi durumun beklendi\u011fi ve ger\u00e7ekte ne oldu\u011fu h\u0131zla kar\u015f\u0131la\u015ft\u0131r\u0131labilir. \u00dc\u00e7\u00fcnc\u00fcs\u00fc, esneklik sunmas\u0131d\u0131r. Yeni bir \u00f6zellik eklemek veya mevcut bir davran\u0131\u015f\u0131 de\u011fi\u015ftirmek gerekti\u011finde, genellikle sadece ilgili durumlar veya ge\u00e7i\u015f ko\u015fullar\u0131 \u00fczerinde odaklanmak yeterli olur, bu da t\u00fcm program\u0131 ba\u015ftan yazma ihtiyac\u0131n\u0131 ortadan kald\u0131r\u0131r. Bu yap\u0131, \u00f6zellikle ayd\u0131nlatma otomasyonu gibi dinamik ve kullan\u0131c\u0131 etkile\u015fimli uygulamalarda vazge\u00e7ilmez bir ara\u00e7 haline gelmi\u015ftir. PLC&#8217;ler, ger\u00e7ek zamanl\u0131 i\u015fletim yetenekleri ve y\u00fcksek g\u00fcvenilirlikleri sayesinde bu t\u00fcr durum tabanl\u0131 kontrol sistemleri i\u00e7in ideal bir platform sunar.<\/p>\n<h2>TIA Portal Ortam\u0131nda PLC Programlama ve Durum Makinesi Mant\u0131\u011f\u0131 Nas\u0131l Birle\u015fir?<\/h2>\n<p>Siemens TIA Portal (Totally Integrated Automation Portal), PLC, HMI (Human Machine Interface) ve s\u00fcr\u00fcc\u00fcleri tek bir platformda birle\u015ftiren g\u00fc\u00e7l\u00fc bir m\u00fchendislik yaz\u0131l\u0131m\u0131d\u0131r. Bu entegre yakla\u015f\u0131m, otomasyon projelerinin tasar\u0131m\u0131ndan devreye al\u0131nmas\u0131na kadar t\u00fcm ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc kolayla\u015ft\u0131r\u0131r. Durum makinesi mant\u0131\u011f\u0131n\u0131 TIA Portal&#8217;da uygulamak, projenizin hem okunabilirli\u011fini hem de bak\u0131m\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131r\u0131r. TIA Portal, bu t\u00fcr mant\u0131k yap\u0131lar\u0131n\u0131 uygulamak i\u00e7in \u00e7e\u015fitli programlama dilleri sunar; Merdiven Diyagram\u0131 (LAD), Fonksiyon Blok Diyagram\u0131 (FBD) ve Yap\u0131sal Kontrol Dili (SCL).<\/p>\n<p>Durum makineleri i\u00e7in en uygun programlama dili genellikle SCL&#8217;dir (Structured Control Language). SCL, Pascal&#8217;a benzeyen \u00fcst d\u00fczey bir dildir ve IF-THEN-ELSE, CASE OF gibi yap\u0131sal programlama elemanlar\u0131n\u0131 destekler. Bu, durum ge\u00e7i\u015f mant\u0131\u011f\u0131n\u0131 ve her durumun i\u00e7indeki eylemleri \u00e7ok daha anla\u015f\u0131l\u0131r ve kompakt bir \u015fekilde ifade etmeyi sa\u011flar. LAD ve FBD de kullan\u0131labilir, ancak karma\u015f\u0131k durum makinelerinde g\u00f6rsel olarak yo\u011fun ve takip edilmesi zor hale gelebilirler. SCL ile, durum de\u011fi\u015fkenlerinizi (genellikle bir INT veya ENUM veri tipinde) tan\u0131mlayabilir, bir CASE yap\u0131s\u0131 kullanarak mevcut duruma g\u00f6re farkl\u0131 kod bloklar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rabilir ve IF ko\u015fullar\u0131 ile durum ge\u00e7i\u015flerini y\u00f6netebilirsiniz. Bu yakla\u015f\u0131m, sistemin hangi durumda oldu\u011funu ve o durumda ne yapmas\u0131 gerekti\u011fini a\u00e7\u0131k\u00e7a belirtir, b\u00f6ylece kodun hem geli\u015ftirilmesi hem de hata ay\u0131klamas\u0131 b\u00fcy\u00fck \u00f6l\u00e7\u00fcde basitle\u015fir.<\/p>\n<p>\u00d6rne\u011fin, bir \u0131\u015f\u0131k kontrol\u00f6r\u00fcnde &#8220;A\u00e7\u0131k&#8221;, &#8220;Kapal\u0131&#8221;, &#8220;Dimleme&#8221; gibi durumlar\u0131m\u0131z olsun. TIA Portal&#8217;da bir Data Block (DB) olu\u015fturarak bu durumlar\u0131 temsil eden bir de\u011fi\u015fken tan\u0131mlar\u0131z (\u00f6rne\u011fin, <code>CurrentState: INT<\/code>). Ard\u0131ndan, ana program blo\u011fumuzda (OB1 veya bir fonksiyon blo\u011fu &#8211; FB) bir CASE yap\u0131s\u0131 kullanarak bu <code>CurrentState<\/code> de\u011fi\u015fkenine g\u00f6re farkl\u0131 kod b\u00f6l\u00fcmlerini y\u00fcr\u00fct\u00fcr\u00fcz. Her CASE kolu, belirli bir duruma \u00f6zg\u00fc eylemleri ve bir sonraki duruma ge\u00e7i\u015f ko\u015fullar\u0131n\u0131 i\u00e7erir. Bu mod\u00fcler yap\u0131, yeni bir \u0131\u015f\u0131k efekti veya \u00e7al\u0131\u015fma modu eklemek istedi\u011finizde sadece ilgili durumu g\u00fcncelleyerek veya yeni bir CASE kolu ekleyerek sistemi geni\u015fletmenize olanak tan\u0131r. TIA Portal&#8217;\u0131n kapsaml\u0131 hata ay\u0131klama ara\u00e7lar\u0131 (izleme tablolar\u0131, online izleme) sayesinde, durum ge\u00e7i\u015flerini ve ilgili de\u011fi\u015fkenlerin de\u011ferlerini ger\u00e7ek zamanl\u0131 olarak takip edebilir, b\u00f6ylece olas\u0131 mant\u0131k hatalar\u0131n\u0131 h\u0131zl\u0131ca tespit edebilirsiniz.<\/p>\n<div class=\"expert-tip\">\n        Uzman \u0130pucu: Durum makinesi programlamas\u0131nda SCL kullan\u0131rken, durumlar\u0131 temsil etmek i\u00e7in bir ENUM (numaraland\u0131r\u0131lm\u0131\u015f) veri tipi olu\u015fturmak kodun okunabilirli\u011fini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131r\u0131r. \u00d6rne\u011fin, &#8216;Kapal\u0131&#8217;, &#8216;A\u00e7\u0131k&#8217;, &#8216;Yan\u0131pS\u00f6n\u00fcyor&#8217; gibi anlaml\u0131 isimler kullanmak, say\u0131sal de\u011ferler yerine mant\u0131\u011f\u0131 daha kolay takip etmenizi sa\u011flar.\n    <\/div>\n<h2>Basit Bir Ak\u0131ll\u0131 I\u015f\u0131k Kontrol\u00f6r\u00fc \u0130\u00e7in Durum Ak\u0131\u015f\u0131 Nas\u0131l Tasarlan\u0131r?<\/h2>\n<p>Ak\u0131ll\u0131 \u0131\u015f\u0131k kontrol\u00f6rleri, kullan\u0131c\u0131 deneyimini zenginle\u015ftiren ve enerji verimlili\u011fi sa\u011flayan otomasyon sistemlerinin temel ta\u015flar\u0131ndand\u0131r. Basit bir \u0131\u015f\u0131k kontrol\u00f6r\u00fc senaryosunu ele alal\u0131m: Bir odadaki \u0131\u015f\u0131\u011f\u0131n hareket alg\u0131land\u0131\u011f\u0131nda otomatik olarak yanmas\u0131n\u0131, belirli bir s\u00fcre sonra s\u00f6nmesini ve bir manuel anahtarla da kontrol edilebilmesini istiyoruz. Ayr\u0131ca, enerji tasarrufu i\u00e7in manuel a\u00e7\u0131ld\u0131\u011f\u0131nda ba\u015flang\u0131\u00e7ta d\u00fc\u015f\u00fck parlakl\u0131kta yanmas\u0131n\u0131, ancak istenirse y\u00fcksek parlakl\u0131\u011fa \u00e7\u0131kar\u0131labilmesini de bekliyoruz. Bu senaryo, durum makinesi yakla\u015f\u0131m\u0131 i\u00e7in m\u00fckemmel bir ba\u015flang\u0131\u00e7 noktas\u0131 sunar. \u0130lk ad\u0131m, sistemin hangi durumlarda bulunabilece\u011fini ve bu durumlar aras\u0131nda nas\u0131l ge\u00e7i\u015f yapaca\u011f\u0131n\u0131 belirleyen bir durum diyagram\u0131 \u00e7izmektir.<\/p>\n<p>Bu senaryo i\u00e7in temel durumlar\u0131 ve ge\u00e7i\u015fleri a\u015fa\u011f\u0131daki gibi tan\u0131mlayabiliriz:<\/p>\n<ol>\n<li><strong>Kapal\u0131 (OFF):<\/strong> I\u015f\u0131k tamamen kapal\u0131d\u0131r. Bu ba\u015flang\u0131\u00e7 durumumuzdur.<\/li>\n<li><strong>Hareket Alg\u0131land\u0131 &#8211; D\u00fc\u015f\u00fck Parlakl\u0131k (MOTION_LOW):<\/strong> Hareket sens\u00f6r\u00fc aktif oldu\u011funda ve manuel anahtar kapal\u0131yken \u0131\u015f\u0131k d\u00fc\u015f\u00fck parlakl\u0131kta yanar.<\/li>\n<li><strong>Hareket Alg\u0131land\u0131 &#8211; Y\u00fcksek Parlakl\u0131k (MOTION_HIGH):<\/strong> Hareket alg\u0131land\u0131\u011f\u0131nda, d\u00fc\u015f\u00fck parlakl\u0131kta yanan \u0131\u015f\u0131k, manuel anahtara tekrar bas\u0131ld\u0131\u011f\u0131nda y\u00fcksek parlakl\u0131\u011fa ge\u00e7er.<\/li>\n<li><strong>Manuel A\u00e7\u0131k &#8211; D\u00fc\u015f\u00fck Parlakl\u0131k (MANUAL_LOW):<\/strong> Manuel anahtara bas\u0131ld\u0131\u011f\u0131nda \u0131\u015f\u0131k d\u00fc\u015f\u00fck parlakl\u0131kta yanar (hareket olmasa bile).<\/li>\n<li><strong>Manuel A\u00e7\u0131k &#8211; Y\u00fcksek Parlakl\u0131k (MANUAL_HIGH):<\/strong> Manuel a\u00e7\u0131k durumdayken, anahtara tekrar bas\u0131ld\u0131\u011f\u0131nda \u0131\u015f\u0131k y\u00fcksek parlakl\u0131\u011fa ge\u00e7er.<\/li>\n<li><strong>Gecikmeli Kapanma (DELAY_OFF):<\/strong> Hareket sens\u00f6r\u00fc art\u0131k hareket alg\u0131lamad\u0131\u011f\u0131nda veya manuel anahtar kapat\u0131ld\u0131\u011f\u0131nda, \u0131\u015f\u0131k belirli bir s\u00fcre (\u00f6rne\u011fin 30 saniye) daha a\u00e7\u0131k kal\u0131r ve bu s\u00fcre sonunda kapan\u0131r. Bu durum, anl\u0131k hareket kesintilerinde \u0131\u015f\u0131\u011f\u0131n hemen s\u00f6nmesini engeller.<\/li>\n<\/ol>\n<p>\u015eimdi ge\u00e7i\u015f ko\u015fullar\u0131n\u0131 belirleyelim:<\/p>\n<ul>\n<li><strong>OFF -> MOTION_LOW:<\/strong> Hareket sens\u00f6r\u00fc aktif (<code>Input_MotionSensor = TRUE<\/code>) VE manuel anahtar kapal\u0131 (<code>Input_ManualSwitch = FALSE<\/code>).<\/li>\n<li><strong>OFF -> MANUAL_LOW:<\/strong> Manuel anahtar bas\u0131ld\u0131 (<code>Input_ManualSwitch = TRUE<\/code>).<\/li>\n<li><strong>MOTION_LOW -> MOTION_HIGH:<\/strong> Hareket alg\u0131lamaya devam ederken, manuel anahtara bas\u0131ld\u0131 (<code>Input_ManualSwitch = TRUE<\/code>).<\/li>\n<li><strong>MOTION_LOW -> DELAY_OFF:<\/strong> Hareket sens\u00f6r\u00fc art\u0131k aktif de\u011fil (<code>Input_MotionSensor = FALSE<\/code>) VE manuel anahtar kapal\u0131.<\/li>\n<li><strong>MOTION_HIGH -> MOTION_LOW:<\/strong> Manuel anahtara tekrar bas\u0131ld\u0131 (<code>Input_ManualSwitch = TRUE<\/code>).<\/li>\n<li><strong>MOTION_HIGH -> DELAY_OFF:<\/strong> Hareket sens\u00f6r\u00fc art\u0131k aktif de\u011fil (<code>Input_MotionSensor = FALSE<\/code>) VE manuel anahtar kapal\u0131.<\/li>\n<li><strong>MANUAL_LOW -> MANUAL_HIGH:<\/strong> Manuel anahtara tekrar bas\u0131ld\u0131 (<code>Input_ManualSwitch = TRUE<\/code>).<\/li>\n<li><strong>MANUAL_LOW -> DELAY_OFF:<\/strong> Manuel anahtar serbest b\u0131rak\u0131ld\u0131 (<code>Input_ManualSwitch = FALSE<\/code>).<\/li>\n<li><strong>MANUAL_HIGH -> MANUAL_LOW:<\/strong> Manuel anahtara tekrar bas\u0131ld\u0131 (<code>Input_ManualSwitch = TRUE<\/code>).<\/li>\n<li><strong>MANUAL_HIGH -> DELAY_OFF:<\/strong> Manuel anahtar serbest b\u0131rak\u0131ld\u0131 (<code>Input_ManualSwitch = FALSE<\/code>).<\/li>\n<li><strong>DELAY_OFF -> OFF:<\/strong> Gecikme s\u00fcresi doldu.<\/li>\n<li><strong>DELAY_OFF -> MOTION_LOW:<\/strong> Gecikme s\u00fcresi dolmadan tekrar hareket alg\u0131land\u0131.<\/li>\n<li><strong>DELAY_OFF -> MANUAL_LOW:<\/strong> Gecikme s\u00fcresi dolmadan manuel anahtara bas\u0131ld\u0131.<\/li>\n<\/ul>\n<p>Bu detayl\u0131 durum ve ge\u00e7i\u015f tan\u0131mlamalar\u0131, TIA Portal&#8217;da programlamaya ba\u015flamadan \u00f6nce mant\u0131\u011f\u0131n net bir \u015fekilde oturmas\u0131n\u0131 sa\u011flar. Her bir giri\u015f (hareket sens\u00f6r\u00fc, manuel anahtar) ve \u00e7\u0131k\u0131\u015f (\u0131\u015f\u0131k parlakl\u0131\u011f\u0131) a\u00e7\u0131k\u00e7a tan\u0131mlanmal\u0131d\u0131r. Bu ad\u0131m, karma\u015f\u0131k bir sistemi daha k\u00fc\u00e7\u00fck, y\u00f6netilebilir par\u00e7alara ay\u0131rarak projenin genel ba\u015far\u0131s\u0131 i\u00e7in kritik bir temel olu\u015fturur.<\/p>\n<h2>TIA Portal&#8217;da Ak\u0131ll\u0131 I\u015f\u0131k Kontrol\u00f6r\u00fc Durum Makinesini Ad\u0131m Ad\u0131m Nas\u0131l Programlar\u0131z?<\/h2>\n<p>\u015eimdi teorik bilgileri TIA Portal&#8217;da somutla\u015ft\u0131rma zaman\u0131. Yukar\u0131da tasarlad\u0131\u011f\u0131m\u0131z \u0131\u015f\u0131k kontrol\u00f6r\u00fc durum makinesini SCL dilini kullanarak ad\u0131m ad\u0131m programlayaca\u011f\u0131z. Bu b\u00f6l\u00fcmde, TIA Portal projesi olu\u015fturmaktan, Data Block&#8217;lar\u0131 (DB) yap\u0131land\u0131rmaya ve ana mant\u0131\u011f\u0131 SCL ile kodlamaya kadar t\u00fcm s\u00fcre\u00e7 detayland\u0131r\u0131lacakt\u0131r.<\/p>\n<h3>1. Proje Olu\u015fturma ve Donan\u0131m Konfig\u00fcrasyonu<\/h3>\n<p>\u00d6ncelikle TIA Portal&#8217;da yeni bir proje olu\u015fturun ve kullanaca\u011f\u0131n\u0131z PLC modelini (\u00f6rne\u011fin, S7-1200 veya S7-1500 serisi bir CPU) ekleyin. Giri\u015f ve \u00e7\u0131k\u0131\u015flar\u0131 tan\u0131mlamak i\u00e7in donan\u0131m konfig\u00fcrasyonunu yap\u0131n. \u00d6rne\u011fin:<\/p>\n<ul>\n<li><code>I0.0<\/code>: Hareket Sens\u00f6r\u00fc (<code>Input_MotionSensor<\/code>)<\/li>\n<li><code>I0.1<\/code>: Manuel Anahtar (<code>Input_ManualSwitch<\/code>)<\/li>\n<li><code>Q0.0<\/code>: D\u00fc\u015f\u00fck Parlakl\u0131k \u00c7\u0131k\u0131\u015f\u0131 (<code>Output_LowBrightness<\/code>) &#8211; PWM veya r\u00f6le<\/li>\n<li><code>Q0.1<\/code>: Y\u00fcksek Parlakl\u0131k \u00c7\u0131k\u0131\u015f\u0131 (<code>Output_HighBrightness<\/code>) &#8211; PWM veya r\u00f6le<\/li>\n<\/ul>\n<h3>2. Durum De\u011fi\u015fkenleri ve Zamanlay\u0131c\u0131lar \u0130\u00e7in Data Block (DB) Olu\u015fturma<\/h3>\n<p>Sistem durumunu, ge\u00e7i\u015f ko\u015fullar\u0131n\u0131 ve zamanlay\u0131c\u0131lar\u0131 y\u00f6netmek i\u00e7in global bir Data Block (DB_LightControl) olu\u015ftural\u0131m. Bu DB, durum makinesi mant\u0131\u011f\u0131m\u0131z\u0131n kalbini olu\u015fturacak ve t\u00fcm gerekli de\u011fi\u015fkenleri merkezi bir yerde tutacakt\u0131r.<\/p>\n<pre><code class=\"language-scl\">\nTYPE \"LightStates\" :\n(\n    OFF,\n    MOTION_LOW,\n    MOTION_HIGH,\n    MANUAL_LOW,\n    MANUAL_HIGH,\n    DELAY_OFF\n);\nEND_TYPE\n\n\/\/ \"DB_LightControl\" Data Block \u0130\u00e7eri\u011fi:\nVAR\n    CurrentState : \"LightStates\"; \/\/ Mevcut durum\n    PreviousState : \"LightStates\"; \/\/ Bir \u00f6nceki durum (ge\u00e7i\u015fleri izlemek i\u00e7in)\n    DelayTimer : TON; \/\/ Kapanma gecikmesi i\u00e7in zamanlay\u0131c\u0131\n    Time_Delay_ms : DINT := 30000; \/\/ Gecikme s\u00fcresi (30 saniye)\n    ManualSwitchToggle : BOOL; \/\/ Manuel anahtar i\u00e7in kenar tetikleme\n    MotionSensorInput : BOOL; \/\/ Hareket sens\u00f6r\u00fc giri\u015fi\n    ManualSwitchInput : BOOL; \/\/ Manuel anahtar giri\u015fi\n    Output_LowBrightness : BOOL; \/\/ D\u00fc\u015f\u00fck parlakl\u0131k \u00e7\u0131k\u0131\u015f\u0131\n    Output_HighBrightness : BOOL; \/\/ Y\u00fcksek parlakl\u0131k \u00e7\u0131k\u0131\u015f\u0131\nEND_VAR\n    <\/pre>\n<p><\/code><\/p>\n<p>Burada <code>LightStates<\/code> ad\u0131nda bir ENUM (numaraland\u0131r\u0131lm\u0131\u015f) veri tipi tan\u0131mlad\u0131k. Bu, kodun okunabilirli\u011fini art\u0131r\u0131r. <code>CurrentState<\/code> ve <code>PreviousState<\/code> de\u011fi\u015fkenleri, durum ge\u00e7i\u015flerini y\u00f6netmek i\u00e7in kullan\u0131l\u0131rken, <code>DelayTimer<\/code> bir TON (a\u00e7\u0131lma gecikmesi) zamanlay\u0131c\u0131s\u0131d\u0131r. Giri\u015fler ve \u00e7\u0131k\u0131\u015flar da bu DB i\u00e7inde tan\u0131mlanm\u0131\u015ft\u0131r.<\/p>\n<h3>3. Ana Kontrol Mant\u0131\u011f\u0131 \u0130\u00e7in Fonksiyon Blok (FB) Olu\u015fturma<\/h3>\n<p>Ana durum makinesi mant\u0131\u011f\u0131n\u0131 y\u00f6netmek i\u00e7in bir Fonksiyon Blok (FB_LightControl) olu\u015ftural\u0131m. Bu FB, daha sonra OB1'den \u00e7a\u011fr\u0131lacakt\u0131r. Bu, kodun mod\u00fclerli\u011fini ve yeniden kullan\u0131labilirli\u011fini sa\u011flar.<\/p>\n<pre><code class=\"language-scl\">\nFUNCTION_BLOCK \"FB_LightControl\"\nVAR_INPUT\n    In_MotionSensor : BOOL;\n    In_ManualSwitch : BOOL;\nEND_VAR\nVAR_OUTPUT\n    Out_LowBrightness : BOOL;\n    Out_HighBrightness : BOOL;\nEND_VAR\nVAR_IN_OUT\n    \/\/ DB_LightControl'dan gelen de\u011fi\u015fkenleri kullanaca\u011f\u0131z\nEND_VAR\nVAR_TEMP\n    Edge_ManualSwitch : R_TRIG; \/\/ Manuel anahtar i\u00e7in y\u00fckselen kenar tetikleyici\n    Edge_MotionSensor : R_TRIG; \/\/ Hareket sens\u00f6r\u00fc i\u00e7in y\u00fckselen kenar tetikleyici\nEND_VAR\nBEGIN\n    \/\/ Giri\u015fleri yerel de\u011fi\u015fkenlere ata\n    #DB_LightControl.MotionSensorInput := In_MotionSensor;\n    #DB_LightControl.ManualSwitchInput := In_ManualSwitch;\n\n    \/\/ Kenar tetikleyicileri g\u00fcncelle\n    #Edge_ManualSwitch(CLK := #DB_LightControl.ManualSwitchInput);\n    #Edge_MotionSensor(CLK := #DB_LightControl.MotionSensorInput);\n\n    \/\/ Durum ge\u00e7i\u015f mant\u0131\u011f\u0131\n    CASE #DB_LightControl.CurrentState OF\n        \"LightStates\".OFF:\n            \/\/ \u00c7\u0131k\u0131\u015flar\u0131 kapat\n            #DB_LightControl.Output_LowBrightness := FALSE;\n            #DB_LightControl.Output_HighBrightness := FALSE;\n\n            IF #Edge_MotionSensor.Q AND NOT #DB_LightControl.ManualSwitchInput THEN\n                #DB_LightControl.CurrentState := \"LightStates\".MOTION_LOW;\n                #DB_LightControl.DelayTimer.IN := FALSE; \/\/ Zamanlay\u0131c\u0131y\u0131 resetle\n            ELSIF #Edge_ManualSwitch.Q THEN\n                #DB_LightControl.CurrentState := \"LightStates\".MANUAL_LOW;\n                #DB_LightControl.DelayTimer.IN := FALSE; \/\/ Zamanlay\u0131c\u0131y\u0131 resetle\n            END_IF;\n\n        \"LightStates\".MOTION_LOW:\n            \/\/ D\u00fc\u015f\u00fck parlakl\u0131k a\u00e7\u0131k\n            #DB_LightControl.Output_LowBrightness := TRUE;\n            #DB_LightControl.Output_HighBrightness := FALSE;\n            #DB_LightControl.DelayTimer.IN := #DB_LightControl.MotionSensorInput; \/\/ Hareket varsa zamanlay\u0131c\u0131 \u00e7al\u0131\u015fmas\u0131n\n\n            IF NOT #DB_LightControl.MotionSensorInput AND NOT #DB_LightControl.DelayTimer.Q THEN\n                \/\/ Hareket kesildi, gecikmeli kapanmaya ge\u00e7\n                #DB_LightControl.CurrentState := \"LightStates\".DELAY_OFF;\n                #DB_LightControl.DelayTimer.PT := #DB_LightControl.Time_Delay_ms;\n                #DB_LightControl.DelayTimer.IN := TRUE;\n            ELSIF #Edge_ManualSwitch.Q THEN\n                #DB_LightControl.CurrentState := \"LightStates\".MOTION_HIGH;\n            END_IF;\n\n        \"LightStates\".MOTION_HIGH:\n            \/\/ Y\u00fcksek parlakl\u0131k a\u00e7\u0131k\n            #DB_LightControl.Output_LowBrightness := FALSE;\n            #DB_LightControl.Output_HighBrightness := TRUE;\n            #DB_LightControl.DelayTimer.IN := #DB_LightControl.MotionSensorInput; \/\/ Hareket varsa zamanlay\u0131c\u0131 \u00e7al\u0131\u015fmas\u0131n\n\n            IF NOT #DB_LightControl.MotionSensorInput AND NOT #DB_LightControl.DelayTimer.Q THEN\n                \/\/ Hareket kesildi, gecikmeli kapanmaya ge\u00e7\n                #DB_LightControl.CurrentState := \"LightStates\".DELAY_OFF;\n                #DB_LightControl.DelayTimer.PT := #DB_LightControl.Time_Delay_ms;\n                #DB_LightControl.DelayTimer.IN := TRUE;\n            ELSIF #Edge_ManualSwitch.Q THEN\n                #DB_LightControl.CurrentState := \"LightStates\".MOTION_LOW;\n            END_IF;\n\n        \"LightStates\".MANUAL_LOW:\n            \/\/ D\u00fc\u015f\u00fck parlakl\u0131k a\u00e7\u0131k\n            #DB_LightControl.Output_LowBrightness := TRUE;\n            #DB_LightControl.Output_HighBrightness := FALSE;\n            #DB_LightControl.DelayTimer.IN := #DB_LightControl.ManualSwitchInput; \/\/ Anahtar a\u00e7\u0131ksa zamanlay\u0131c\u0131 \u00e7al\u0131\u015fmas\u0131n\n\n            IF NOT #DB_LightControl.ManualSwitchInput AND NOT #DB_LightControl.DelayTimer.Q THEN\n                \/\/ Anahtar kapand\u0131, gecikmeli kapanmaya ge\u00e7\n                #DB_LightControl.CurrentState := \"LightStates\".DELAY_OFF;\n                #DB_LightControl.DelayTimer.PT := #DB_LightControl.Time_Delay_ms;\n                #DB_LightControl.DelayTimer.IN := TRUE;\n            ELSIF #Edge_ManualSwitch.Q THEN\n                #DB_LightControl.CurrentState := \"LightStates\".MANUAL_HIGH;\n            END_IF;\n\n        \"LightStates\".MANUAL_HIGH:\n            \/\/ Y\u00fcksek parlakl\u0131k a\u00e7\u0131k\n            #DB_LightControl.Output_LowBrightness := FALSE;\n            #DB_LightControl.Output_HighBrightness := TRUE;\n            #DB_LightControl.DelayTimer.IN := #DB_LightControl.ManualSwitchInput; \/\/ Anahtar a\u00e7\u0131ksa zamanlay\u0131c\u0131 \u00e7al\u0131\u015fmas\u0131n\n\n            IF NOT #DB_LightControl.ManualSwitchInput AND NOT #DB_LightControl.DelayTimer.Q THEN\n                \/\/ Anahtar kapand\u0131, gecikmeli kapanmaya ge\u00e7\n                #DB_LightControl.CurrentState := \"LightStates\".DELAY_OFF;\n                #DB_LightControl.DelayTimer.PT := #DB_LightControl.Time_Delay_ms;\n                #DB_LightControl.DelayTimer.IN := TRUE;\n            ELSIF #Edge_ManualSwitch.Q THEN\n                #DB_LightControl.CurrentState := \"LightStates\".MANUAL_LOW;\n            END_IF;\n\n        \"LightStates\".DELAY_OFF:\n            \/\/ Gecikme bitene kadar \u0131\u015f\u0131klar a\u00e7\u0131k kals\u0131n (son durumdan)\n            IF #DB_LightControl.DelayTimer.Q THEN\n                \/\/ Gecikme s\u00fcresi doldu, tamamen kapat\n                #DB_LightControl.CurrentState := \"LightStates\".OFF;\n            ELSIF #Edge_MotionSensor.Q AND NOT #DB_LightControl.ManualSwitchInput THEN\n                \/\/ Gecikme s\u0131ras\u0131nda hareket alg\u0131land\u0131\n                #DB_LightControl.CurrentState := \"LightStates\".MOTION_LOW;\n                #DB_LightControl.DelayTimer.IN := FALSE; \/\/ Zamanlay\u0131c\u0131y\u0131 resetle\n            ELSIF #Edge_ManualSwitch.Q THEN\n                \/\/ Gecikme s\u0131ras\u0131nda manuel anahtara bas\u0131ld\u0131\n                #DB_LightControl.CurrentState := \"LightStates\".MANUAL_LOW;\n                #DB_LightControl.DelayTimer.IN := FALSE; \/\/ Zamanlay\u0131c\u0131y\u0131 resetle\n            END IF;\n\n    END_CASE;\n\n    \/\/ Zamanlay\u0131c\u0131y\u0131 \u00e7a\u011f\u0131r (her d\u00f6ng\u00fcde g\u00fcncellenmeli)\n    #DB_LightControl.DelayTimer(IN := #DB_LightControl.DelayTimer.IN, PT := #DB_LightControl.DelayTimer.PT);\n\n    \/\/ \u00c7\u0131k\u0131\u015flar\u0131 fiziksel \u00e7\u0131k\u0131\u015flara ata\n    Out_LowBrightness := #DB_LightControl.Output_LowBrightness;\n    Out_HighBrightness := #DB_LightControl.Output_HighBrightness;\n\nEND_FUNCTION_BLOCK\n    <\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki SCL kod blo\u011funda, her bir durum i\u00e7in \u00f6zel bir CASE kolu tan\u0131mlanm\u0131\u015ft\u0131r. Her kol, o duruma \u00f6zg\u00fc \u00e7\u0131k\u0131\u015f eylemlerini (\u00f6rne\u011fin, d\u00fc\u015f\u00fck veya y\u00fcksek parlakl\u0131\u011f\u0131 ayarlama) ve di\u011fer durumlara ge\u00e7i\u015f ko\u015fullar\u0131n\u0131 (\u00f6rne\u011fin, hareket alg\u0131lama veya anahtar bas\u0131m\u0131) i\u00e7erir. <code>R_TRIG<\/code> fonksiyon bloklar\u0131, anahtar bas\u0131mlar\u0131n\u0131n veya sens\u00f6r de\u011fi\u015fikliklerinin sadece y\u00fckselen kenar\u0131nda (yani bir kere) alg\u0131lanmas\u0131n\u0131 sa\u011flayarak istenmeyen tekrarlayan ge\u00e7i\u015fleri engeller. <code>TON<\/code> zamanlay\u0131c\u0131, gecikmeli kapanma mant\u0131\u011f\u0131n\u0131 y\u00f6netir.<\/p>\n<h3>4. OB1'de Fonksiyon Blo\u011fu \u00c7a\u011f\u0131rma<\/h3>\n<p>Son olarak, ana organizasyon blo\u011funuz olan OB1'e gelin ve az \u00f6nce olu\u015fturdu\u011funuz <code>FB_LightControl<\/code> fonksiyon blo\u011funu \u00e7a\u011f\u0131r\u0131n. Bu FB'yi \u00e7a\u011f\u0131rd\u0131\u011f\u0131n\u0131zda, TIA Portal sizden FB i\u00e7in bir instance Data Block (\u00f6rne\u011fin, <code>DB_LightControl_Instance<\/code>) olu\u015fturman\u0131z\u0131 isteyecektir. Giri\u015fleri fiziksel I\/O'lara, \u00e7\u0131k\u0131\u015flar\u0131 ise fiziksel Q\/O'lara ba\u011flay\u0131n.<\/p>\n<pre><code class=\"language-scl\">\n\/\/ OB1 (Main)\n\/\/ FB_LightControl blo\u011funu \u00e7a\u011f\u0131r ve I\/O'lar\u0131 ba\u011fla\n\"FB_LightControl_Instance\"(\n    In_MotionSensor := \"I0.0\",\n    In_ManualSwitch := \"I0.1\",\n    Out_LowBrightness := \"Q0.0\",\n    Out_HighBrightness := \"Q0.1\"\n);\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu ad\u0131mlar\u0131 takip ederek, dinamik ve mod\u00fcler bir \u0131\u015f\u0131k kontrol\u00f6r\u00fc durum makinesini TIA Portal'da ba\u015far\u0131l\u0131 bir \u015fekilde programlam\u0131\u015f olursunuz. Kodun her bir b\u00f6l\u00fcm\u00fc, belirli bir mant\u0131\u011f\u0131 temsil etti\u011fi i\u00e7in hata ay\u0131klamas\u0131 ve bak\u0131m\u0131 olduk\u00e7a kolayd\u0131r. Ayr\u0131ca, gelecekte yeni \u00f6zellikler eklemek istedi\u011finizde (\u00f6rne\u011fin, bir gece modu veya tatil modu), sadece yeni durumlar ve ilgili ge\u00e7i\u015f ko\u015fullar\u0131 ekleyerek sisteminizi kolayca geni\u015fletebilirsiniz.<\/p>\n<h2>Geli\u015fmi\u015f Teknikler ve Esnek Tasar\u0131m \u0130pu\u00e7lar\u0131: Durum Makinenizi Nas\u0131l \u0130leriye Ta\u015f\u0131rs\u0131n\u0131z?<\/h2>\n<p>Temel bir durum makinesi uygulamas\u0131n\u0131 ba\u015far\u0131yla tamamlad\u0131\u011f\u0131n\u0131za g\u00f6re, projenizi daha sa\u011flam, esnek ve s\u00fcrd\u00fcr\u00fclebilir hale getirecek geli\u015fmi\u015f tekniklere ve tasar\u0131m ipu\u00e7lar\u0131na ge\u00e7ebiliriz. End\u00fcstriyel otomasyonda, sadece i\u015flevsellik de\u011fil, ayn\u0131 zamanda g\u00fcvenilirlik, mod\u00fclerlik ve bak\u0131m kolayl\u0131\u011f\u0131 da b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r. Bu b\u00f6l\u00fcmde, TIA Portal projelerinizde durum makinelerini optimize etmek i\u00e7in kullanabilece\u011finiz baz\u0131 stratejileri ele alaca\u011f\u0131z.<\/p>\n<h3>1. Hata Y\u00f6netimi ve G\u00fcvenli Durumlar<\/h3>\n<p>Bir durum makinesi programlarken, beklenmedik durumlar veya sens\u00f6r ar\u0131zalar\u0131 gibi hatalar\u0131 y\u00f6netmek kritik \u00f6neme sahiptir. Program\u0131n\u0131z\u0131n her zaman tan\u0131mlanm\u0131\u015f bir durumda kalmas\u0131n\u0131 sa\u011flamak i\u00e7in \"G\u00fcvenli Durum\" veya \"Hata Durumu\" (FAULT_STATE) tan\u0131mlayabilirsiniz. \u00d6rne\u011fin, kritik bir sens\u00f6r ar\u0131zaland\u0131\u011f\u0131nda veya ileti\u015fim kesintisi ya\u015fand\u0131\u011f\u0131nda, sistem otomatik olarak g\u00fcvenli bir duruma ge\u00e7er (\u00f6rne\u011fin, t\u00fcm \u0131\u015f\u0131klar\u0131 kapat\u0131r veya varsay\u0131lan bir ayara d\u00f6ner) ve operat\u00f6re bir hata mesaj\u0131 g\u00f6nderir. TIA Portal'da, bu t\u00fcr bir hata durumunu <code>CASE<\/code> yap\u0131n\u0131z\u0131n d\u0131\u015f\u0131nda veya varsay\u0131lan bir <code>ELSE<\/code> blo\u011funda i\u015fleyebilirsiniz. Hata durumundan \u00e7\u0131k\u0131\u015f i\u00e7in ise belirli bir resetleme ko\u015fulu (\u00f6rne\u011fin, bir reset butonu veya hatan\u0131n giderilmesi) tan\u0131mlaman\u0131z gerekir.<\/p>\n<h3>2. Mod\u00fcler ve Katmanl\u0131 Tasar\u0131m Yakla\u015f\u0131m\u0131<\/h3>\n<p>B\u00fcy\u00fck ve karma\u015f\u0131k otomasyon projelerinde tek bir devasa durum makinesi olu\u015fturmak yerine, sistemi daha k\u00fc\u00e7\u00fck, ba\u011f\u0131ms\u0131z ve birbirleriyle ileti\u015fim kuran mod\u00fcler durum makinelerine ay\u0131rmak \u00e7ok daha verimlidir. \u00d6rne\u011fin, \u0131\u015f\u0131k kontrol\u00f6r\u00fcn\u00fczde farkl\u0131 alanlar (mutfak, oturma odas\u0131 vb.) i\u00e7in ayr\u0131 durum makineleri veya bir \"Genel Sistem Modu\" durum makinesi (\u00f6rne\u011fin, \"Normal \u00c7al\u0131\u015fma\", \"Bak\u0131m Modu\", \"Enerji Tasarrufu Modu\") ile \"I\u015f\u0131k Kontrol\u00fc\" durum makinesi aras\u0131nda bir hiyerar\u015fi kurabilirsiniz. Bu katmanl\u0131 yakla\u015f\u0131m, kodun tekrar kullan\u0131labilirli\u011fini art\u0131r\u0131r, hata ay\u0131klamay\u0131 kolayla\u015ft\u0131r\u0131r ve tak\u0131m \u00e7al\u0131\u015fmas\u0131na daha uygun bir yap\u0131 sunar. Her bir mod\u00fcl kendi FB'si i\u00e7inde \u00e7al\u0131\u015f\u0131r ve gerekti\u011finde di\u011fer FB'lerle Data Block'lar veya FB parametreleri arac\u0131l\u0131\u011f\u0131yla veri al\u0131\u015fveri\u015finde bulunur.<\/p>\n<h3>3. Zamanlay\u0131c\u0131lar\u0131n ve Say\u0131c\u0131lar\u0131n Ak\u0131ll\u0131ca Kullan\u0131m\u0131<\/h3>\n<p>Durum makinelerinde zamanlama ve sayma fonksiyonlar\u0131 vazge\u00e7ilmezdir. TIA Portal'daki TON (a\u00e7\u0131lma gecikmesi), TOF (kapanma gecikmesi) ve TP (darbe zamanlay\u0131c\u0131s\u0131) gibi IEC zamanlay\u0131c\u0131lar\u0131 ile CTU\/CTD (yukar\u0131\/a\u015fa\u011f\u0131 say\u0131c\u0131lar) fonksiyonlar\u0131n\u0131 etkin bir \u015fekilde kullanmak, durum ge\u00e7i\u015flerini ve eylemleri hassas bir \u015fekilde kontrol etmenizi sa\u011flar. \u00d6zellikle gecikmeli kapanma, belirli bir s\u00fcre boyunca bir durumun aktif kalmas\u0131 veya bir eylemin belirli aral\u0131klarla tekrarlanmas\u0131 gibi senaryolarda bu elemanlar hayati rol oynar. Zamanlay\u0131c\u0131lar\u0131 Data Block'lar i\u00e7inde tan\u0131mlayarak ve her bir duruma \u00f6zg\u00fc s\u00fcreleri dinamik olarak atayarak esnek bir yap\u0131 olu\u015fturabilirsiniz. \u00d6rne\u011fin, farkl\u0131 durumlar i\u00e7in farkl\u0131 kapanma gecikmeleri belirleyebilirsiniz.<\/p>\n<h3>4. HMI Entegrasyonu ve Operat\u00f6r Kontrol\u00fc<\/h3>\n<p>Bir durum makinesi ne kadar iyi programlanm\u0131\u015f olursa olsun, operat\u00f6rlerin sistemle etkile\u015fim kurabilmesi ve durumunu izleyebilmesi \u00f6nemlidir. TIA Portal'\u0131n entegre HMI tasar\u0131m ara\u00e7lar\u0131n\u0131 kullanarak, durum makinenizin mevcut durumunu g\u00f6steren grafiksel aray\u00fczler tasarlayabilirsiniz. Operat\u00f6rler, HMI paneli \u00fczerinden manuel modlar aras\u0131nda ge\u00e7i\u015f yapabilir, gecikme s\u00fcrelerini de\u011fi\u015ftirebilir veya hata durumlar\u0131n\u0131 s\u0131f\u0131rlayabilirler. PLC ile HMI aras\u0131nda veri al\u0131\u015fveri\u015fini kolayla\u015ft\u0131rmak i\u00e7in, durum de\u011fi\u015fkenlerinizi ve kontrol parametrelerinizi HMI'da eri\u015filebilir hale getirin. Bu, kullan\u0131c\u0131 dostu bir sistem olu\u015fturman\u0131n anahtar\u0131d\u0131r ve otomasyonun kabul edilebilirli\u011fini art\u0131r\u0131r.<\/p>\n<div class=\"expert-tip\">\n        Uzman \u0130pucu: Karma\u015f\u0131k durum ge\u00e7i\u015flerini g\u00f6rselle\u015ftirmek i\u00e7in durum diyagramlar\u0131n\u0131 (UML State Machine Diagramlar\u0131 gibi) kullanmak, programlamaya ba\u015flamadan \u00f6nce mant\u0131k hatalar\u0131n\u0131 tespit etmenize yard\u0131mc\u0131 olur. Ayr\u0131ca, bu diyagramlar, proje dok\u00fcmantasyonunuz i\u00e7in de de\u011ferli bir referans kayna\u011f\u0131 olu\u015fturur.\n    <\/div>\n<h3>5. Sim\u00fclasyon ve Ger\u00e7ek Zamanl\u0131 Test<\/h3>\n<p>TIA Portal'\u0131n dahili sim\u00fclat\u00f6r\u00fc (PLCSIM Advanced), fiziksel donan\u0131ma ihtiya\u00e7 duymadan durum makinenizin davran\u0131\u015f\u0131n\u0131 test etmek i\u00e7in harika bir ara\u00e7t\u0131r. \u00c7e\u015fitli giri\u015f senaryolar\u0131n\u0131 sim\u00fcle ederek durum ge\u00e7i\u015flerinin beklendi\u011fi gibi \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun. Ger\u00e7ek PLC \u00fczerinde devreye al\u0131m yapmadan \u00f6nce kapsaml\u0131 testler yapmak, potansiyel hatalar\u0131 erken a\u015famada yakalaman\u0131z\u0131 ve devreye alma s\u00fcresini k\u0131saltman\u0131z\u0131 sa\u011flar. Ayr\u0131ca, TIA Portal'\u0131n \"Online & Diagnostics\" ara\u00e7lar\u0131 ile ger\u00e7ek zamanl\u0131 olarak de\u011fi\u015fkenleri izleyebilir, durum ge\u00e7i\u015flerini takip edebilir ve performans\u0131 analiz edebilirsiniz.<\/p>\n<p>Bu geli\u015fmi\u015f teknikleri kullanarak, TIA Portal'da sadece \u00e7al\u0131\u015fan de\u011fil, ayn\u0131 zamanda s\u00fcrd\u00fcr\u00fclebilir, g\u00fcvenilir ve esnek durum makineleri programlayabilirsiniz. Bu, otomasyon projelerinizin uzun vadeli ba\u015far\u0131s\u0131 i\u00e7in kritik bir ad\u0131md\u0131r.<\/p>\n<h2>Gelece\u011fin Ak\u0131ll\u0131 Binalar\u0131 ve Mobil Uyumlu Kontrol: TIA Portal Nereye Evriliyor?<\/h2>\n<p>Ak\u0131ll\u0131 binalar ve End\u00fcstri 4.0 kavramlar\u0131, otomasyon sistemlerinden beklentileri s\u00fcrekli olarak y\u00fckseltmektedir. Art\u0131k sadece fiziksel kontrol de\u011fil, ayn\u0131 zamanda veri analizi, uzaktan eri\u015fim ve mobil uyumlu izleme\/kontrol de \u00f6n plandad\u0131r. TIA Portal, bu d\u00f6n\u00fc\u015f\u00fcm\u00fcn merkezinde yer alarak, PLC tabanl\u0131 durum makinelerini daha geni\u015f bir dijital ekosisteme entegre etme yetene\u011fi sunar. Peki, TIA Portal ile programlad\u0131\u011f\u0131m\u0131z bir \u0131\u015f\u0131k kontrol\u00f6r\u00fc, mobil cihazlar arac\u0131l\u0131\u011f\u0131yla nas\u0131l y\u00f6netilebilir ve gelece\u011fin ak\u0131ll\u0131 binalar\u0131nda nas\u0131l bir rol oynayabilir?<\/p>\n<h3>1. HMI ve Web Sunucusu Entegrasyonu ile Uzaktan Eri\u015fim<\/h3>\n<p>TIA Portal, Siemens'in HMI panelleri (\u00f6rne\u011fin, Comfort Paneller) ile sorunsuz entegrasyon sunar. Bu paneller, genellikle yerle\u015fik bir web sunucusu \u00f6zelli\u011fine sahiptir. Bu sayede, \u00f6zel bir uygulama geli\u015ftirmeye gerek kalmadan, standart bir web taray\u0131c\u0131s\u0131 \u00fczerinden PLC'nizin ve dolay\u0131s\u0131yla \u0131\u015f\u0131k kontrol\u00f6r\u00fcn\u00fcz\u00fcn durumunu izleyebilir ve parametrelerini de\u011fi\u015ftirebilirsiniz. Bir HMI paneli \u00fczerinden olu\u015fturdu\u011funuz ekranlar, web taray\u0131c\u0131lar\u0131 arac\u0131l\u0131\u011f\u0131yla uzaktan eri\u015filebilir hale getirilebilir. Bu, tesis y\u00f6neticilerinin veya bina sakinlerinin ak\u0131ll\u0131 telefonlar\u0131 veya tabletleri \u00fczerinden \u0131\u015f\u0131klar\u0131n durumunu kontrol etmelerine, modlar\u0131 de\u011fi\u015ftirmelerine veya zamanlay\u0131c\u0131 ayarlar\u0131n\u0131 g\u00fcncellemelerine olanak tan\u0131r.<\/p>\n<p>Bunun \u00f6tesinde, Siemens S7-1200\/1500 PLC'ler kendi entegre web sunucular\u0131na sahiptir. Bu web sunucusunu kullanarak, HTML sayfalar\u0131 olu\u015fturup PLC'ye y\u00fckleyebilir ve bu sayfalarda JavaScript kullanarak PLC de\u011fi\u015fkenlerini okuyup yazabilirsiniz. Bu y\u00f6ntem, tamamen \u00f6zel ve marka ba\u011f\u0131ms\u0131z bir mobil kontrol aray\u00fcz\u00fc olu\u015fturmak i\u00e7in esnek bir yol sunar. \u00d6rne\u011fin, bir web sayfas\u0131 \u00fczerinden \"Gece Modu\" butonuna bas\u0131ld\u0131\u011f\u0131nda, bu bilgi PLC'deki durum makinenizi etkileyecek ve \u0131\u015f\u0131kland\u0131rmay\u0131 buna g\u00f6re ayarlayacakt\u0131r.<\/p>\n<h3>2. Mobil Uyumlu Aray\u00fcz Tasar\u0131m\u0131 ve Media Query \u00d6rnekleri<\/h3>\n<p>E\u011fer PLC'nin dahili web sunucusunu veya harici bir web aray\u00fcz\u00fc kullanarak mobil eri\u015fim sa\u011fl\u0131yorsan\u0131z, kullan\u0131c\u0131 deneyimini art\u0131rmak i\u00e7in responsive (duyarl\u0131) tasar\u0131m prensiplerini uygulamak \u00f6nemlidir. Bu, aray\u00fcz\u00fcn farkl\u0131 ekran boyutlar\u0131na (telefon, tablet, masa\u00fcst\u00fc) otomatik olarak uyum sa\u011flamas\u0131 anlam\u0131na gelir. CSS3'\u00fcn \"media query\" \u00f6zellikleri, bu uyumu sa\u011flamak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-css\">\n\/* Genel stil tan\u0131mlar\u0131 *\/\nbody {\n    font-family: Arial, sans-serif;\n    margin: 20px;\n    background-color: #f4f4f4;\n}\n\n.container {\n    max-width: 960px;\n    margin: 0 auto;\n    padding: 15px;\n    background-color: #fff;\n    border-radius: 8px;\n    box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.control-button {\n    display: block;\n    width: 100%;\n    padding: 15px;\n    margin-bottom: 10px;\n    font-size: 18px;\n    text-align: center;\n    color: #fff;\n    background-color: #007bff;\n    border: none;\n    border-radius: 5px;\n    cursor: pointer;\n    transition: background-color 0.3s ease;\n}\n\n.control-button:hover {\n    background-color: #0056b3;\n}\n\n\/* Mobil cihazlar i\u00e7in \u00f6zel stiller (\u00f6rne\u011fin, ekran geni\u015fli\u011fi 600px ve alt\u0131) *\/\n@media screen and (max-width: 600px) {\n    body {\n        margin: 10px;\n    }\n    .container {\n        padding: 10px;\n        border-radius: 0; \/* Mobil g\u00f6r\u00fcn\u00fcmde k\u00f6\u015feleri kald\u0131r *\/\n    }\n    .control-button {\n        font-size: 16px;\n        padding: 12px;\n    }\n}\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu CSS kodu, ekran geni\u015fli\u011fi 600 pikselin alt\u0131na d\u00fc\u015ft\u00fc\u011f\u00fcnde (tipik bir telefon ekran\u0131), sayfa kenar bo\u015fluklar\u0131n\u0131, container dolgusunu ve buton boyutunu otomatik olarak ayarlar. Bu sayede, TIA Portal \u00fczerinden bir web sunucusu ile yay\u0131nlad\u0131\u011f\u0131n\u0131z kontrol aray\u00fcz\u00fc, mobil cihazlarda da kullan\u0131labilir ve estetik bir g\u00f6r\u00fcn\u00fcm sunar.<\/p>\n<h3>3. Gelecek Perspektifleri: IoT Entegrasyonu ve Veri Analizi<\/h3>\n<p>TIA Portal, OPC UA gibi end\u00fcstriyel ileti\u015fim standartlar\u0131 ve bulut ba\u011flant\u0131s\u0131 yetenekleri sayesinde IoT (Nesnelerin \u0130nterneti) platformlar\u0131yla entegrasyona olanak tan\u0131r. I\u015f\u0131k kontrol\u00f6r\u00fcn\u00fczdeki durum de\u011fi\u015fiklikleri, enerji t\u00fcketim verileri veya ar\u0131za bilgileri gibi veriler, bulut tabanl\u0131 bir platforma aktar\u0131labilir. Bu veriler, bina performans\u0131n\u0131 analiz etmek, enerji t\u00fcketimi desenlerini optimize etmek veya \u00f6ng\u00f6r\u00fcc\u00fc bak\u0131m uygulamalar\u0131 geli\u015ftirmek i\u00e7in kullan\u0131labilir. Durum makinelerinizden gelen do\u011fru ve zaman\u0131nda veri ak\u0131\u015f\u0131, ak\u0131ll\u0131 binalar\u0131n ve \u00fcretim tesislerinin daha verimli ve otonom hale gelmesinde kilit rol oynar.<\/p>\n<p>\u00d6zetle, TIA Portal ile programlad\u0131\u011f\u0131n\u0131z bir durum makinesi tabanl\u0131 \u0131\u015f\u0131k kontrol\u00f6r\u00fc, sadece yerel otomasyonu sa\u011flamakla kalmaz, ayn\u0131 zamanda geli\u015fmi\u015f entegrasyon yetenekleri sayesinde mobil cihazlar \u00fczerinden uzaktan y\u00f6netilebilir ve gelece\u011fin ak\u0131ll\u0131 ve ba\u011flant\u0131l\u0131 sistemlerinin bir par\u00e7as\u0131 haline gelebilir. Bu evrim, otomasyon m\u00fchendislerinin esneklik ve yenilik\u00e7ilik konusunda s\u00fcrekli kendilerini geli\u015ftirmelerini gerektirmektedir.<\/p>\n<h2>Sonu\u00e7: Durum Makineleri ile Ak\u0131ll\u0131 Otomasyonun Kilidini A\u00e7mak<\/h2>\n<p>Bu makale boyunca, Siemens TIA Portal ortam\u0131nda bir \u0131\u015f\u0131k kontrol\u00f6r\u00fc i\u00e7in durum makinesi mant\u0131\u011f\u0131n\u0131 programlaman\u0131n inceliklerini ad\u0131m ad\u0131m ke\u015ffettik. Temel kavramlardan ba\u015flayarak, detayl\u0131 bir vaka analizi ile SCL dilinde nas\u0131l kodlama yap\u0131laca\u011f\u0131n\u0131 \u00f6\u011frendik ve son olarak, geli\u015fmi\u015f teknikler ile mobil uyumlu kontrol gibi gelecek trendlerine de\u011findik. Durum makineleri, karma\u015f\u0131k s\u0131ral\u0131 ve olay tabanl\u0131 otomasyon s\u00fcre\u00e7lerini y\u00f6netmek i\u00e7in son derece g\u00fc\u00e7l\u00fc, anla\u015f\u0131l\u0131r ve esnek bir y\u00f6ntem sunar. Programlar\u0131n okunabilirli\u011fini art\u0131r\u0131r, hata ay\u0131klamay\u0131 kolayla\u015ft\u0131r\u0131r ve sistemin bak\u0131m\u0131n\u0131 basitle\u015ftirir. \u00d6zellikle ak\u0131ll\u0131 bina otomasyonu gibi dinamik ve mod\u00fcler sistemler i\u00e7in bu yakla\u015f\u0131m vazge\u00e7ilmezdir. TIA Portal'\u0131n sundu\u011fu entegre geli\u015ftirme ortam\u0131 ve SCL gibi \u00fcst d\u00fczey programlama dilleri sayesinde, bu karma\u015f\u0131k mant\u0131k yap\u0131lar\u0131n\u0131 ger\u00e7e\u011fe d\u00f6n\u00fc\u015ft\u00fcrmek her zamankinden daha eri\u015filebilir hale gelmi\u015ftir. Gelecekte, IoT entegrasyonu ve yapay zeka destekli karar verme s\u00fcre\u00e7leriyle durum makineleri, otomasyon sistemlerinin daha da ak\u0131ll\u0131 ve adaptif hale gelmesinde merkezi bir rol oynamaya devam edecektir. Bu yetenekleri ustaca kullanabilen otomasyon m\u00fchendisleri, End\u00fcstri 4.0'\u0131n getirdi\u011fi zorluklar\u0131n \u00fcstesinden gelerek yenilik\u00e7i \u00e7\u00f6z\u00fcmler \u00fcretme potansiyeline sahip olacaklard\u0131r.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<ul>\n<li><strong>S: TIA Portal'da durum makinesi programlamak i\u00e7in en iyi dil hangisidir?<\/strong>\n<p>C: Genellikle SCL (Structured Control Language) en uygun dildir. Yap\u0131sal programlama yetenekleri sayesinde CASE OF ve IF-THEN-ELSE gibi yap\u0131larla durum ge\u00e7i\u015flerini ve eylemleri \u00e7ok daha anla\u015f\u0131l\u0131r ve kompakt bir \u015fekilde ifade edebilirsiniz. LAD ve FBD de kullan\u0131labilir ancak karma\u015f\u0131k durum makinelerinde g\u00f6rsel yo\u011funluk nedeniyle takibi zorla\u015fabilir.<\/p>\n<\/li>\n<li><strong>S: Bir durum makinesinde ka\u00e7 durum tan\u0131mlamal\u0131y\u0131m?<\/strong>\n<p>C: Durum say\u0131s\u0131, kontrol etti\u011finiz sistemin karma\u015f\u0131kl\u0131\u011f\u0131na ve istenen davran\u0131\u015fa ba\u011fl\u0131d\u0131r. M\u00fcmk\u00fcn oldu\u011funca az durumla ba\u015flamak ve sadece gerekli olduk\u00e7a yeni durumlar eklemek iyi bir yakla\u015f\u0131md\u0131r. Her bir durumun net bir sorumlulu\u011fu ve tan\u0131mlanm\u0131\u015f giri\u015f\/\u00e7\u0131k\u0131\u015f ko\u015fullar\u0131 olmal\u0131d\u0131r. Genellikle 5-10 durum \u00e7o\u011fu orta karma\u015f\u0131kl\u0131ktaki uygulama i\u00e7in yeterlidir.<\/p>\n<\/li>\n<li><strong>S: Durum makinelerini neden do\u011frudan TIA Portal'daki 'Sequencer' gibi haz\u0131r bloklarla yapm\u0131yorum?<\/strong>\n<p>C: TIA Portal'da veya di\u011fer PLC'lerde haz\u0131r s\u0131ralay\u0131c\u0131 (sequencer) bloklar\u0131 bulunabilir. Bunlar belirli s\u0131ral\u0131 i\u015flemler i\u00e7in kullan\u0131\u015fl\u0131 olsa da, durum makineleri genellikle daha esnek ve olay tabanl\u0131 ge\u00e7i\u015flere izin verir. \u00d6zel durum makinesi uygulamalar\u0131, hata y\u00f6netimi ve karma\u015f\u0131k dallanma mant\u0131\u011f\u0131 i\u00e7in SCL ile programlamak size daha fazla kontrol ve ki\u015fiselle\u015ftirme imkan\u0131 sunar.<\/p>\n<\/li>\n<li><strong>S: Durum makinesi program\u0131nda performans sorunlar\u0131 ya\u015far m\u0131y\u0131m?<\/strong>\n<p>C: Do\u011fru \u015fekilde uyguland\u0131\u011f\u0131nda, durum makineleri performans sorunlar\u0131na yol a\u00e7maz. SCL kodu derlenmi\u015f ve optimize edilmi\u015f bir \u015fekilde \u00e7al\u0131\u015f\u0131r. Ancak, her tarama d\u00f6ng\u00fcs\u00fcnde gereksiz yere karma\u015f\u0131k hesaplamalar yapmak veya \u00e7ok say\u0131da uzun s\u00fcreli zamanlay\u0131c\u0131y\u0131 ayn\u0131 anda \u00e7al\u0131\u015ft\u0131rmak performans\u0131 etkileyebilir. Mant\u0131\u011f\u0131n\u0131z\u0131 optimize ederek ve sadece gerekli durumlarda hesaplamalar\u0131 tetikleyerek bu t\u00fcr sorunlar\u0131 \u00f6nleyebilirsiniz.<\/p>\n<\/li>\n<\/ul>\n<p><\/body><br \/>\n<\/html><\/p>\n","protected":false},"excerpt":{"rendered":"Ak\u0131ll\u0131 bina otomasyonundan end\u00fcstriyel tesislere kadar bir\u00e7ok alanda kar\u015f\u0131m\u0131za \u00e7\u0131kan \u0131\u015f\u0131k kontrol sistemleri, basit gibi g\u00f6r\u00fcnse de dinamik&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-34019","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>TIA Portal ile Ak\u0131ll\u0131 I\u015f\u0131k Kontrol\u00f6r\u00fc Durum Makinesi Programlama<\/title>\n<meta name=\"description\" content=\"Ak\u0131ll\u0131 bina otomasyonundan end\u00fcstriyel tesislere kadar bir\u00e7ok alanda kar\u015f\u0131m\u0131za \u00e7\u0131kan \u0131\u015f\u0131k kontrol sistemleri, basit gibi g\u00f6r\u00fcnse de dinamik ihtiya\u00e7lara cevap verebilmek i\u00e7in karma\u015f\u0131k bir yap\u0131ya b\u00fcr\u00fcnebilir. Bu makale, Siemens TIA Portal ortam\u0131nda bir \u0131\u015f\u0131k kontrol\u00f6r\u00fc i\u00e7in durum makinesi (state machine) mant\u0131\u011f\u0131n\u0131 ad\u0131m ad\u0131m nas\u0131l programlayaca\u011f\u0131n\u0131z\u0131 detayl\u0131 bir \u015fekilde a\u00e7\u0131klayarak, s\u0131f\u0131rdan ba\u015flayarak profesyonel d\u00fczeyde \u00e7\u00f6z\u00fcmler \u00fcretmenizi sa\u011flayacakt\u0131r.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/tia-portal-ile-akilli-isik-kontroloru-durum-makinesi-programlama\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"TIA Portal ile Ak\u0131ll\u0131 I\u015f\u0131k Kontrol\u00f6r\u00fc Durum Makinesi Programlama\" \/>\n<meta property=\"og:description\" content=\"Ak\u0131ll\u0131 bina otomasyonundan end\u00fcstriyel tesislere kadar bir\u00e7ok alanda kar\u015f\u0131m\u0131za \u00e7\u0131kan \u0131\u015f\u0131k kontrol sistemleri, basit gibi g\u00f6r\u00fcnse de dinamik ihtiya\u00e7lara cevap verebilmek i\u00e7in karma\u015f\u0131k bir yap\u0131ya b\u00fcr\u00fcnebilir. Bu makale, Siemens TIA Portal ortam\u0131nda bir \u0131\u015f\u0131k kontrol\u00f6r\u00fc i\u00e7in durum makinesi (state machine) mant\u0131\u011f\u0131n\u0131 ad\u0131m ad\u0131m nas\u0131l programlayaca\u011f\u0131n\u0131z\u0131 detayl\u0131 bir \u015fekilde a\u00e7\u0131klayarak, s\u0131f\u0131rdan ba\u015flayarak profesyonel d\u00fczeyde \u00e7\u00f6z\u00fcmler \u00fcretmenizi sa\u011flayacakt\u0131r.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/tia-portal-ile-akilli-isik-kontroloru-durum-makinesi-programlama\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-09T23:01:01+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"25 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/tia-portal-ile-akilli-isik-kontroloru-durum-makinesi-programlama\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/tia-portal-ile-akilli-isik-kontroloru-durum-makinesi-programlama\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"TIA Portal ile Ak\u0131ll\u0131 I\u015f\u0131k Kontrol\u00f6r\u00fc Durum Makinesi Programlama\",\"datePublished\":\"2025-11-09T23:01:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/tia-portal-ile-akilli-isik-kontroloru-durum-makinesi-programlama\/\"},\"wordCount\":4174,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/tia-portal-ile-akilli-isik-kontroloru-durum-makinesi-programlama\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/tia-portal-ile-akilli-isik-kontroloru-durum-makinesi-programlama\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/tia-portal-ile-akilli-isik-kontroloru-durum-makinesi-programlama\/\",\"name\":\"TIA Portal ile Ak\u0131ll\u0131 I\u015f\u0131k Kontrol\u00f6r\u00fc Durum Makinesi Programlama\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-09T23:01:01+00:00\",\"description\":\"Ak\u0131ll\u0131 bina otomasyonundan end\u00fcstriyel tesislere kadar bir\u00e7ok alanda kar\u015f\u0131m\u0131za \u00e7\u0131kan \u0131\u015f\u0131k kontrol sistemleri, basit gibi g\u00f6r\u00fcnse de dinamik ihtiya\u00e7lara cevap verebilmek i\u00e7in karma\u015f\u0131k bir yap\u0131ya b\u00fcr\u00fcnebilir. Bu makale, Siemens TIA Portal ortam\u0131nda bir \u0131\u015f\u0131k kontrol\u00f6r\u00fc i\u00e7in durum makinesi (state machine) mant\u0131\u011f\u0131n\u0131 ad\u0131m ad\u0131m nas\u0131l programlayaca\u011f\u0131n\u0131z\u0131 detayl\u0131 bir \u015fekilde a\u00e7\u0131klayarak, s\u0131f\u0131rdan ba\u015flayarak profesyonel d\u00fczeyde \u00e7\u00f6z\u00fcmler \u00fcretmenizi sa\u011flayacakt\u0131r.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/tia-portal-ile-akilli-isik-kontroloru-durum-makinesi-programlama\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/tia-portal-ile-akilli-isik-kontroloru-durum-makinesi-programlama\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/tia-portal-ile-akilli-isik-kontroloru-durum-makinesi-programlama\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"TIA Portal ile Ak\u0131ll\u0131 I\u015f\u0131k Kontrol\u00f6r\u00fc Durum Makinesi Programlama\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"TIA Portal ile Ak\u0131ll\u0131 I\u015f\u0131k Kontrol\u00f6r\u00fc Durum Makinesi Programlama","description":"Ak\u0131ll\u0131 bina otomasyonundan end\u00fcstriyel tesislere kadar bir\u00e7ok alanda kar\u015f\u0131m\u0131za \u00e7\u0131kan \u0131\u015f\u0131k kontrol sistemleri, basit gibi g\u00f6r\u00fcnse de dinamik ihtiya\u00e7lara cevap verebilmek i\u00e7in karma\u015f\u0131k bir yap\u0131ya b\u00fcr\u00fcnebilir. Bu makale, Siemens TIA Portal ortam\u0131nda bir \u0131\u015f\u0131k kontrol\u00f6r\u00fc i\u00e7in durum makinesi (state machine) mant\u0131\u011f\u0131n\u0131 ad\u0131m ad\u0131m nas\u0131l programlayaca\u011f\u0131n\u0131z\u0131 detayl\u0131 bir \u015fekilde a\u00e7\u0131klayarak, s\u0131f\u0131rdan ba\u015flayarak profesyonel d\u00fczeyde \u00e7\u00f6z\u00fcmler \u00fcretmenizi sa\u011flayacakt\u0131r.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/tia-portal-ile-akilli-isik-kontroloru-durum-makinesi-programlama\/","og_locale":"tr_TR","og_type":"article","og_title":"TIA Portal ile Ak\u0131ll\u0131 I\u015f\u0131k Kontrol\u00f6r\u00fc Durum Makinesi Programlama","og_description":"Ak\u0131ll\u0131 bina otomasyonundan end\u00fcstriyel tesislere kadar bir\u00e7ok alanda kar\u015f\u0131m\u0131za \u00e7\u0131kan \u0131\u015f\u0131k kontrol sistemleri, basit gibi g\u00f6r\u00fcnse de dinamik ihtiya\u00e7lara cevap verebilmek i\u00e7in karma\u015f\u0131k bir yap\u0131ya b\u00fcr\u00fcnebilir. Bu makale, Siemens TIA Portal ortam\u0131nda bir \u0131\u015f\u0131k kontrol\u00f6r\u00fc i\u00e7in durum makinesi (state machine) mant\u0131\u011f\u0131n\u0131 ad\u0131m ad\u0131m nas\u0131l programlayaca\u011f\u0131n\u0131z\u0131 detayl\u0131 bir \u015fekilde a\u00e7\u0131klayarak, s\u0131f\u0131rdan ba\u015flayarak profesyonel d\u00fczeyde \u00e7\u00f6z\u00fcmler \u00fcretmenizi sa\u011flayacakt\u0131r.","og_url":"https:\/\/fatihsoysal.com\/blog\/tia-portal-ile-akilli-isik-kontroloru-durum-makinesi-programlama\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-09T23:01:01+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"25 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/tia-portal-ile-akilli-isik-kontroloru-durum-makinesi-programlama\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/tia-portal-ile-akilli-isik-kontroloru-durum-makinesi-programlama\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"TIA Portal ile Ak\u0131ll\u0131 I\u015f\u0131k Kontrol\u00f6r\u00fc Durum Makinesi Programlama","datePublished":"2025-11-09T23:01:01+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/tia-portal-ile-akilli-isik-kontroloru-durum-makinesi-programlama\/"},"wordCount":4174,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/tia-portal-ile-akilli-isik-kontroloru-durum-makinesi-programlama\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/tia-portal-ile-akilli-isik-kontroloru-durum-makinesi-programlama\/","url":"https:\/\/fatihsoysal.com\/blog\/tia-portal-ile-akilli-isik-kontroloru-durum-makinesi-programlama\/","name":"TIA Portal ile Ak\u0131ll\u0131 I\u015f\u0131k Kontrol\u00f6r\u00fc Durum Makinesi Programlama","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-09T23:01:01+00:00","description":"Ak\u0131ll\u0131 bina otomasyonundan end\u00fcstriyel tesislere kadar bir\u00e7ok alanda kar\u015f\u0131m\u0131za \u00e7\u0131kan \u0131\u015f\u0131k kontrol sistemleri, basit gibi g\u00f6r\u00fcnse de dinamik ihtiya\u00e7lara cevap verebilmek i\u00e7in karma\u015f\u0131k bir yap\u0131ya b\u00fcr\u00fcnebilir. Bu makale, Siemens TIA Portal ortam\u0131nda bir \u0131\u015f\u0131k kontrol\u00f6r\u00fc i\u00e7in durum makinesi (state machine) mant\u0131\u011f\u0131n\u0131 ad\u0131m ad\u0131m nas\u0131l programlayaca\u011f\u0131n\u0131z\u0131 detayl\u0131 bir \u015fekilde a\u00e7\u0131klayarak, s\u0131f\u0131rdan ba\u015flayarak profesyonel d\u00fczeyde \u00e7\u00f6z\u00fcmler \u00fcretmenizi sa\u011flayacakt\u0131r.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/tia-portal-ile-akilli-isik-kontroloru-durum-makinesi-programlama\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/tia-portal-ile-akilli-isik-kontroloru-durum-makinesi-programlama\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/tia-portal-ile-akilli-isik-kontroloru-durum-makinesi-programlama\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"TIA Portal ile Ak\u0131ll\u0131 I\u015f\u0131k Kontrol\u00f6r\u00fc Durum Makinesi Programlama"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34019","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=34019"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34019\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=34019"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=34019"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=34019"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}