Flexem HMI

mtnkyr1234

Üye
Katılım
5 Nis 2024
Mesajlar
2
Puanları
1
Yaş
25
Merhaba, Projede Codesys kullanarak Cotrust PLC kodladım. HMI olarak Flexem 7000 serisi kullanıyorum. Bu projede Vel1,Vel2,Vel3 ve Pos1,Pos2,Pos3 gibi hız ve konum bilgilerini en az 3 farklı şekilde reçetede saklamam gerekiyor. Yardımcı olabilir misiniz?
 
KNX Standardı, küçük bir rezidansın içerisindeki aydınlatma, perde panjur, klima kontrolünden, Dünya’nın en büyük havalimanlarındaki aydınlatma otomasyonu gibi çözümler için tercih edilen bir Dünya standardıdır.
Yazımızda endüstrinin can damarı sayılabilecek PLC’yi inceleyeceğiz.
Şü yöntemler denenebiir

1. Reçete Yönetimi için Codesys kullanılabilir.
Codesys’te reçete yönetimi için hazır reçete (recipe) fonksiyonunu kullanabilirsiniz. Reçeteler, belirli bir makine veya proses için farklı parametre setlerini saklamanızı sağlar.
Reçete Yapısı;
Öncelikle bir yapı (STRUCT) tanımlayarak hız ve konum bilgilerini organize edin.

TYPE RecipeData :
STRUCT
Vel1 : REAL;
Vel2 : REAL;
Vel3 : REAL;
Pos1 : REAL;
Pos2 : REAL;
Pos3 : REAL;
END_STRUCT
END_TYPE

Global Değişkenler Tanımlama:

VAR_GLOBAL
CurrentRecipe : RecipeData;
Recipe1 : RecipeData;
Recipe2 : RecipeData;
Recipe3 : RecipeData;
END_VAR

2. Reçeteleri yüklemek ve kaydetmek için fonksiyon blokları oluşturun.

Reçete Yükleme Fonksiyonu:
Bu fonksiyon, belirli bir reçeteyi CurrentRecipe değişkenine yükler.


FUNCTION_BLOCK LoadRecipe
VAR_INPUT
RecipeNumber : INT; // 1, 2 veya 3
END_VAR
VAR
RecipeDataPointer : POINTER TO RecipeData;
END_VAR

CASE RecipeNumber OF
1: RecipeDataPointer := ADR(Recipe1);
2: RecipeDataPointer := ADR(Recipe2);
3: RecipeDataPointer := ADR(Recipe3);
ELSE
RecipeDataPointer := 0;
END_CASE

IF RecipeDataPointer <> 0 THEN
CurrentRecipe := RecipeDataPointer^;
END_IF

Reçete Kaydetme Fonksiyonu:
Bu fonksiyon, CurrentRecipe değişkenini belirli bir reçeteye kaydeder.


FUNCTION_BLOCK SaveRecipe
VAR_INPUT
RecipeNumber : INT; // 1, 2 veya 3
END_VAR
VAR
RecipeDataPointer : POINTER TO RecipeData;
END_VAR

CASE RecipeNumber OF
1: RecipeDataPointer := ADR(Recipe1);
2: RecipeDataPointer := ADR(Recipe2);
3: RecipeDataPointer := ADR(Recipe3);
ELSE
RecipeDataPointer := 0;
END_CASE

IF RecipeDataPointer <> 0 THEN
RecipeDataPointer^ := CurrentRecipe;
END_IF

3. Flexem HMI ile Entegrasyon
Flexem 7000 serisi HMI ile PLC arasındaki iletişimi kurarak reçeteleri görüntüleyebilir ve düzenleyebilirsiniz.

Flexem HMI'da Değişken Tanımlama:
Flexem HMI yazılımında PLC değişkenlerini tanımlayın ve bu değişkenleri ekran üzerinde kullanın.

CurrentRecipe.Vel1
CurrentRecipe.Vel2
CurrentRecipe.Vel3
CurrentRecipe.Pos1
CurrentRecipe.Pos2
CurrentRecipe.Pos3

HMI'da Reçete Seçimi ve Kaydetme:
Bir buton veya giriş alanı kullanarak kullanıcıların reçeteleri seçmesine ve kaydetmesine izin verin. HMI’dan reçete numarasını girerek ilgili PLC fonksiyonlarını çağırabilirsiniz.

4. Örnek HMI Ekranı:
Reçete Seçimi: Kullanıcıların reçete numarasını girmesi ve yüklemesi için bir giriş alanı ve buton ekleyin.

Hız ve Konum Ayarları: Kullanıcıların Vel1, Vel2, Vel3, Pos1, Pos2, Pos3 değerlerini girmesi için giriş alanları.
Kaydet Butonu: Mevcut ayarları seçilen reçeteye kaydetmek için bir buton.

5. Test ve Doğrulama:
Tüm sistemin doğru çalıştığından emin olmak için PLC ve HMI arasındaki iletişimi test edin.
Mesela Hız ve konum bilgilerini farklı reçetelere kaydedin ve yükleyin, deneyin
 
Teşekkür ederim Mehmet Bey. FStudio programında tek tek tagları Discontinious olarak tanımlayarak Reçete durumunu çözdüm.
 

Forum istatistikleri

Konular
128,604
Mesajlar
918,989
Kullanıcılar
450,606
Son üye
csancar

Yeni konular

Çevrimiçi üyeler

Geri
Üst