Programlama etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Programlama etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

11 Ağustos 2026 Salı

Siemens Unified RT Hmi Faceplate Oluşturmak - 2

https://ujk-ujk.blogspot.com/2026/08/siemens-unified-rt-hmi-faceplate_0788399095.html
İçindekiler +

 

Selam, önceki bölümden devam edeceğiz nasipse. Devam etmeden önce özellikle acil duruş butonu gibi dijital girişler için programa yaptığım bir ilaveden bahsedeyim. Ekranda dikkati o elemanın gösterildiği yere çekmek ve bir sıkıntı olduğunu belirtmek gerekiyor. Bu amaçla faceplate içinde yaptığımız alarm animasyonunu kullanabiliriz. Yapacağımız şey, PLC programı içerisinde o dijital girişin işlendiği yerde eğer fiziksel giriş beklenen gibi değilse girişi temsil eden tamsayı değerin ikinci bitini setlemek. Bu amaçla INPUTS programına şu ilaveyi yaptım.


Bu durumda fiziksel giriş yoksa ekranda acil stop girişinin sembolü sürekli kırmızı yanıp sönecektir. Eğer operatör manuel olarak girişi gösterirse otomasyon programını kandırabilir ama hala ekranda bu sefer kırmızı-yeşil olarak yanıp sönmeye devam eder. Tabi bu arada bu girişin alarmının kontrolünü tamamen fiziksel girişe bağladığınızı unutmayın, gerekirse başka alarmlar için bu kod değişebilir.

4 Ağustos 2026 Salı

Siemens Unified RT Hmi Faceplate Oluşturmak

https://ujk-ujk.blogspot.com/2026/08/siemens-unified-rt-hmi-faceplate.html
İçindekiler +

 Selam, bu uzun bir yazı olacak, Unified RT panellerde Faceplate tasarımını görürken bir yandan da bir PLC otomasyonunda fiziksel giriş ve çıkışların nasıl ekrandan manual kontrol edileceğini göreceğiz. 

Daha önce Wincc Comfort HMI ile faceplate tasarımı üzerine bir yazım olmuştu. Bu seferinde Unified HMI üzerinde yapacağız. Benzer olmasını beklerken , birçok farklılık olduğunu gördüm ve bunları sizinle paylaşmak istedim. Ayrıca uzun zamandır yazmak istediğim PLC otomasyon sistemlerinde giriş ve çıkışların manual kontrol edilmesi konusunu da bu yazıyla alakalı olarak içine katmak iyi olacak.

Ben gıda proses otomasyonu işleri yapıyorum ve gıda işleme sistemlerinde akışın durmadan devam etmesi için bir çok durumlarda sisteme manual müdahaleler gerekir. Örneğin bir seviye swici arızalandıysa ve operatör tankta ürün olduğunu biliyorsa manual olarak swici varmış gibi gösterebilmelidir. Swicin değişimi ancak tanktaki ürünün bitmesi sonrasında yapılabileceği için ve ürün kaybı olmaması için benzer manual müdahaleler zorunludur. 



3 Mayıs 2026 Pazar

Siemens Unified HMI Tag Değer Değişimi Olayı

 Selam, Unified HMI tasarımlarında işimize yarayacak temel yapılar hakkında bilgilendirme yazılarıma bir tane daha ekliyorum. Her HMI uygulamasında kullanıcıyı bilgilendirmek gerektiği yerler olur. Örneğin operatör bir hatta üretimi başlatmak ister, ancak hat üretime başlamak için uygun değildir. Bu durumda PLC programının operatöre neden başlayamayacağını belirtir bir mesaj göndermesi gerekir. Bu amaçla ben PLC içinde hat programlarında mesaj numarası belirten değişkenlere değerler veririm. Bu değişkenlerin isimleri mesela L1_OP_MSG_NR veya L2_OP_MSG_NR gibi isimlerdir. 

