UDT Dizileri ve HMI Düzenleme Arayüzü ile Allen-Bradley Reçete Yönetimi
UDT dizilerini ve kalıcı parametre depolama için COP talimatlarını kullanarak AB Logix 5000 için HMI tabanlı reçete düzenleme oluşturmayı öğrenin.
Logix platformlarında reçete yönetimi, HMI’nin doğrudan geçmiş dizisine yazmadığı zaman en iyi şekilde çalışır. Dayanıklı bir yaklaşım üç etiket kullanır: Recipe_Storage, uzunluğu 50 olan bir UDT dizisi; operatör ekranı için tek bir UDT örneği olan Recipe_Display; ve hangi kayıtlı reçetenin görüntü yapısına yansıtılacağını seçen DINT türünde Recipe_Index. COP talimatları, indeks değiştiğinde ve ayrıca Kaydet işleminde verileri taşır; böylece operatör her zaman bir çalışma arabelleğini düzenlerken arşiv, enerji çevrimleri boyunca tutarlı kalır.
HMI’ye bağlı reçete düzenleme için kullanılan Recipe_Storage[50], Recipe_Display ve Recipe_Index etiketlerini gösteren Logix etiket izleyicisi.
UDT’yi, prosesin ihtiyaç duyduğu tüm ayar noktalarıyla (sıcaklıklar, zamanlayıcılar, hızlar, ürün kodları ve kilitleme maskeleri) bir kez tanımlayın; ardından Recipe_Storage’ı bu UDT’nin [50] örneği olarak oluşturun. Recipe_Display, gevşek biçimde ilişkili atomik etiketlerden oluşan bir grup değil, tam olarak aynı UDT türünde olmalıdır. Homojen türler, COP uzunluğu hesaplamalarını basitleştirir ve daha sonra üyeler eklendiğinde sessiz veri kesilmesini önler.
İndeks sınırlama ve yükleme yolu
Herhangi bir COP çalışmadan önce Recipe_Index’i 0 ile 49 arasındaki kapsayıcı aralıkla sınırlayın. Sayısal giriş nesnesinden gelen sınırlanmamış bir indeks, projede dizi sınırlarının nasıl ele alındığına bağlı olarak COP işlemini hataya düşürebilir veya tanımsız bellek çekebilir. Recipe_Index’te yükselen kenarlı bir değişiklik olduğunda (veya açık bir Yükle düğmesine basıldığında), Recipe_Storage[Recipe_Index] değerini Recipe_Display’e kopyalayın. HMI yalnızca Recipe_Display üyelerine bağlanmalıdır. Bu tek kural, operatör değerleri hâlâ ayarlarken iki ekranın farklı dizi yuvalarına yazmasıyla oluşan yarış koşullarını ortadan kaldırır.
// Sözde kod yapısı
if Recipe_Index < 0 then Recipe_Index := 0;
if Recipe_Index > 49 then Recipe_Index := 49;
if IndexChanged or LoadPressed then
COP(Recipe_Storage[Recipe_Index], Recipe_Display, 1);
if SavePressed then
COP(Recipe_Display, Recipe_Storage[Recipe_Index], 1);
Yalnızca Recipe_Display’e bağlanan ve Yükle/Kaydet işlemleri denetleyici COP rutinlerini tetikleyen HMI reçete ekranı.
Kaydetme yolu, saklama ve indirme davranışı
Kaydetme sırasında Recipe_Display’i tekrar Recipe_Storage[Recipe_Index] konumuna COP ile kopyalayın. Recipe_Storage denetleyici etiketlerinde bulunduğundan, proje normal etiket saklama için yapılandırıldığında değerler enerji çevrimi sonrasında korunur. Etiket değerlerini korumayı seçtiğiniz bir indirme işleminde de veriler saklanır; bu onay kutusunu isteğe bağlı bir kolaylık değil, reçete SOP’sinin bir parçası olarak değerlendirin. Operatörler, “etiketleri yeniden başlat” seçeneği etkinleştirilmiş bir projenin indirilmesinin, çevrimdışı bir yedek bulunmadığı takdirde özenle ayarlanmış reçeteleri sileceğini bilmelidir.
CSV içe aktarma iş akışlarına temkinli yaklaşılmalıdır. Birçok HMI veya Excel’den etikete aktarma aracı, özellikle sütun başlıkları UDT üye adlarından saptığında, iç içe UDT’lerin üyelerindeki değerleri güvenilir biçimde güncellemeden etiket adlarını oluşturur. Her alanı doğrulayan açık bir içe aktarma rutinini tercih edin veya toplu düzenlemelerden sonra bilinen doğru bir L5X/etiket dışa aktarımından yeniden yükleyin. Yeşil “içe aktarma tamamlandı” bildiriminin Recipe_Storage[n].Setpoint değerinin artık elektronik tablodaki hücreye eşit olduğu anlamına geldiğini varsaymayın.
| Etiket | Tür | HMI bağlantısı? | Amaç |
|---|---|---|---|
| Recipe_Storage | UDT[50] | Hayır | Kalıcı reçete arşivi |
| Recipe_Display | UDT | Yalnızca evet | Operatör düzenleme arabelleği |
| Recipe_Index | DINT | Evet (seçici) | Etkin yuva 0–49 |
HMI arayüzü yönergeleri
- Yükle ve Kaydet işlemlerini, panelden doğrudan dizi yazma işlemleri olarak değil, denetleyicide işlenen anlık bitler olarak sağlayın.
- Sınırlanmış indeksi ve hangi yuvanın etkin olduğunu operatörlerin doğrulayabilmesi için görüntü UDT’sinden kopyalanan salt okunur bir “kayıtlı ad” alanını gösterin.
- Reçete üyeleri parti sırasında hareketi veya termal ayar noktalarını etkiliyorsa, makine çevrimdeyken Kaydet işlemini engelleyin.
- Düzenlemeye tabi hatlarda izlenebilirlik için Kaydetme olaylarını operatör kimliği ve indeks bilgisiyle kaydedin.
İndeks sınırlarını ve korunan indirmeleri doğrulama
Yuva 0’ı yükleyerek, Recipe_Display içindeki bir belirteç değerini düzenleyerek, kaydederek, indeksi 1’e değiştirerek, ardından tekrar 0’a dönüp yeniden yükleyerek test edin. Belirteç yalnızca Kaydet işlemi gerçekleştiyse yeniden görünmelidir. Denetleyiciyi kapatıp açın ve Recipe_Storage’ın belirteci hâlâ tuttuğunu doğrulayın. HMI’dan aralık dışı bir indeks girmeyi deneyin ve sınırlamanın çalıştığını doğrulayın. Üretimde bu yola güvenmeden önce yedek bir sistemde CSV içe aktarmayı deneyin ve üyeleri dosyayla tek tek karşılaştırın.
Paneli Recipe_Storage[Recipe_Index].Member öğesine bağlamaktan kaçının. Dizilere dolaylı HMI adreslemesinin denetlenmesi daha zordur ve indeks etiketi ile ekran farklı hızlarda güncellendiğinde yanlış yuvaya yazma riskini artırır. Görüntü UDT’si yaklaşımı, daha sonra UDT’yi genişlettiğinizde, güvenlik düzeyleri eklediğinizde veya aynı reçete modelini ortak bir operatör iş akışını paylaşan birden fazla PLC ve PAC sistemi hücresine taşıdığınızda sorunsuz biçimde ölçeklenir.
Yazar Hakkında
Mark Townsend | Kıdemli Otomasyon Mühendisi – Allen-Bradley Sistemleri
Mark Townsend, ControlLogix, CompactLogix ve eski SLC-500 platformlarını kapsayan Allen-Bradley sistemlerinde 18 yılı aşkın deneyime sahip kıdemli bir otomasyon mühendisidir. Günlük çalışmaları, eski ve karma sistem filolarında RSLogix / Studio 5000 mantığı ile FactoryTalk View HMI devreye alma işlemlerini içerir.