Üretim Değeri
Merhaba.
1-32bit unsigned data adresi 56507dır. bu adresi sürekli üretileni göstermektedir. scada da şunu yapmak istiyorum.
Bu datadaki üretimi günlük üretim olarak olarak sayacak ,gün bittiğinde dünkü üretim hanesine yazacak ve günlük üretim sıfırlanacak. her gün bu şekilde devam etmeli.
2-hergünkü üretimi bir ay boyunca toplayıp o aya bir ait datada aylık üretim olarak göstereceğim.
3-ayların toplamı senelik üretimde görülmelidir.
nasıl yapabilirim?
Teşekkürler.
Bu tür işlemler script içersinde yapılabilir. Internal bir Tag’a saat 00:00 da ki değer kaydedilerek yapılabilir. Bence daha doğru olan ise database’e verileri kaydetmek ve kaydedilmiş verilerden hesaplamak daha doğru olur. Ben bu şekilde açıklama yapıcam. 56507 için oluşturduğunuz Tag’ı historical yapın.
Aşağıdaki script ile database’de kayıtlı ilk değer ile son değer arasındaki fark Tag_6 değişkenine yazılır.
Imports System
Imports System.IO
Imports System.Windows.Forms
Imports Microsoft.VisualBasic
Imports System.Data.SqlClient
Namespace WinTr
Public Class MainClass
Public Tag_6 As UInt32
Public Sub Load
Dim SQL_cn As New SqlConnection()
SQL_cn.ConnectionString = “Server=(local)\WinTr;uid=sa;pwd=WinTr@2013;database=TestProjesi”
SQL_cn.Open()
Dim SQL_Ins as String
SQL_Ins = “SELECT max(Tag_1) – min(Tag_1) FROM Table1”
Dim SQL_cmdnon As SqlCommand = New SqlCommand(SQL_Ins, SQL_cn)
Dim Value as string
Value = SQL_cmdnon.ExecuteScalar.ToString
if isnumeric(Value) then
Tag_6 = Value
Else
Tag_6 = 0
End If
End Sub
End Class
End Namespace
Not: SQL_cn.ConnectionString = “Server=(local)\WinTr;uid=sa;pwd=WinTr@2013;database=TestProjesi” bu satırda bulunan “WinTr@2013” database şifresi ve “TestProjesi” bilgilerini Control Panel’den SQL Server sekmesinden öğrenip değiştirin.
İlk örneğimiz daha basit bir örnekti. Şimdi sorunuzun karşılığı olan dünkü değeri getiren bir script yazalım. Aynı SQL sorgusunun sonuna “WHERE” komutu ile dünkü tarihi eklememiz yeterli olacaktır.
SQL_Ins = “SELECT max(Tag_1) – min(Tag_1) FROM Table1 Where DATEDIFF(dd, [DateTime], GETDATE()) = 1”
Bu değişiklik ile dünkü ilk ve son değer arasındaki farkı bulmuş oluruz. Bu scripti derleyip kaydettikten sonra Control Panelinde Every Day Script olarak seçtiğimizde her gün saat 00:00’da çalışıp gerekli hesaplamayı yapar ve sonucu Tag_6’ya yazar.
Not: Scripti kopyalayıp yapıştırdığınızda “Tırnak” işaretlerini değiştirmelisiniz.