Daha sonra HMI programında bu değişkenlerin değerlerini takip eder, değişim olunca bu yeni değer sıfırdan farklıysa bir mesaj olduğuna hükmeder ve bir popup mesaj açarak operatöre o değere karşı gelen mesajı gösteririm. Önceki TP panellerde değişken değerleri Tag özelliklerindeki Events sekmesinde Value Change olayına bağladığım scriptler ile mesaj popup açılmasını sağlardım.


Ancak Unified panel yazılımında böyle bir olay tanımı yok. 


1 Mayıs 2026 Cuma

Siemens Unified HMI Operatör Yetkilendirme Örneği

 Selam , yine bir otomasyon üzerine yazı ile karşınızdayım. Siemens bir süredir Unified HMI panelleri piyasaya sunuyor. Kendilerine sorarsak eski TP panellerden çok daha kabiliyetli ve esnek bir programlaması var, ama bana sorarsanız daha geliştirecekleri çok şey var gibi. 

Bu yazımda örnek bir uygulama tasarlayıp operatör yetkilendirmelerini nasıl yaptığımı göstereceğim. Unified panellerin kendi programları içinde kullanıcı tanımlaması yok. Bunun yerine TiaPortal'daki projenizin güvenlik ayarlarında tanımlanan kullanıcıları kullanıyor. 

19 Nisan 2026 Pazar

Siemens HMI Faceplate Oluşturmak

 Selam uzun bir aradan sonra yine otomasyon üzerine bir yazı ile karşınızdayım. Bu yazıda Siemens HMI uygulaması geliştirirken çok faydalı bir özellik olan Faceplate tasarımı ve kullanımını basit bir şekilde anlatmaya çalışacağım.

Öncelikle kullandığım TIA Portal versiyon 16, bunu belirteyim , başka versiyonlarda farklı davranışlar olabilir ama genelde teknik benzer.

Ben sıvı gıda üretimi yapan tesislere proses otomasyonu projeleri yapıyorum. İşimiz gereği sahada bir sürü vanalar, pompalar, ısıtıcılar vs. kontrol ediyoruz. Bunları HMI ekranında gösterirken temel animasyon teknikleri kullanıyorum. 

12 Eylül 2025 Cuma

Rails 7 Denemeler 8

https://ujk-ujk.blogspot.com/2025/09/rails-7-denemeler-8.html
İçindekiler +

 Selam, Rails 7 öğrenmeye devam ediyorum.



Gelişmiş Login İşlemi

Önceki bölümde basit login işlemini gerçekleştirdik. Ancak modern web uygulamalarında kullanıcı tekrar sayfaya geldiğinde eğer bu arada tarayıcısını kapatmış da olsa kendisinin hatırlanmasını bekler. Bu bölümde kalıcı çerezleri (permanent cookies) kullanarak bu işi halledeceğiz. Giriş yapmış kullanıcıları hatırlayarak başlayacağız, bu örneğin Bitbucket ve Github gibi sitelerde karşılaştığımız davranıştır. Daha sonra da Twitter ve Facebook'ta olduğu gibi giriş yaparken bir "Beni Hatırla" seçeneği ekleyeceğiz. 


Beni Hatırla

23 Nisan 2025 Çarşamba

Rails 7 Denemeler 6

https://ujk-ujk.blogspot.com/2025/04/rails-7-denemeler-6.html
İçindekiler +

 

Selam Rails 7 ile uygulama geliştirmeye kaldığımız yerden devam ediyoruz.



Kayıt olma işlemleri

Şu anda çalışan bir User modelimiz mevcut, sırada kullanıcıların kayıt olması için sayfalar hazırlamak var. 

8 Nisan 2025 Salı

WxRuby3 ile Masaüstü Uygulama Geliştirmek 6

https://ujk-ujk.blogspot.com/2025/04/wxruby3-ile-masaustu-uygulama.html
İçindekiler +


