Kết quả 1 đến 10 của 22
Chủ đề: DataBase Wincc
-
24-11-2011, 17:50 #1
DataBase Wincc
Mấy bài viết trước mình đã nói về cách tạo database với intouch trong bài viết này mình sẽ hướng dẫn cách tạo database trong wincc và hướng dẫn cách truy suất để lấy dữ liệu trong SQL của Wincc sử dụng Connectivity pack.
- Trong Wincc để có thể lấy được dữ liệu historical hoặc alarm history trong Database thì chúng ta sẽ phải sài một option của wincc đó là Connectivity Pack.Còn nếu không muốn phải bỏ tiền ra để mua option thì chúng ta sẽ phải tự tạo database riêng cho mình ở đây mình sẽ sử dụng access làm database.
- Để có thể ghi dữ liệu từ wincc và access thì chúng ta sẽ sử dụng Vb script trong wincc để viết.
Ví dụ mình có 4 thông số ngày tháng Nhiệt độ, áp suất, lưu lượng, độ dẫn điện (nếu cần thì ghi tên người vận hanh luôn) cần lưu vào Database access .
- Đầu tiên các bạn tạo một DSN trong phần ODBC của window.
sau đó viết một đoạn code nhỏ như sau.
Sub OnLButtonDown(Byval Item, Byval Flags, Byval x, Byval y)
Dim objConnection
Dim strConnectionString
Dim nhiet
Dim ap
Dim luu
Dim dodan
Dim strSQL
Dim objCommand
strConnectionString = "Provider=MSDASQL;DSN=databasewincc;UID=;PWD=;"'ng Value = HMIRuntime.Tags("Tag1").Read
'nhiet=HMIRuntime.Tags ("nhietdo").Read
'ap=HMIRuntime.Tags ("apsuat").Read
'luu=HMIRuntime.Tags ("luuluong").Read
'dodan=HMIRuntime.Tags ("dodandien").Read
strSQL = "INSERT INTO Table1 (thoigian,nhietdo,apsuat,luuluong,dodandien) VALUES (" & SQL_TimeString(Now)&","& HMIRuntime.Tags ("nhiedo").Read &","& HMIRuntime.Tags ("apsuat").Read &","& HMIRuntime.Tags ("luuluong").Read &","& HMIRuntime.Tags ("dodandien").Read &");"
Set objConnection = CreateObject("ADODB.Connection")
objConnection.ConnectionString = strConnectionString
objConnection.Open
Set objCommand = CreateObject("ADODB.Command")
With objCommand
.ActiveConnection = objConnection
.CommandText = strSQL
End With
objCommand.Execute
Set objCommand = Nothing
objConnection.Close
Set objConnection = Nothing
End Sub
sau đó chúng ta sẽ có được một cái database access như sau
như vậy chúng ta đã có một database để sử dụng.
- Nếu không muốn ghi vào access thì bạn có thể sử dụng option của siemen là connectivity pack để truy suất vào SQL để lấy dữ liệu
Phần này Siemen đã có hướng dẫn cụ thể bạn vào đây download tài liệu và Ví dụ về xem
File ví dụ của siemen
http://www.mediafire.com/?ovrixccdm49gz17
tài liệu về connectivity pack
http://www.mediafire.com/?nylyl2xb82gqvfs
Nhận xét
Lợi ích của việc tự tạo database là bạn có thể chủ động quản lý được database của mình dễ dàng kết nối thiết lập báo cáo, còn nếu sử dụng option của siemen đầu tiên bạn phải tốn tiền mua licence của siemen với việc quả lý và làm báo cáo theo ý của mình cũng khó.
hieplangmoi@gmail.com
hp 0946 313 816-------------------------------------------------------------------------------- Xem bài viết cùng chuyên mục:
- giới thiệu về SCADA
- Archestra symbol trong Intouch Wonderware
- Một số thắc mắc wincc.
- Các kỹ sư thiết kế/tích hợp thường sử dụng phần mềm Scada nào?
- Một số tài liệu và công văn về SCADA
- DataBase Wincc
- Scada Mitsubishi
- Cách lấy dữ liệu bằng Keepserver sử dụng giao thức Modbus
- cùng tìm hiểu về WINCC-SCADA-DCS
- xin phần mềm PLC mithubishi:
- AC800F-Project
- Kết nối Inverter với Autobase Scada
- Kết nối PC với PLC
- SCADA trong HTĐ Việt Nam
- Intouch Project
Automation Training
Dạy Scada và PLC
https://www.facebook.com/groups/426215507822804/
Email:Hieplangmoi@gmail.com
Hp: 0946313816
"Ở đâu có ý chí ở đó có lối đi"
"Where there is a will, there is a way"
-
-
-
24-11-2011, 21:13 #2
Ðề: DataBase Wincc
Mình sẽ nói sơ qua về cách lấy alarm history sử dụng connectivity pack
Mình sẽ lấy ví dụ sư sau. Ví dụ bạn muốn truy suất alarm từ ngày nào tới ngày nào đó và vị trí xảy ra lỗi như hình sau
đầu tiên bạn cần copy đoạn code có sẵn và sửa lại như sau
Sub WriteArchiveMessagesToCSV
'///////////////////////////////////////////////////////////////
'1. Step: Creating the CSV-File
'///////////////////////////////////////////////////////////////
'Declaration of local Tags
Dim fso 'FileSystemObject
Dim f 'File
Dim ts 'TextStream
Dim path 'Path
Dim StartTime 'Date and time when writing is triggered
Dim TimeStamp 'Timestamp for building the filename
Dim ngaybatdau
Dim ngayketthuc
Dim khuxayraloi
ngaybatdau=HmiRuntime.tag("startday").read
ngayketthuc=HmiRuntime.tag("endtime").read
khuxayraloi=HmiRuntime.tag("pointoferror").read
StartTime = Now 'Date and Time when writing messages is triggerd
'Generate String for the CSV-Filename:
TimeStamp = FormatDateTime(StartTime,vbGeneralDate)
TimeStamp = Replace(TimeStamp,":","_") 'Replace ":" with "_"
'Path and name for the CSV-File:
path= "C:\Osmosis " & TimeStamp & " Messages.csv"
'Create Filesystemobject and CSV-File if not exists:
Set fso = CreateObject("Scripting.FilesystemObject")
If Not fso.FileExists(path) Then
fso.CreateTextFile(path)
Else
MsgBox "File already exits !"
Exit Sub
End If
'Create File-Object and open this file for writing
Set f = fso.GetFile(path)
Set ts = f.OpenAsTextStream(2,-2)
'CSV-File is ready now for wrtiting !
'////////////////////////////////////////////////////
'-------------------------------------------------------------
'////////////////////////////////////////////////////
'2. Connecting WinCC-Database
'////////////////////////////////////////////////////
Dim Pro 'Provider
Dim DSN 'Data Source Name
Dim DS 'Data Source
Dim ConnString 'Connection String
Dim MachineNameRT 'Name of the PC from WinCC-RT
Dim DSNRT 'Data Source Nane from WinCC-RT
Dim Conn 'Connection to ADODB
Dim RecSet 'RecordSet
Dim Command 'Query
Dim CommandText 'Command-Text
Dim sqlSec 'Seconds for SQL
Dim sqlMin 'Minutes for SQL
Dim sqlHour 'Hours for SQL
Dim sqlDay 'Day for SQL
Dim sqlMonth 'Month for SQL
Dim sqlYear 'Year for SQL
Dim CurrLanguage'Current Language
'Attention: Tag-Archiving is based on UTC, that means the timestamp of a Tag is in UTC !
'Read the name of the PC-Station and the DSN-Name from WinCC-RT
Set MachineNameRT = HMIRuntime.Tags("@LocalMachineName")
Set DSNRT = HMIRuntime.Tags("@DatasourceNameRT")
'Preparing the Connection-String
Pro="Provider=WinCCOLEDBProvider.1;" 'First instance of WinCCOLEDB
DSN="Catalog=" & DSNRT.Read & ";" 'Name of Runtime-Database
DS= "Data Source=" & MachineNameRT.Read & "\WinCC" 'Data Source
'Build the complete String:
ConnString = Pro + DSN + DS
'Make Connection
Set Conn = CreateObject("ADODB.Connection")
Conn.ConnectionString = ConnString
Conn.CursorLocation = 3
Conn.open
'Preparing query
'Format needed for StartTime: '2009-01-20 13:26:45'"
'Date and time 24 hours before
StartTime=DateAdd("h",-24,StartTime)
'Split in Years, months, days, hours, min.,seconds
sqlSec=second (StartTime)
sqlMin=Minute (StartTime)
sqlHour=Hour (StartTime)
sqlDay=Day (StartTime)
sqlMonth=Month (StartTime)
sqlYear=Year (StartTime)
'Creating leading zeros
sqlSec=Right("00" & sqlSec,2)
sqlMin=Right("00" & sqlMin,2)
sqlHour=Right("00" & sqlHour,2)
sqlDay=Right("00" & sqlDay,2)
sqlMonth=Right("00" & sqlMonth,2)
'Formating Starttime fpr SQL-Statement:
StartTime="'" & sqlYear & "-" & sqlMonth & "-" & sqlDay & " " _
& sqlHour & ":" & sqlMin & ":" & sqlSec & "'"
'MsgBox "Jahr: " & sqlYear & vbcrlf & "Monat: " & sqlMonth & vbcrlf & "Tage: " & sqlDay & vbcrlf & _
'"Stunden: " & sqlHour & vbcrlf & "Minuten: " & sqlMin & vbcrlf & _
'"Sekunden: " & sqlSec 'MBox for Diagnosis only
'Building the complete String:
Set CurrLanguage = HMIRuntime.Tags("@CurrentLanguage")
Select Case CurrLanguage.Read
Case 1031 'German
CommandText= "ALARMVIEW:Select * FROM AlgViewDeu WHERE DateTime>" & ngaybatdau & "AND DateTime<" & ngaybatdau " AND text2="&khuxayraloi&""
Case 1033 'English
CommandText= "ALARMVIEW:Select * FROM AlgViewEnu WHERE DateTime>" & ngaybatdau & "AND DateTime<" & ngaybatdau " AND text2="&khuxayraloi&""
End Select
'MsgBox "Open Connection with: " & CommandText 'MBox for Diagnosis only
'Create the recordset, read the records and set to first recordset:
Set RecSet = CreateObject("ADODB.Recordset")
Set Command = CreateObject("ADODB.Command")
Command.CommandType = 1
Set Command.ActiveConnection = Conn
Command.CommandText=CommandText
Set RecSet = Command.Execute
RecSet.MoveFirst
'write recordsets to CSV-File
Select Case CurrLanguage.Read
Case 1031 'German
ts.WriteLine ("Datum/Zeit;Meldenr.;Ereignis;Klasse")
Case 1033 'Englisch
ts.WriteLine ("Date/Time;Message;point of error")
End Select
Do while Not RecSet.EOF
ts.WriteLine (RecSet.Fields(2).Value & ";" & RecSet.Fields(37).Value & ";" & _
RecSet.Fields(38).Value &)
RecSet.MoveNext
Loop
' Please don't forget this............. !!!
ts.close
RecSet.Close
Set Recset=Nothing
Set Command = Nothing
conn.close 'Close connection
Set Conn = Nothing
Set fso = Nothing
Set f = Nothing
Set ts = Nothing
End Sub
trong đó giá trị ngày bắt đầu, ngày kết thúc, vị trí xảy ra lỗi lấy từ màn hinh xuống. Còn Field datetime là 2, field message la 37, field point of error là 38. còn một field nữa là Duration mình tìm không thấy nếu ai đã làm rồi chỉ mình lấy Duration này với.
các bạn chú ý nhé có thể code mình có chỗ nào bị sai các bạn chỉnh lại Do cái mình làm cũng chưa hoàn chỉnh.
Hieplangmoi@gmail.comAutomation Training
Dạy Scada và PLC
https://www.facebook.com/groups/426215507822804/
Email:Hieplangmoi@gmail.com
Hp: 0946313816
"Ở đâu có ý chí ở đó có lối đi"
"Where there is a will, there is a way"
-
Những thành viên đã cảm ơn khongbaogio vì bài viết hữu ích:
-
02-12-2011, 22:07 #3
Ðề: DataBase Wincc
mình đã viết đoạn lệnh như sau, không biết bị lỗi gì mà không truy nhập vào wincc được
, mình muốn truy nhập số liệu từ file access vào wincc và ngược lại. nhờ bác KHONGBAOGIO giải đáp hộ mình với
.................................................. ................
Sub OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y)
Dim cnn
Dim cmd
Dim rs
Dim strConnectionString
Dim SQL
Dim tg1, tg2
strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Persist Security Info=False;" _
& "Data Source=" & "D:\dulieu" & "\Data.mdb"
SQL = "select * from table1 where ID = 2"
Set cnn = CreateObject("ADODB.Connection")
cnn.ConnectionString = strConnectionString
cnn.Open
Set rs = CreateObject("ADODB.Recordset")
Set cmd = CreateObject("ADODB.Command")
cmd.ActiveConnection = cnn
cmd.CommandText = SQL
Set rs = cmd.Execute
'wincc truy xuat ra access:
GT1 = HMIRuntime.Tags("data1").Read
GT2 = HMIRuntime.Tags("data2").Read
SQL = "Insert Into table1(Field1,Field2) " _
& "Values('" + Trim(GT1) + "'," _
& "'" + Trim(GT2) + "')"
cnn.Execute SQL
'truy nhap tu access vao wincc:
rs.movefirst
tg1 = rs.Fields(3).Value
HMIRuntime.Tags("tag1").Write tg1
tg2 = rs.Fields(4).Value
HMIRuntime.Tags("tag2").Write tg2
Set cmd = Nothing
cnn.Close
Set rs = Nothing
Set cnn = Nothing
End Sub
.................................................. ..................................
mong được hồi âm sớm. Thanks alot !!!
-
Những thành viên đã cảm ơn yuiki vì bài viết hữu ích:
-
03-12-2011, 07:29 #4
Ðề: DataBase Wincc
Bạn xem ví dụ ở đay nè
https://www.automation.siemens.com/m...Id=10311959307
hieplangmoi@gmail.comAutomation Training
Dạy Scada và PLC
https://www.facebook.com/groups/426215507822804/
Email:Hieplangmoi@gmail.com
Hp: 0946313816
"Ở đâu có ý chí ở đó có lối đi"
"Where there is a will, there is a way"
-
06-12-2011, 09:00 #5
Ðề: DataBase Wincc
thank a lot! tài liệu này em đã xem qua rồi, cũng đã thực hiện cú pháp lệnh như VBS108a/ trang 116. chỉ thay khai báo strConnectionString:
.................................................. .....................................
Sub OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y)
'VBS108a
Dim cnn
Dim cmd
Dim rs
Dim strConnectionString
Dim SQL
Dim lngValue
Dim lngCount
Dim GT1, GT2
Dim tg1, tg2
lngValue =100
lngCount=0
strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Persist Security Info=False;" _
& "Data Source=" & "D:\dulieu" & "\Data.mdb"
SQL = "select * from table1 where ID = 2"
Set cnn = CreateObject("ADODB.Connection")
cnn.ConnectionString = strConnectionString
cnn.Open
Set rs = CreateObject("ADODB.Recordset")
Set cmd = CreateObject("ADODB.Command")
cmd.ActiveConnection = cnn
cmd.CommandText = SQL
Set rs = cmd.Execute
lngCount = rs.Fields.Count
If (lngCount>0) Then
rs.movefirst
tg1 = rs.Fields(3).Value
HMIRuntime.Tags("data1").Write tg1
tg2 = rs.Fields(4).Value
HMIRuntime.Tags("data2").Write tg2
Else
HMIRuntime.Tags("data1").Write lngValue
End If
Set cmd = Nothing
cnn.Close
Set rs = Nothing
Set cnn = Nothing
End Sub
.................................................. .................
không biết vì sao không chạy được ???.....phải mò mẩm thôi...
Bác khongbaogio có thể gửi em file wincc kết nối access tham khảo được không? em làm cả tuần ni mà không kết nối được với access. không biết có bị lỗi wincc database hay SQL không nữa. thank bác trước nha.
mail cua em: dinhdung0315@gmail.com
-
06-12-2011, 18:06 #6
Ðề: DataBase Wincc
Bạn mới chỉ nói tài liệu này đã xem qua rồi ( chưa đủ kỹ nếu đủ bạn đã làm được vì tài liệu đã ghi rất rõ và của hãng viết ra cứ theo đó là sẽ làm được nhớ làm theo đúng như vậy chứ đừng có chế code nhé) Bạn mới có thử làm trong vòng một tuần, đây chưa phải là khoảng thời gian dài, có những bài toán mình làm từ ý tưởng tới khi mình làm được mất khoảng thời gian là hơn 2 Năm.
Mình vẫn khuyên bạn nên đọc thiệt kỹ. Tất nhiên không được nữa mình sẽ gửi file cho bạn, Nếu có lỗi SQL thì chắc là bạn không thể khởi động Wincc lên được đâu.
Hieplangmoi@gmail.comAutomation Training
Dạy Scada và PLC
https://www.facebook.com/groups/426215507822804/
Email:Hieplangmoi@gmail.com
Hp: 0946313816
"Ở đâu có ý chí ở đó có lối đi"
"Where there is a will, there is a way"
-
Những thành viên đã cảm ơn khongbaogio vì bài viết hữu ích:
-
09-12-2011, 23:44 #7
Ðề: DataBase Wincc
mình đã ghost lại win, cài lại wincc và chạy ok. hì, thật không biết vì sao khi trước lại không chạy được nữa, chắc có lẽ bản cũ bị lỗi gì đây. thank bác khongbaogio đã tư vấn giúp. thank s.!
-
24-02-2012, 13:17 #8
Ðề: DataBase Wincc
Nếu em muốn làm custom report theo kiểu như vậy thì chỉ có một cách đó là tự tạo Database riêng, Thì tùy theo yêu cầu của hệ thống em có thể ghi dữ liệu từ Wincc ra SQL hoặc là Access sau đó sài VB để truy suất vào làm báo cáo, Nếu làm theo ngày tháng không thì cũng không cần ghi ra SQL làm gì, Sài Online table của Wincc cũng đủ với sài một số Code VB là được để cho bảng Online table đó Cập nhật theo ý mình ví dụ: vào lúc 6h mỗi ngày cập nhật một lần kết hợp với việc lập trình thời gian thực trong PLC nữa là được.
hieplangmoi@gmail.comAutomation Training
Dạy Scada và PLC
https://www.facebook.com/groups/426215507822804/
Email:Hieplangmoi@gmail.com
Hp: 0946313816
"Ở đâu có ý chí ở đó có lối đi"
"Where there is a will, there is a way"
-
01-03-2012, 22:05 #9
Ðề: DataBase Wincc
Có thể cho mình hỏi, wincc xài database sybase 7, mình có file database rồi thì dùng ct j` để mở ?
-
01-03-2012, 22:09 #10
Ðề: DataBase Wincc
thi dùng sybase để mở. Chay ra cửa hàng software mua 1 disk về íntall
Trả lời với tài khoản Facebook
Các Chủ đề tương tự
-
[WINCC] Lỗi khi cài đặt!
Bởi Rock32 trong diễn đàn PHẦN MỀM NGÀNH ĐIỆNTrả lời: 1Bài cuối: 08-03-2022, 18:18 -
Trợ giúp - kết nối winCC với PLC s7-200
Bởi levandinh89 trong diễn đàn SCADA - HMITrả lời: 6Bài cuối: 18-05-2014, 16:40 -
Thảo luận - em bị lỗi wincc nhờ các anh giúp
Bởi star_dream trong diễn đàn SCADA - HMITrả lời: 4Bài cuối: 07-08-2013, 16:07 -
Trợ giúp - Cần pro winCC chỉ giáo
Bởi Rock32 trong diễn đàn SCADA - HMITrả lời: 4Bài cuối: 28-04-2013, 00:28 -
Thảo luận - Convert từ Intouch 7 sang Intouch 10 và từ Wincc 5 sang Wincc 7
Bởi khongbaogio trong diễn đàn SCADA - HMITrả lời: 0Bài cuối: 13-07-2011, 22:50