Trends
Trends – CODESYS'ten Canlı Veri Bağlantısı (Generate Code Dökümantasyonu)
Bu kılavuz, “Generate Code” düğmesini kullanarak bir PLC'den (örneğin CODESYS projesi) gelen canlı verileri PLCVisu Trend modülüne nasıl bağlayacağınızı açıklar. Amaç, ölçüm değerlerini (örn. sıcaklık, basınç, doluluk) döngüsel olarak bir veritabanına yazmak ve bu verileri Trend Viewer'da görselleştirmektir.
Amaç
- CODESYS'ten gelen canlı verileri otomatik olarak bir trend veritabanına yazmak
- Bu verileri gerçek zamanlı olarak bir HMI üzerinde görselleştirmek (örn. WAGO WP400)
- PLCVisu'daki kod üreticisi sayesinde minimum yapılandırma gereksinimi
Adım Adım Kılavuz
1. Kod Oluştur
Trend UI içinde “Generate Code” düğmesine tıklayın. Kod otomatik olarak kopyalanır ve doğrudan CODESYS projenize yapıştırılabilir.
(* DECLARATION SECTION *)
trendsFBlinetrend1Instance: PLCVisu.trendsFB; (* Trend için FB örneÄi *)
slinetrend1Columns:STRING(4096):= 'dataset1';
slinetrend1Values:STRING(4096);
(* CODE SECTION *)
(* Dosya yolu ve max kayıt sayısı parametrelerini baÅlat *)
trendsFBlinetrend1Instance.init('$$PLCVisuDB$$/trends/linetrend1.db', {{max_records}});
(* Veritabanına bir kayıt yaz *)
slinetrend1Values := PLCVisu.ELA_UTIL.CONCAT_4096('"', REAL_TO_STRING({{dataset1_value}}));
slinetrend1Values := PLCVisu.ELA_UTIL.CONCAT_4096(slinetrend1Values, '"');
trendsFBlinetrend1Instance.write('',slinetrend1Columns, slinetrend1Values);
(* Ayırıcı satır yaz - isteÄe baÄlı - örn. batch sonu görünümü için *)
(* trendsFBlinetrend1Instance.writeFinish(''); *)
İsteğe Bağlı:
writeFinish('')komutu ile trend görünümünde görsel ayırıcı çizgiler (örn. batch ayrımı) oluşturabilirsiniz.
2. Sensör Değeri Ekle
GVL.MySensor yerine gerçek PLC değişkeninizi yazın, örnek:
REAL_TO_STRING(GVL.TemperatureSensor1)
Notlar:
- Değişken
REALolarak tanımlanmalı - Diğer türler için uygun dönüştürücü kullanılmalı:
INT_TO_STRING(...)→ tam sayılarBOOL_TO_STRING(...)→ boole ifadeleri
3. CODESYS & PLCVisu Arasındaki Bağlantıyı Kur
Verilerin PLCVisu'da görüntülenebilmesi için şu adımlar izlenmeli:
CODESYS’te:
- Sembol yapılandırmasını açın
- Gerekli GVL değişkenlerini işaretleyin
- “Harici erişime izin ver” seçeneğini aktif edin
- Gerekirse sembol dosyasını dışa aktarın
PLCVisu’da:
- Projede PLC bağlantısını yapılandırın:
PLCVisu://localhost→ yerel testleropc.tcp://<IP>:4840→ OPC UA bağlantısı
- Tag-Browser ile değerleri bağlayın
4. Veritabanını Başlat
trendsFBlinetrend1Instance.init('$$PLCVisuDB$$/trends/linetrend1.db', 10000);
- Veritabanı dosyasını oluşturur (veya açar)
10000→ maksimum kayıt sayısını tanımlar- Bu satır yalnızca bir kez çağrılmalıdır (örn. başlatma döngüsünde)
5. Verileri Döngüsel Olarak Yaz
Aşağıdaki kod, her çalıştırmada mevcut sensör değerini yazar:
slinetrend1Values := PLCVisu.ELA_UTIL.CONCAT_4096('"', REAL_TO_STRING(GVL.TemperatureSensor1));
slinetrend1Values := PLCVisu.ELA_UTIL.CONCAT_4096(slinetrend1Values, '"');
trendsFBlinetrend1Instance.write('', 'dataset1', slinetrend1Values);
Tipik kullanım:
- Döngüsel bir görevde (örn. her 1 saniyede bir)
- Ya da zamanlayıcı bir FB ile
Özet: CODESYS ↔ PLCVisu Trend
| Adım | Açıklama |
|---|---|
| Generate Code | Temel kod yapısını oluşturur |
| Sensör değeri ekle | GVL değişkenini *_TO_STRING(...) ile dönüştür |
| Bağlantıyı etkinleştir | Sembol yapılandırması & PLCVisu veri kaynağını ayarla |
| .init() | Veritabanını oluştur ve tampon boyutunu belirle |
| .write() | Değerleri döngüsel olarak yaz |
| İsteğe bağlı: .writeFinish | Görsel ayırıcı çizgiler oluşturur (örn. batch sonu) |
Hata Giderme
| Sorun | Olası Nedenler |
|---|---|
| Trend verisi görünmüyor | .init() çağrılmamış veya sensör değeri boş |
.write() hatası |
Format hatası (örneğin eksik " karakteri) |
| Veritabanı oluşturulmamış | Yanlış dosya yolu veya yazma izni yok |
| PLC bağlantısı yok | Sembol yapılandırması kapalı veya IP hatalı |
Öneri
- Üretilen kodu şablon olarak kullanın –
dataset1, değişken adlarını ve yolları özelleştirin - Birden fazla sinyal mi gerekiyor? → Birden çok
.write()satırı kullanın veyadataset2,dataset3tanımlayın - Önce tek bir REAL değişkenle test yaparak başlayın