• Webdien.com - Cầu nối dân điện


  • Trang 1 của 3 123 CuốiCuối
    Kết quả 1 đến 10 của 22

    Chủ đề: DataBase Wincc

    1. #1
      Tham gia
      16-06-2008
      Bài viết
      135
      Cảm ơn
      5
      Được cảm ơn 137 lần, trong 79 bài

      Mặc định 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:

      "Ở đâu có ý chí ở đó có lối đi"
      "Where there is a will, there is a way"

    2. The Following 3 Users Say Thank You to khongbaogio For This Useful Post:


    3. #2
      Tham gia
      16-06-2008
      Bài viết
      135
      Cảm ơn
      5
      Được cảm ơn 137 lần, trong 79 bài

      Mặc định Ðề: 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.com
      "Ở đâu có ý chí ở đó có lối đi"
      "Where there is a will, there is a way"

    4. Những thành viên đã cảm ơn khongbaogio vì bài viết hữu ích:


    5. #3
      Tham gia
      04-12-2009
      Bài viết
      4
      Cảm ơn
      2
      Thanked 1 Time in 1 Post

      Mặc định Ðề: 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 !!!

    6. Những thành viên đã cảm ơn yuiki vì bài viết hữu ích:


    7. #4
      Tham gia
      16-06-2008
      Bài viết
      135
      Cảm ơn
      5
      Được cảm ơn 137 lần, trong 79 bài

      Mặc định Ðề: DataBase Wincc

      "Ở đâu có ý chí ở đó có lối đi"
      "Where there is a will, there is a way"

    8. #5
      Tham gia
      04-12-2009
      Bài viết
      4
      Cảm ơn
      2
      Thanked 1 Time in 1 Post

      Mặc định Ðề: 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

    9. #6
      Tham gia
      16-06-2008
      Bài viết
      135
      Cảm ơn
      5
      Được cảm ơn 137 lần, trong 79 bài

      Mặc định Ðề: 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.com
      "Ở đâu có ý chí ở đó có lối đi"
      "Where there is a will, there is a way"

    10. Những thành viên đã cảm ơn khongbaogio vì bài viết hữu ích:


    11. #7
      Tham gia
      04-12-2009
      Bài viết
      4
      Cảm ơn
      2
      Thanked 1 Time in 1 Post

      Mặc định Ðề: 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.!

    12. #8
      Tham gia
      21-09-2011
      Bài viết
      39
      Cảm ơn
      6
      Được cảm ơn 5 lần, trong 4 bài

      Mặc định Ðề: DataBase Wincc

      các anh chị có thể cho em hỏi một chút không ạ.em đang cần làm một cái báo cáo về sản lượng của các cân băng nhiệm vụ của em là phải làm báo cáo đó theo ca theo ngày và theo tháng...và có thể xem lại báo cáo tai một thời điểm trước đó bất kỳ. các anh chị co thể chỉ dẫn cho em đẻ em có thể làm nó không ạ..mong các anh chị giúp đỡ em xin cảm ơn trước.

    13. #9
      Tham gia
      16-06-2008
      Bài viết
      135
      Cảm ơn
      5
      Được cảm ơn 137 lần, trong 79 bài

      Mặc định Ðề: 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.com
      "Ở đâu có ý chí ở đó có lối đi"
      "Where there is a will, there is a way"

    14. #10
      Tham gia
      12-12-2011
      Bài viết
      6
      Cảm ơn
      6
      Được cảm ơn 0 lần, trong 0 bài

      Mặc định Ðề: 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ở ?

    Trang 1 của 3 123 CuốiCuối

    Trả lời với tài khoản Facebook

    Các Chủ đề tương tự

    1. Trợ giúp - kết nối winCC với PLC s7-200
      Bởi levandinh89 trong diễn đàn SCADA - HMI
      Trả lời: 8
      Bài cuối: 18-05-2014, 16:40
    2. Thảo luận - em bị lỗi wincc nhờ các anh giúp
      Bởi star_dream trong diễn đàn SCADA - HMI
      Trả lời: 4
      Bài cuối: 07-08-2013, 16:07
    3. Trợ giúp - Cần pro winCC chỉ giáo
      Bởi Rock32 trong diễn đàn SCADA - HMI
      Trả lời: 4
      Bài cuối: 28-04-2013, 00:28
    4. [WINCC] Lỗi khi cài đặt!
      Bởi Rock32 trong diễn đàn PHẦN MỀM NGÀNH ĐIỆN
      Trả lời: 1
      Bài cuối: 21-04-2013, 11:00
    5. 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 - HMI
      Trả lời: 0
      Bài cuối: 13-07-2011, 22:50

    Tag của Chủ đề này