DopSoft Historial Data Table Hakkında

berkay411

Üye
Katılım
17 Tem 2023
Mesajlar
26
Puanları
1
Yaş
24
Dopsoft yazılımında historial data table ile belirli bazı verileri tablo halinde kaydetmek istiyorum. Elimde bir counter (C1) sayı verisi ve start stop butonları var. Start (M0) butonuna basılınca tablo basıldığı zamanı ve counter verisini kaydetmeli. Stop (M1) butonuna basıldığında bir subscreen çıkıyor ve neden stop butonuna basıldığını soruyor Combobox ile önceden belirtilen nedenlerden birini seçip onayla butonuna basınca da tabloya zamanı counter verisini ve combobox da ki hangi veriyi seçtiğini kaydetmeli. Tablo için bu iki buton ile tetikleyip nasıl istediğim verileri okuyup kaydedebilirim.
 
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.
Data kayıtta okuma adresine sayıcıyı girin. Tetikleme için PLC seçin. Ardından DOPSoft --> Seçenekler --> Yapılandırma --> Kontrol Bloğu'nda 'Data kayıt buffer örnekleme' kontrol wordunun ilgili buffer bitini tetikleyin.
 
Data kayıtta okuma adresini sayıcı girince sayıcıyı okuyabiliyorum. aynı tablo içinde $1 adresinde bulunan veriyi kaydetmek için ikinci bir buffer tanımladım ama ikisini aynı anda kullanamıyorum.
 
loglarını tutacağınız tüm dataları hmi panelin dahili hafızasına alıp basit bir batch sampling macro yazabilirsiniz LUA da. örnek atabilirim
 
-- Add initial code here (run once) -- $30 DATA1 Integer -- $31 DATA2 Integer -- $32 DATA3 Real -- $34 DATA4 Real -- $36-38 Product Type -- $39-40 TestResult (OK-NOK) -- $41 Cause (used offset) while true do -- Add loop code here (cyclic run) b1=link.ReadBit("BATCH_ENABLE") -- Reading batch enable bit from PLC d5=link.Read("PRODUCT_TYPE") -- Reading product type (1=P1, 2=P2, 3=P3, 4=P4) b2=link.ReadBit("TEST_RESULT") -- Test result (1=TestOK, 0=TestNOK) if (b1==1) then -- Batch enable condition link.WriteBit("LOGPERM_BIT",1) -- Log perm bit if (d5==1) then -- Product type selection str1 = "PART1" elseif (d5==2) then str1 = "PART2" elseif (d5==3) then str1 = "PART3" else str1 = "ERROR" end start_index1 = 36 string_len1 = string.len(str1) mem.inter.WriteAscii(start_index1, str1, string_len1) -- Write value to $36 (Product type) if (b2==1) then -- Test result sequence str2 = "OK " else str2 = "NOK" end start_index2 = 39 string_len2 = string.len(str2) mem.inter.WriteAscii(start_index2, str2, string_len2) -- Write value to $39 (Test result) d1=link.Read("LOGDATA1_SPARE") -- Read value from DB2.DATA1 d2=link.Read("LOGDATA2_SPARE") -- Read value from DB2.DATA2 f1=link.ReadFloat("LOGDATA3_PRESSURE") -- Read value from DB2.DATA3 (Pressure) f2=f1/10.0 f3=link.ReadFloat("LOGDATA4_TEMPERATURE") -- Read value from DB2.DATA4 (Temperature) f4=f3/10.0 mem.inter.Write(30, d1) -- Write to $30 mem.inter.Write(31, d2) -- Write to $31 mem.inter.WriteFloat(32, f1) -- Write to $32 mem.inter.WriteFloat(34, f3) -- Write to $34 b3=link.ReadBit("LOG_TRIGGER") -- Reading trigger bit b4=link.ReadBit("CLEAR_LOG_FLAG") -- Reading clear bit if (b3==1) then -- Log trigger b_retVal = mem.inter.Write(300, 1) -- Return value of sampling flag address sys.Sleep(350) if (b_retVal==1) then -- Reset sampling flag mem.inter.Write(300, 0) retVal3 = link.WriteBit("LOG_TRIGGER", 0) sys.Sleep(50) end end if (b4==1) then -- Clear seq b_retVal2 = mem.inter.Write(302, 4095) -- Return value of clear flag address sys.Sleep(250) if (b_retVal2==1) then -- Reset clear flag mem.inter.Write(302, 0) retVal4 = link.WriteBit("CLEAR_LOG_FLAG", 0) link.WriteBit("CLEAR_LOG_TRIGGER", 0) sys.Sleep(20) end end else link.WriteBit("LOGPERM_BIT",0) end sys.Sleep(100) end

siemens plc den veriyi okuyup tekrar plcden okuduğu triggerla data yazıyor. bunu hiç yapmayıp logları plcde toplayıp da yapabilirsiniz
buffer.JPG
config.JPG
img.JPG
buffer.JPG
 
Son düzenleme:

Forum istatistikleri

Konular
128,197
Mesajlar
915,761
Kullanıcılar
449,977
Son üye
keskiyan

Yeni konular

Geri
Üst