Selam, WxRuby ile masaüstü uygulama geliştirme yazı dizimizin son bölümünde bir Tetris oyunu yazacağız nasipse. Yavaş yavaş sindire sindire adım adım uygulamamızı oluşturacağız. 

Haydi başlayalım.



Tetris Oyunu

Öncelikle bir uygulama iskeleti oluşturarak başlayalım. Küçük kibar bir frame ile başlayalım.

tetris.rb

require "wx"

class Tetris < Wx::Frame
 
  def initialize(parent)
    super(parent, size: [180,380],
      style: Wx::DEFAULT_FRAME_STYLE ^ Wx::RESIZE_BORDER ^ Wx::MAXIMIZE_BOX)
    init_UI
  end

  def init_UI
    set_title "Tetris"
    centre

    @statusbar = create_status_bar
    @statusbar.set_status_text '0'
  end
end

Wx::App.run {
  Tetris.new(nil).show
}

2 Nisan 2025 Çarşamba

Rails 7 Denemeler 5

https://ujk-ujk.blogspot.com/2025/04/rails-7-denemeler-5.html
İçindekiler +


İletişim sayfası

Uygulamamıza İletişim sayfası ekleyerek devam edeceğiz. Öncelikle test rutinlerini ekleyelim. 

test/controllers/static_pages_controller_test.rb

require "test_helper"

class StaticPagesControllerTest < ActionDispatch::IntegrationTest
  ....

  test "should get contact" do
    get static_pages_contact_url
    assert_response :success
    assert_select "title", "İletişim | Yeni App"
  end

end

31 Mart 2025 Pazartesi

Rails 7 Denemeler 4

https://ujk-ujk.blogspot.com/2025/03/rails-7-denemeler-4.html
İçindekiler +

 

Selam bu bölümde Rails uygulamalarımızın görselleriyle uğraşacağız biraz.



Yerleşimi Doldurmak

Yeni App (statik sayfalar) uygulamamızı yaparken stil dosyalarının yerini ve sayfalarımıza yerleşim dosyasında nasıl eklendiğini görmüştük. app/assets/stylesheets/application.css stil dosyamız şu anda boş. Bu bölümde bir CSS framework kullanarak uygulamamıza stiller ekleyeceğiz. Önce yerleşim dosyasında sayfalarımıza bağlantılar koyacağız. Bunları yaparken kısmi (partial) görselleri öğreneceğiz. Sass kütüphanesini kullanacağız. 

29 Mart 2025 Cumartesi

WxRuby3 ile Masaüstü Uygulama Geliştirmek 5

https://ujk-ujk.blogspot.com/2025/03/wxruby3-ile-masaustu-uygulama_29.html
İçindekiler +


Selam, WxRuby öğrenmeye kendi widget'larımızı üreterek devam ediyoruz. 


Kendi Wx Nesnemizi Tanımlamak  

GUI araç kitlerinde genelde button'lar, text widget'lar, scrollbar'lar, slider'lar gibi temel elemanlar olur. Her istediğimizi barındırmaları mümkün değil tabi ki. Daha gelişmiş elemanları programcı kendi üretir. 

Kendi widget'ımızı iki yolla üretebiliriz. Ya mevcut bir nesneyi değiştiririz ya da sıfırdan yeni bir widget tanımlarız.

24 Mart 2025 Pazartesi

Rails 7 Denemeler 3

https://ujk-ujk.blogspot.com/2025/03/rails-7-denemeler-3.html
İçindekiler +

Selam Rails 7 denemelerine Ruby programlama temellerini göreceğimiz bir bölümle devam ediyoruz. Önceki bölümde yazdığımız "yeni_app" uygulamamız üzerinden devam edeceğiz. 




Rails Aromalı Ruby 

