Saatlik, Günlük,Haftalık,Aylık ve yıllık rapor
Wintr scada ile datagrigwiev kullanarak herhangi bir tagın belirli periyotlardaki veya her değişimindeki değeri sorguladığımızda satırlar halinde her kaydı bize döküyor.
Benim istediğim bu tagın belirlenen tarihler yada saatler arasındaki toplamını sorgulamak. elbette excele atıp toplayabiliriz belki ama değer sayısı çok fazla olduğunda, toplam harcama miktarını direk olarak görebilirmiyim.
Teşekkür ederim.
İki şekilde yapılabilir.
1.Rapor oluşturma sihirbazının son adımında “End Of Page” sekmesi içersinde “Collect the values of table columns” seçeneği işaretlenirse,oluşturulan raporun son satırında tüm kolonların toplam değeri gösterilir. Eğer kolon zaman değeri ise ilk ve son zaman arasındaki fark gösterilir. Fakat bu gösterim Datagrid üzerinde olmaz. oluşturulan rapor dosyasında olur.
2.SQl sorgusu ile’de toplama yapılabilir. “SELECT Sum([Tag_1]) FROM Table1” bu sorgu Tag_1’in tüm değerlerini toplar. Where komutu ile sorgu sonuna çeşitli kıstaslar girilebilir. SQL sorguları ile bir çok şey yapılabilir. Bunları Google’da aratabilirsiniz. Aşağıdaki sorgu Tag_1’in tüm değerlerini getirir ve en son satırda bu değerleri toplar. Bunu kullanarak Datagrid üzerinde gösterim yapabilirsiniz.Bu sorguda dikkat edilmesi gereken ilk satırda ve son satırda oluşan değerlerin sayı tipleri aynı olmak zorundadır.
SELECT [Tag_1] FROM Table1
Union all
SELECT Sum([Tag_1]) FROM Table1
Was this answer helpful?
LikeDislikeSalih Bey
Yapmış olduğum yağ kazanı izleme scada sisteminin sonuna gelmiş bulunmaktayım. İnşallah projemi bitirip sizden lisansını satın alıcam. Ancak projemin sonunda ve en önemli yerinde takıldım. İzlemiş olduğum verileri günlük haftalık ve aylık olarak raporlamak istiyorum. İnternet üzerinden araştırdım ancak beceremedim. Scada programınızla direkt ilgili olmasada bu sorunumu sql server hakkındaki bilgi ve tecrübelerinizden faydalanmak üzere size soruyorum.
Scada ekranı üzerinden günlük haftalık ve aylık olarak butonlar koyarak, bunlara bastığımda o ana dek olan verilerin raporlanmasını istiyorum. Örneğin sistemim 1.5 aydır kayıt yapıyor olsun ve tarih 23 ocak 2014 saat:17:15, bu zamanda “günlük rapor” butonuna bastığımda aşağıdaki şekildeki gibi;
Tarih Değer1 Değer2
(10/12/2013:08:00-11/12/2013:08:00) 100 50
(11/12/2013:08:00-12/12/2013:08:00) 120 55
(12/12/2013:08:00-13/12/2013:08:00) 130 45
. . .
. . .
(Butona basılan zaman) 110 50
haftalık butona bastığımda zaman aralığı haftalık olacak, aylık butona bastığımda zaman aralığı aylık olacak şekilde rapor almak istiyorum. Ayrıca Burada raporun genel aralığını kısıtlamak için başlangıç ve bitiş süreleride ekran üzerinden atanabilmeli yani
başlangıç süresi:20/01/2014 bitiş süresi:24/01/2014 değerlerini girip
günlük butonuna bastığımda bu aralıktaki günlük raporlamayı göstersin.
Bu işlemleri yapabilecek scripti verebilirseniz çok memnun olurum.
Was this answer helpful?
LikeDislikeSoruyu tam olarak anlayamadım. Anladığım tek şey başlangıç ve bitiş tarihlerini scada ekranından girerek rapor nasıl oluşturacağınız sorusu oldu.
Öncelikle bu videoyu seyredin. http://www.youtube.com/watch?v=M6C3zV4yY_c&feature=mfu_in_order&list=UL
Control panelinde rapor oluşturma modülünün ikinci aşamasında sol kısımda karşılaştırma için seçme kutuları var. Üsteki iki kutu başlangıç, altdaki iki kutu bitiş için. Başlangıç kutularından ilkinde Datetime ikincisinde ise sizin oluşturacağınız internal tag seçin. Aynı şekilde bitiş içinde bir internal tag oluşturun. Bu internal tagların tipi datetime olmalı. Bunları scada ekranında Datetimepicker nesnesinin value özelliğinde seçin. Bu tarihler arasındaki datalar rapor olarak getirilir.
Was this answer helpful?
LikeDislikeSalih bey
Daha öncesinde tüm videolarınızı izlemiştim.Yardım sayfalarınızdaki tüm notlarınızıda okudum. Ancak benim oluşturmak istediğim rapor biraz daha farklı.Sanırım bir önceki yazımda sorunumu tam olarak aktaramadım.
Tekrar bir örnek ile oluşturmak istediğim raporu aktarmaya çalışıcam.
tag_1=tüketilen toplam yakıt miktarım
tag_2=Isıtılan yağın toplam kalori değeri
yukarıdaki değerleri plc ile hesaplatıyorum. Ve sonuçlarını tag olarak scada ekranımda anlık olarak görebiliyorum. Bu değerlerin raporunu linkini vermiş olduğunuz videodaki örnekteki gibi başlangıç ve bitiş süresini belirterek alabiliyorum.Buraya kadar sorunum yok.
tag_1 deki değer tüketilen yakıt miktarı olduğu için her an artmaktadır.Örneğin dün 100 birim ise bugün 120 birimdir,yarın 145 birim olacaktır.Scada ekranı üzerinden başlama ve bitiş sürelerini girip “günlük rapor” butonuma bastığımda gün gün 24 saatlik dilimlerle tüketilen yakıt miktarının raporunu almak istiyorum.ancak bu raporda toplam değer değil aradaki farkı yani o günkü tüketimi görmek istiyorum
Umarım bu kez açıklayıcı olmuştur.
İlginizden dolayı teşekkür ederim.
Was this answer helpful?
LikeDislikeİki tarih arasındaki tüketimi bulmak kolay ama bunu gün gün çıkartmak zor. Çok emin değilim ama bu konuyu araştırıp yazı eklediğimi hatırlıyorum. Aşağıdaki linklerdeki yazılarıma göz atabilirsiniz.
http://www.fultek.com.tr/blog/2012/11/29/datebase-kayitlari-arasinda-fark-hesaplama/
http://www.fultek.com.tr/blog/2012/05/28/sql-server-rapor-sorgulari/
http://www.fultek.com.tr/blog/2012/04/18/scada-rapor-her-saatlik-veriyi-gosterme/
Eğer bunlar işinizi çözmez ise sorunuzu SQL Server sorguları hakkında paylaşımda bulunan forum sitelerine sorabilirsiniz. Bizde ihtiyaç duyduğumuzda bu tür sitelere soru göndererek yardım alıyoruz. Belli düzeyde SQL bilgisi her zaman işimizi çözmeyebiliyor. Bu işin uzmanlarından yardım almak gerekebilir.
Was this answer helpful?
LikeDislikescript ile şöyle bir çözüm olabilir belki;
burada tank seviye sensörden gelenanlık bilgi
seviye fark ise sizin kayıt alacağınız tag olarak düşünürsek, Salih beyin videoda anlattığı şekilde iki adet sorgu butonu ile o tarihler arasındaki anlık tüketimler karşınıza gelir ve en sonda toplam aldırırsanız sanırım sorununuz çözülür…
Imports System
Imports System.IO
Imports System.Windows.Forms
Imports Microsoft.VisualBasic
Namespace WinTr
Public Class MainClass
Public tank_seviye As Int16
Public seviye_fark As Int16
Public hesap As Int16
Public a As UInt16
Public Sub Load
‘——- Script Start Line ——-
if a=0 then
hesap=tank_seviye
end if
if a=1 then
seviye_fark=tank_seviye-hesap
end if
a=a+1
if a>=2 then
a=0
end if
Was this answer helpful?
LikeDislikeFarkı SQL sorgusu ile hesaplamak kolay, ama istenen farklı. Örneğin bir aylık zaman içersinde her günün tüketimini toplu olarak görmek istiyorlar. Bu akıllı yazılmış bir sql sorgusu ile yapılabilir. Ancak epey vakit harcamak gerekir.
Pratik bir çözüm olabilir.
1. Tag_1 in kopyasını Scale fonksiyonu ile oluşturun. 2 adet kopya yapın.
2.İki adet yeni database tablosu oluşturun. Bunu control panelinden yapabilirsiniz. Tablonun biri saatlik, diğeri günlük veriler için olacak.
2. Her bir kopyayı Trigger metodu ile farklı Tablolara kaydedin.
3. Trigger olarak saat’de bir artan ve günde bir artan tag oluşturun. Saat’de bir artması işlemini script ile yapabilirsiniz. Kontrol paneldinde every hour scripti saat başında çalışır.
Sonuç: Raporları farklı tablolardan alın.
Was this answer helpful?
LikeDislikeTeşekkür ederim. Acaba Report manager’de veritabanı seçimi ve doldurulacak tablo listesi var. Bu listede tablo_1 alarm ve olay tabloları var. Acaba tablo_1 gibi tablo_2 tablo_3 vs. aynı projede açabilirmiyiz.
Aslında Yapmak istediğim bazı tagları farklı tablolara kaydederek daha sonra bunlar için ayrı datagiridwiewler oluşturmak.Bunu yapabilmemiz mümkünmüdür.
Was this answer helpful?
LikeDislikeProjenizde tek tablo oluşturduğunuz için Table_1 görüyorsunuz. Farklı tablolar oluşturmuş olsaydınız onları da görürdünüz. Tablo oluşturmak için Control panelinde SQL server sekmesini veya Tag historical ayarlarının yapıldığı formu kullanabilirsiniz.
Was this answer helpful?
LikeDislikeBu konu hakkında yeni versiyon çıktı. Daha fazla bilgi için linki takip ediniz.
http://www.wintrscada.com/2014/02/rapor-sorgulari/
Was this answer helpful?
LikeDislike