Đăng Ký
Trang 2 của 3 Đầu tiênĐầu tiên 123 CuốiCuối
Kết quả 11 đến 20 của 30

Hybrid View

  1. #1
    Thành viên cấp 2
    Ngày tham gia
    May 2012
    Bài viết
    50
    Thanks
    8
    7 lượt trong 7 bài viết
    Trích dẫn Gửi bởi anhnamhm Xem bài viết
    Bạn có thể vao trang siemens. Hoặc vào phần của Wincc để có nhưng code ví dụ của nó. Sau đó phát triển thêm.
    Mình vẫn chưa hiểu " viết dữ liệu của bạn" bạn muốn làm gì
    Viết nhận và gửi dữ liệu giữa wincc và sql đó ạ.
    Nguyễn Văn Phú
    Sinh Viên Đại Học Công Nghiệp TPHCM
    email: Hidden Content

  2. #2
    Thành viên cấp 3
    Ngày tham gia
    Dec 2014
    Đang ở
    Hà Nội
    Bài viết
    103
    Thanks
    3
    26 lượt trong 20 bài viết
    Xin chào các anh chị trong diễn đàn. Đây là lần đầu tiên em tham gia diễn đàn nên còn thiếu nhiều kinh nghiệm, mong các anh chị chỉ giáo. Hiện tại, em đang làm báo cáo: truy xuất dữ liệu từ SQL sử dụng VBS. Em đã lưu các dữ liệu sang SQL nhưng hiện tại việc truy xuất lại từ SQL sang WinCC để hiển thị lên ListViewCtrl là không thể, hay nói cách khác là em không làm được. Anh chị nào có tâm huyết hay hứng thú với vấn đề này thì chỉ giáo em với ạ. Em sẽ đính kèm code ở phía dưới ạ. Cảm ơn anh chị đã đọc, chúc diễn đàn phát triển.
    Sub OnClick(Byval Item)
    Dim objCn
    Dim objR
    Dim objCm
    Dim strC
    Dim strSQL
    Dim lngCount
    Dim list
    Dim ssss,aaaa
    Dim s,a
    Dim rs
    Dim row
    Dim li
    Dim oItem
    Dim objCommand

    Set ssss = HMIRuntime.Tags("ssss") 'Thiet lap bien trong WinCC
    s=ssss.Read 'Doc bien tu WinCC
    Set aaaa = HMIRuntime.Tags("aaaa")
    a=aaaa.Read
    Set list=ScreenItems("Control2") 'Gan bien list nay bang Control2, Control2 chinh la ListGirlView
    Set Cn=CreateObject("ADODB.Connection")
    cnStr="Provider=MSDASQL;DSN=CC_HbZz_cl_11_01_13_17 _18_14;UID=;PWD=;"
    strSQL="biaobiao" 'Bang chua du lieu gia tri da duoc luu
    Cn.ConnectionString=cnStr
    Cn.Open
    Set objCommand = CreateObject("ADODB.Command")
    With objCommand
    .ActiveConnection = Cn
    .CommandText = cnStr
    End With
    objCommand.Execute
    Set objCommand = Nothing
    '----------------------------------------------------------------------------
    Set rs=CreateObject("ADODB.Recordset")
    rs.open strSQL,Cn,3,3
    row=0
    li=1
    Do While Not rs.EOF
    Row=Row+1
    If CStr(rs.Fields(11).Value)>= CStr(s) And CStr(rs.Fields(11).Value)<=CStr(a) Then
    Set oItem=list.ListItems.Add()
    oItem.Text=Left(CStr(li),50)
    oItem.SubItems(1)=CStr(rs.Fields(1).Value)
    oItem.SubItems(2)=CStr(rs.Fields(2).Value)
    oItem.SubItems(3)=CStr(rs.Fields(3).Value)
    oItem.SubItems(4)=CStr(rs.Fields(4).Value)
    oItem.SubItems(5)=CStr(rs.Fields(5).Value)
    oItem.SubItems(6)=CStr(rs.Fields(6).Value)
    oItem.SubItems(7)=CStr(rs.Fields(7).Value)
    oItem.SubItems(8)=CStr(rs.Fields(8).Value)
    oItem.SubItems(9)=CStr(rs.Fields(9).Value)
    oItem.SubItems(10)=CStr(rs.Fields(10).Value)
    oItem.SubItems(11)=CStr(rs.Fields(11).Value)
    oItem.SubItems(12)=CStr(rs.Fields(12).Value)
    End If
    li=li+1
    Row=Row+1
    rs.MoveNext
    Loop
    MsgBox "Finish"
    Cn.Close
    End Sub
    '-----------------------------------------------------
    'Em muon lay du lieu tu bang "biaobiao" nay de hien thi len ListViewCtrl thi sua o cho nao ha anh?
    'Day la chuong trinh cua Trung Quoc viet tren phan mem WinCC, phan bao cao Report.
    Lần sửa cuối bởi kochodoi, ngày 01-22-2015 lúc 03:20 PM.

  3. Bài viết của "kochodoi" đã được cám ơn bởi các thành viên:


  4. #3
    Thành viên cấp 3
    Ngày tham gia
    Dec 2014
    Đang ở
    Hà Nội
    Bài viết
    103
    Thanks
    3
    26 lượt trong 20 bài viết
    Mình có một thắc mắc, xin được giải đáp:
    Mình đã tạo ra CSDL trên SQL rồi và lưu giá trị theo thời gian lên đó, nhưng mình không biết là lưu giới hạn dung lượng bao nhiêu, hay là unlimit. Và có cách nào để đẩy dữ liệu khi nó đầy lên không?
    Ví dụ mình đặt giới hạn của nó là 20Gb thì khi đến 20Gb thì nó sẽ xoá dữ liệu cũ để lấy chỗ lưu dữ liệu mới vào.
    Mong mọi người cho ý kiến.

  5. #4
    Thành viên cấp 1
    Ngày tham gia
    Feb 2012
    Bài viết
    46
    Thanks
    1
    34 lượt trong 10 bài viết
    What's DataAccessHelper?
    Giúp bạn thực hiện việc thao tác với CSDL bằng ngôn ngữ VBScript một cách nhanh chóng, hiệu quả.
    Tránh việc viết đi viết lại nhiều lần câu lệnh tạo đối tượng kết nối, đối tượng lệnh(Command), đối tượng chứa tập kết quả trả về từ một câu lệnh truy vấn Select (Recordset).

    1. Trong DataAccessHelper có Config.bmo chứa thông tin cấu hình kết nối CSDL và thông tin về tác giả(Thư viện)

    Code:
    ' Thong tin ve tac gia.
    Public Const Author = "HOANG VAN LUU"  ' Ten tac gia
    Public Const Mobile = "0934353510"  ' So dien thoai
    Public Const Email = "[email protected]" ' Hop thu dien tu.
    Public Const Profile = "ISS" ' Profile
    
    ' Thong tin Server.
    Private	Const SERVER_NAME  = "HOANGLUU-PC\WINCC" ' Ten Server
    Private	Const DATABASE_NAME = "ODBC_SQL_SERVER_ADVANCE" ' Ten CSDL.
    Private	Const USER_NAME = "itda" ' Ten nguoi su dung.
    Private	Const PASSWORD = "123456" ' Mat khau nguoi su dung.
    
    ' Ham doc chuoi ket noi Csdl.
    Function GetSQLConnectionString(Byref SQLConnectionString)
    	
    	' Ket noi Csdl thong qua OLEDB.
    	SQLConnectionString = "Provider=SQLOLEDB.1; Data Source ="& SERVER_NAME &"; uid=" & USER_NAME & "; pwd=" & PASSWORD & "; Initial Catalog = " & DATABASE_NAME & ";" 
    	
    	' Ket noi Csdl thong qua DNS.
    	'SQLConnectionString = "Provider=MSDASQL;DSN=ODBC_SQL_SERVER_ADVANCE;UID=;PWD=;" 
    							
    End Function
    2. Trong Management có EmployeeManagement với các Function AddEmployee, UpdateEmployee, DeleteEmployee, SelectEmployees(Sử dụng cho việc test thư viện DataAccessHelper)

    Chú ý các Tags:
    EmpId : kiểu Int
    EmpName : kiểu String
    EmpAge: kiểu Int.


    Code:
    ' Khai bao bien va hang so.
    Const TableName = "tblEmployee"
    Const EmpId = "EmpId"
    Const EmpName = "EmpName"
    Const EmpAge = "EmpAge"
    	
    ' Them moi nhan vien.
    Public Function AddEmployee()		
    	Dim columnNames ' Ten cot trong csdl.
    	Dim values	    ' Gia tri ban can insert vao csdl.
    	
    	' Gan gia tri cho mang columnNames, values.
    	columnNames = Array(EmpId, EmpName, EmpAge)
    	values = Array(HMIRuntime.Tags(EmpId).Read, HMIRuntime.Tags(EmpName).Read, HMIRuntime.Tags(EmpAge).Read)			
    	
    	' Goi ham insert vao csdl.
    	Call Insert(TableName, columnNames, values)
    End Function
    
    ' Cap nhat thong tin nhan vien.
    Public Function UpdateEmployee()
    	Dim columnNames ' Ten cot trong csdl.
    	Dim values	    ' Gia tri ban can insert vao csdl.
    	Dim keyColumns	' Cot dieu kien.
    	Dim keyValues	' Cot gia tri dieu kien.
    		
    	' Gan gia tri cho mang columnNames, values, keyColumns va keyValues.
    	columnNames = Array(EmpName, EmpAge)
    	values = Array(HMIRuntime.Tags(EmpName).Read, HMIRuntime.Tags(EmpAge).Read)		
    	
    	keyColumns = Array(EmpId)	
    	keyValues = Array(HMIRuntime.Tags(EmpId).Read)
    	
    	' Goi ham update vao csdl.
    	Call Update(TableName, columnNames, values, keyColumns, keyValues)
    End Function
    
    ' Xoa nhan vien.
    Public Function DeleteEmployee()
    	Dim keyColumns	' Cot dieu kien.
    	Dim keyValues	' Cot gia tri dieu kien.
    	
    	keyColumns = Array(EmpId)	
    	keyValues = Array(HMIRuntime.Tags(EmpId).Read)	
    	
    	' Gan gia tri cho mang keyColumns va keyValues.
    	Call Delete(TableName, keyColumns, keyValues)
    End Function
    
    ' Doc danh sach nhan vien.
    Public Function SelectEmployees()
    	Dim strSQLParam 	' Chuoi truy van csdl.
    	Dim objRecordset	' Tap ket qua sau khi thuc hien truy van.
    	
    	On Error Resume Next
    	strSQLParam = "SELECT * FROM " & TableName		
    	' Goi Ham Selects tu csdl.
    	Call Selects(strSQLParam, objRecordset)
    	Do While objRecordset.EOF = False
    		HMIRuntime.Trace objRecordset.Fields("EmpId").Value & ": " & objRecordset.Fields("EmpName").Value & ": " & objRecordset.Fields("EmpAge").Value &vbCrLf
    		objRecordset.MoveNext			
    	Loop
    		
    	If Err.Number <> 0 Then
    		MsgBox  CStr(Err.Number) & Err.Description, vbOKOnly, "Thong bao"
    		Err.Clear	
    	End If		
    	
    	Call CloseConnection() ' Goi ham dong ket noi voi csdl.
    
    End Function
    3. Tải ví dụ mẫu: http://www.mediafire.com/?79oo0s0lxfug9r7
    Tải xong giả nén, mở file "ODBC_SQL_SERVER_ADVANCE_QUERY" trong thư mục vừa giả nén bằng SQL Server 2005/2008/2012 rồi nhần F5 hoặc nhấn Execute trên thanh công cụ của IDE SQL Server để tạo DataBase và bảng CSDL để test.
    Mở Project "SQL_SERVER_UTILS" trong thư mục vừa giả nến để chạy test thử thao tác với CSDL SQL Server là OK.

    4. Hướng dẫn sử dụng thư viện:
    1. Tạo 1 Project từ IDE của WINCC.
    2. Tải 2 files DataAccessHelper.rar và Management.rar về rồi giả nén.
    3. Copy 2 thư mục vừa giả nén vào ScriptLib bên trong thư mục project bạn vừa tạo là có thể sử dụng được.
    File đính kèm File đính kèm
    Lần sửa cuối bởi luuhoang, ngày 10-28-2013 lúc 11:08 PM.

  6. The Following 4 Users Say Thank You to luuhoang For This Useful Post:


  7. #5
    Thành viên Mới
    Ngày tham gia
    May 2011
    Bài viết
    8
    Thanks
    0
    Thanked 1 Time in 1 Post
    có bạn nào sử dụng vb, hoặc visua c# lập trình opc liên kết với plc. mình có thể dùng cách đó để đọc và ghi các biến trong plc và thao tác với cơ sở dữ liệu sql hoặc access cũng rất dễ dàng. Bạn nào đang làm cái này rồi cho mình trao đổi với nhé

  8. Bài viết của "vodanh3011" đã được cám ơn bởi các thành viên:


  9. #6
    Thành viên cấp 1
    Ngày tham gia
    Apr 2011
    Bài viết
    18
    Thanks
    0
    3 lượt trong 3 bài viết
    Mình cũng đang viết chương trình giám sát cho vb thông qua OPC để giám sát và điều khiển PLC. mô phỏng thì cũng ok rồi. có chạy thực tế với PLC S7200 Với PCacess thấy cũng ổn định. Bạn đã làm thực tế với nó bao giờ chưa. Còn việt đọc dữ liệu từ Wincc thì có lệnh VB rất đơn giản thôi. Khi muốn ghi dữ liệu ở 1 Tag của Wincc vào Database mình tạo ra và sau đó xử lý ở trên đó cũng được. Lúc này Wincc chính là 1 OPC và chỉ việc đọc và hiển thị dữ liệu mà thôi. Code để mình tìm lại sau

  10. #7
    Thành viên Mới
    Ngày tham gia
    Aug 2011
    Bài viết
    1
    Thanks
    0
    0 lượt trong 0 bài viết
    Chao ae.hien tai trong nha may minh co he thong dieu khien PCS7. Bay gio minh muon lay du lieu qua trinh trong wincc(tich hop trong PCS7) ra excel thi minh lap trinh VBS trong global script va tao database trong sql 2000.Nhung khi tao nut an (button) trong wincc de goi file excel ra thi trong file excel nay khong co gia tri qua trinh. Mong ae cao thu nao da lam ve cai nay roi to giup minh voi. thanks

  11. #8
    Thành viên cấp 1
    Ngày tham gia
    Feb 2012
    Bài viết
    35
    Thanks
    6
    8 lượt trong 7 bài viết
    http://www.mediafire.com/download/66...arm+Export.xls
    Đây là file excel OLE-DB , trong file này đã có code lấy dữ liệu từ database, và giao diện. Các bác có thể xem và nghiên cứu code @@.

  12. Bài viết của "yami1973" đã được cám ơn bởi các thành viên:


  13. #9
    Thành viên cấp 3
    Ngày tham gia
    Sep 2012
    Bài viết
    254
    Thanks
    21
    30 lượt trong 30 bài viết
    Trích dẫn Gửi bởi yami1973 Xem bài viết
    http://www.mediafire.com/download/66...arm+Export.xls
    Đây là file excel OLE-DB , trong file này đã có code lấy dữ liệu từ database, và giao diện. Các bác có thể xem và nghiên cứu code @@.
    Oh cái này Giống cái của luuhoang

  14. #10
    Thành viên cấp 1
    Ngày tham gia
    Feb 2012
    Bài viết
    35
    Thanks
    6
    8 lượt trong 7 bài viết
    @@ copyright ?> siemens forums

Trang 2 của 3 Đầu tiênĐầu tiên 123 CuốiCuối

Đánh dấu

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •  
Back to Top