Önceki bölümde Rails açısından önemli olan bazı Ruby programlama teknikleri kullandık. Ruby çok büyük bir programlama dili, neyse ki Rails uygulaması geliştirmek için bilmemiz gerekenler çok da fazla değil. Bu bölümde Rails'de kullanılan Ruby tekniklerine bir göz atacağız. İleride uygulamalar geliştirdikçe Ruby dili hakkında daha geniş bilgileri tekrarlarla öğrenmeye devam edeceğiz. 

22 Mart 2025 Cumartesi

WxRuby3 ile Masaüstü Uygulama Geliştirmek 4

https://ujk-ujk.blogspot.com/2025/03/wxruby3-ile-masaustu-uygulama_22.html
İçindekiler +

 Selam WxRuby ile masa üstü uygulamalara gelişmiş widget'larla devam ediyoruz.


WxRuby Gelişmiş Widget'lar

Bu bölümde Wx::ListBox, Wx::HTML::HtmlWindow ve Wx::ListCtrl widget'larını göreceğiz. 

Wx kütüphanesinde gelişmiş elemanlar var, tree widget, bir HTML window, bir grid widget, bir listbox widget, bir list widget, veya gelişmiş stillendirme özelliklerine sahip editor widget gibi.



Wx::ListBox

ListBox nesnesi bir liste olarak verilen değerleri göstermek için kullanılır. ListBox nesnesi iki farklı şekilde üretilebilir, tek seçimli ya da çoklu seçimli olarak. Default olan tek seçimli olandır.

Rails 7 Denemeler 2

https://ujk-ujk.blogspot.com/2025/03/rails-7-denemeler-2.html
İçindekiler +

 Selam Rails 7 ile denemelerimize devam ediyoruz. 


Statik Sayfalar

Bu seferki uygulamamızda biraz daha gelişmiş ve bundan sonraki uygulamalarımıza temel teşkil edecek bir uygulama planlıyoruz. Burada veri tabanına bağlı olmayan statik web sayfaları yapacağız. Statik web sayfalarını Rails yöntemiyle yapmak , bize Rails işleyişini anlamak için çok yararlı olacaktır. 

Rails, veri tabanına dayalı web siteleri yapmak için geliştirilse bile , her uygulamanın statik sayfalara ihtiyacı vardır .Rails ile geliştirilen statik sayfalar ise her ne kadar statik dense de kolayca içlerine dinamik davranışlar eklenebilir. Bu uygulama da ayrıca otomatik testler için de bir giriş yapacağız. 

18 Mart 2025 Salı

Rails 7 Denemeler 1

https://ujk-ujk.blogspot.com/2025/03/rails-7-denemeler-1.html
İçindekiler +

 

Selam RubyOnRails versiyon 7 ile bazı denemeler yaparken framework özelliklerini öğrenmeyi amaçlıyorum. 



RubyOnRails Kurulumu

Rails kullanarak uygulama geliştirirken kullandığımız Ruby ve Rails gem versiyonlarının stabil olması , ileride sıkıntılar yaşamamak için önemli. Bu yüzden kurulumları Ruby Version Manager - rvm ile yapacağız. 

RVM Linux sistemlerde kuruluyor Windows'ta da WSL Ubuntu terminal kullanarak kurulabilir. 

Öncelikle PPA kaynaklarını kullanmak için yüklenmesi gereken paket için konsolda

$ sudo apt-get install software-properties-common

Bu baştaki $ işareti prompt'u ifade için kullanılan bir genel gösterim konsola onu yazmayacağız tabi ki.

Şimdi rvm kaynaklarını sisteme eklemek için konsolda şu iki satırı girelim.

$ sudo apt-add-repository -y ppa:rael-gc/rvm
ve
$ sudo apt-get update

Son olarak rvm kurulumunu yapalım.

$ sudo apt-get install rvm

15 Mart 2025 Cumartesi

Ruby Temelleri 9

https://ujk-ujk.blogspot.com/2025/03/ruby-temelleri-9.html
İçindekiler +

 

Selam, Ruby temellerini öğrenmeye devam ediyoruz.



