Manajemen Resep Allen-Bradley dengan Array UDT dan Antarmuka Edit HMI
Pelajari cara membuat pengeditan resep berbasis HMI untuk AB Logix 5000 menggunakan array UDT dan instruksi COP untuk penyimpanan parameter yang persisten.
Penanganan resep pada platform Logix bekerja paling baik jika HMI tidak pernah menulis langsung ke array historis. Pola yang andal menggunakan tiga tag: Recipe_Storage sebagai array UDT dengan panjang 50, Recipe_Display sebagai satu instance UDT untuk layar operator, dan Recipe_Index sebagai DINT yang menentukan resep tersimpan mana yang dicerminkan ke struktur display. Instruksi Copy (COP) memindahkan data saat indeks berubah dan sekali lagi saat Save, sehingga operator selalu mengedit buffer sementara sementara arsip tetap konsisten setelah siklus daya.
Monitor tag Logix yang menampilkan Recipe_Storage[50], Recipe_Display, dan Recipe_Index yang digunakan untuk pengeditan resep melalui HMI.
Tentukan UDT satu kali dengan setiap setpoint yang diperlukan proses—suhu, timer, kecepatan, kode produk, dan mask interlock—lalu buat Recipe_Storage sebagai UDT[50]. Recipe_Display harus menggunakan tipe UDT yang identik, bukan sekumpulan tag atomik yang hanya berkaitan longgar. Tipe yang homogen membuat penghitungan panjang COP menjadi sederhana dan mencegah pemotongan data secara diam-diam ketika anggota ditambahkan kemudian.
Pembatasan indeks dan jalur pemuatan
Batasi Recipe_Index ke rentang inklusif 0 hingga 49 sebelum COP dijalankan. Indeks yang tidak dibatasi dari objek entri numerik dapat menyebabkan COP mengalami fault atau mengambil memori yang tidak terdefinisi, bergantung pada cara batas array diperlakukan dalam proyek. Saat Recipe_Index berubah naik (atau ketika tombol Load ditekan secara eksplisit), salin Recipe_Storage[Recipe_Index] ke Recipe_Display. HMI hanya mengikat ke anggota Recipe_Display. Aturan tunggal ini menghilangkan kondisi balapan ketika dua layar menulis ke slot array yang berbeda sementara operator masih menyesuaikan nilai.
// Struktur pseudocode
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);
Layar resep HMI yang hanya terikat ke Recipe_Display, dengan tindakan Load/Save yang memicu rutinitas COP pada pengontrol.
Jalur penyimpanan, retensi, dan perilaku pengunduhan
Saat Save, salin Recipe_Display kembali ke Recipe_Storage[Recipe_Index]. Karena Recipe_Storage berada di dalam tag pengontrol, nilainya tetap tersimpan setelah siklus daya jika proyek dikonfigurasi untuk retensi tag normal. Data juga dipertahankan setelah pengunduhan ketika Anda memilih untuk mempertahankan nilai tag; perlakukan kotak centang tersebut sebagai bagian dari SOP resep, bukan sekadar kemudahan opsional. Operator harus memahami bahwa mengunduh proyek dengan opsi “reinitialize tags” aktif akan menghapus resep yang telah disetel dengan cermat, kecuali tersedia cadangan luring.
Alur kerja impor CSV perlu disikapi dengan hati-hati. Banyak utilitas HMI atau Excel-ke-tag membuat nama tag tanpa memperbarui nilai anggota di dalam UDT bertingkat secara andal, terutama ketika tajuk kolom tidak lagi sesuai dengan nama anggota UDT. Utamakan rutinitas impor eksplisit yang memvalidasi setiap bidang, atau muat ulang dari ekspor L5X/tag yang telah terbukti benar setelah pengeditan massal. Jangan berasumsi bahwa banner hijau “import complete” berarti Recipe_Storage[n].Setpoint sekarang sama dengan sel spreadsheet.
| Tag | Tipe | Diikat ke HMI? | Tujuan |
|---|---|---|---|
| Recipe_Storage | UDT[50] | Tidak | Arsip resep nonvolatil |
| Recipe_Display | UDT | Ya saja | Buffer pengeditan operator |
| Recipe_Index | DINT | Ya (pemilih) | Slot aktif 0–49 |
Panduan antarmuka HMI
- Sediakan Load dan Save sebagai bit sesaat terpisah yang ditangani di pengontrol, bukan sebagai penulisan array langsung dari panel.
- Tampilkan indeks yang telah dibatasi dan bidang “stored name” hanya-baca yang disalin dari UDT display agar operator dapat memastikan slot yang aktif.
- Larang Save saat mesin sedang dalam siklus jika anggota resep memengaruhi setpoint gerak atau termal di tengah batch.
- Catat peristiwa Save bersama ID operator dan indeks untuk keterlacakan pada lini yang diatur.
Validasi batas indeks dan pengunduhan yang dipertahankan
Uji dengan memuat slot 0, mengedit nilai penanda pada Recipe_Display, menyimpan, mengubah indeks ke 1, lalu kembali ke 0 dan memuat lagi. Nilai penanda hanya boleh muncul kembali jika Save telah dijalankan. Matikan dan hidupkan kembali pengontrol, lalu pastikan Recipe_Storage masih menyimpan nilai penanda tersebut. Coba masukkan indeks di luar rentang dari HMI dan pastikan pembatasan berjalan. Coba impor CSV pada sistem cadangan dan bandingkan setiap anggota dengan file sebelum mempercayai alur tersebut di produksi.
Hindari mengikat panel ke Recipe_Storage[Recipe_Index].Member. Pengalamatan HMI tidak langsung ke array lebih sulit diaudit dan dapat menyebabkan penulisan ke slot yang salah ketika tag indeks dan layar diperbarui pada laju yang berbeda. Pola Display UDT dapat berkembang dengan rapi ketika Anda nantinya memperluas UDT, menambahkan tingkat keamanan, atau memigrasikan model resep yang sama ke beberapa sel sistem PLC & PAC yang menggunakan alur kerja operator umum.
Tentang Penulis
Mark Townsend | Insinyur Otomasi Senior – Sistem Allen-Bradley
Mark Townsend adalah insinyur otomasi senior dengan pengalaman lebih dari 18 tahun pada platform Allen-Bradley, mencakup ControlLogix, CompactLogix, dan SLC-500 lama. Pekerjaan sehari-harinya meliputi logika RSLogix / Studio 5000 dan persiapan HMI FactoryTalk View pada armada sistem lama dan campuran.