Örtülü Alıcılar ve Self


-- Her zaman örtülü bir alıcı vardır

Ruby'de bir metod çağırdığımızda, o metodun mutlaka bir alıcısı (gönderildiği nesne) vardır. Eğer bu alıcı net olarak belirtilmiyorsa Ruby bu örtülü alıcıyı self değerinde saklar. class ve module deyimleri de self değerinin işaret ettiği nesneye göre değişir. Bu davranışları anlamak Ruby dilini anlamamızda çok yardımcı olacaktır.

Örneğin bir IRB oturumunu ilk açtığımızda,

>> self
=> main

9 Mart 2025 Pazar

Ruby Temelleri 8

https://ujk-ujk.blogspot.com/2025/03/ruby-temelleri-8.html
İçindekiler +

 Selam Ruby'nin temel tekniklerine kaldığımız yerden devam ediyoruz.



Enumerator Sınıfı

Bir Enımerator elemanlarına iterasyon uygulanabilen bir nesnedir. Bir koşul karşılanana kadar döngüye girmek yerine, nesne gerektiği gibi eleman değerlerini sıralar (enumerates). 

8 Mart 2025 Cumartesi

WxRuby3 ile Masaüstü Uygulama Geliştirmek 2

https://ujk-ujk.blogspot.com/2025/03/wxruby3-ile-masaustu-uygulama_8.html
İçindekiler +

 Selam WxRuby3 GUI kütüphanesi denemelerimize olay işleme teknikleri ile devam ediyoruz. 


WxRuby'de Olaylar

Olaylar her GUI uygulamanın vazgeçilmez parçasıdır. Tüm GUI uygulamaları olay yönelimlidir. Bir uygulama çalıştığı müddetçe değişik olaylara tepki gösterir. Bir uygulamada olaylar genellikle kullanıcı tarafından oluşturulur. Ama başka şeyler de olay üretebilir, mesela internet bağlantısı, pencere yöneticisi veya zamanlama ile üretilen olaylar. Uygulamamızda run metodunu çalıştırdığımızda, uygulamamız olayların oluşmasını beklemeye başlar. 

6 Mart 2025 Perşembe

WxRuby3 ile Masaüstü Uygulama Geliştirmek 1

https://ujk-ujk.blogspot.com/2025/03/wxruby3-ile-masaustu-uygulama.html
İçindekiler +

 Selam Ruby ile masaüstü program yazmak üzerine neler yapabilirim bir göreyim dedim ve başladım denemelere. Denemelerimi Windows'ta yaptım. Windows üzerinde bende kurulu olan versiyon ruby 3.4.2 (2025-02-15 revision d2930f8e7a) +PRISM [x64-mingw-ucrt] olarak geliyor. Ruby installer sitesinden Ruby+Devkit 3.4.2-1 (x64) versiyonu indirip kurdum. 


WxRuby3 Kurulumu

WxRuby3 GUI kütüphanesini yüklemek için komut isteminde 

gem install wxruby3

komutunu girdim ve sıkıntısız yüklendi. Sizde sorun olurssa bendeki versiyon Ruby ile deneme yaparsınız. 

Hemen deneme yapmak için hello.rb adında bir dosya üretip içine şu kodu yazdım.

require 'wx'
Wx::App.run { puts 'Merhaba Dünya!' }

5 Mart 2025 Çarşamba

Ruby Temelleri 7

https://ujk-ujk.blogspot.com/2025/03/ruby-temelleri-7.html
İçindekiler +

 Selam, Ruby temel tekniklerine kaldığımız yerden devam ediyoruz. 



Singleton Sınıflar

Singleton (tekil) sınıfların sadece bir tane oluşum nesnesi olabilir. 

Ruby'de 3 çeşit nesne vardır

  • Class ve Module sınıflarının oluşumu olan sınıflar ve modüller
  • Sınıfların oluşum nesneleri
  • Singleton sınıflar