Chào bạn tu dong hoa,
Mình nói lại:
WinCC có VBA, trong VBA bạn khai báo kết nối với Excell để lấy tên và kiểu dữ liệu của tag
Lấy được tên và kiểu dữ liệu rồi thì dùng đối tượng HMIGO để tạo tag.
Mình viết một VD đầy đủ:
Private Sub TagCreate(pTagName As String, pTagType As String, pPLC_Addr As String, pGroupName As String, pConnection As String, Optional pStartVal As Variant)
Dim mHMIGO As New HMIGO
Select Case UCase(Trim(pTagType))
Case "BOOL":
mHMIGO.CreateTag pTagName, TAG_BINARY_TAG, pConnection, pPLC_Addr, pGroupName
Case "BYTE":
mHMIGO.CreateTag pTagName, TAG_UNSIGNED_8BIT_VALUE, pConnection, pPLC_Addr, pGroupName
Case "INT":
mHMIGO.CreateTag pTagName, TAG_SIGNED_16BIT_VALUE, pConnection, pPLC_Addr, pGroupName
Case "REAL":
mHMIGO.CreateTag pTagName, TAG_FLOATINGPOINT_NUMBER_32BIT_IEEE_754, pConnection, pPLC_Addr, pGroupName
Case "TEXT":
mHMIGO.CreateTag pTagName, TAG_TEXT_TAG_16BIT_CHARACTER_SET, pConnection, pPLC_Addr, pGroupName
Case Else
End Select
If Not IsMissing(pStartVal) Then
mHMIGO.TagStart = pStartVal
End If
End Sub
Thân,
Thiết kế hệ thống điều khiển
PLC - HMI - SCADA
YN: pvn_nhph
hp: 090 858 9797
Chào anh hpecom,
Theo form mẫu Excel em để đầu bài thì lúc trước có tham khảo được một số ví dụ và viết được một đoạn nhỏ - do kiến thức còn yếu nên viết chưa được hay lắm nhưng cũng chạy tạm được.
Em tạo 1 CommandButton và viết code trên đó. Em thấy trong MsVB này có rất nhiều thư viên chuyên dụng của WinCC, nhưng cũng không thể tìm được hết - vì nhiều lý do.
Private Sub CommandButton1_Click()
thongbao = MsgBox("Do you want to create tags?", vbYesNo)
'co muon tao tag hay khong?
If thongbao = vbYes Then
'excel
Dim objExcelApp
Dim TagName
Set objExcelApp = CreateObject("Excel.Application")
objExcelApp.Visible = True
objExcelApp.Workbooks.Open "D:\Nghien cuu\VB_1\11.xlsx"
'Lay TagName tu excel
TagName = objExcelApp.Cells(2, 2).value
'Lay TagType tu excel
TagType = objExcelApp.Cells(2, 3).value
objExcelApp.ActiveWorkbook.Save
Set objExcelApp = Nothing
'tag
Dim objHMIGO As HMIGO
Set objHMIGO = New HMIGO
'lay tagtype tu excel
If TagType = "TAG_BINARY_TAG" Then TagType = TAG_BINARY_TAG
If TagType = "TAG_SIGNED_8BIT_VALUE" Then TagType = TAG_SIGNED_8BIT_VALUE
If TagType = "TAG_UNSIGNED_8BIT_VALUE" Then TagType = TAG_UNSIGNED_8BIT_VALUE
If TagType = "TAG_SIGNED_16BIT_VALUE" Then TagType = TAG_SIGNED_16BIT_VALUE
If TagType = "TAG_UNSIGNED_16BIT_VALUE" Then TagType = TAG_UNSIGNED_16BIT_VALUE
If TagType = "TAG_SIGNED_32BIT_VALUE" Then TagType = TAG_SIGNED_32BIT_VALUE
If TagType = "TAG_UNSIGNED_32BIT_VALUE" Then TagType = TAG_UNSIGNED_32BIT_VALUE
If TagType = "TAG_FLOATINGPOINT_NUMBER_32BIT_IEEE_754" Then TagType = TAG_FLOATINGPOINT_NUMBER_32BIT_IEEE_754
If TagType = "TAG_FLOATINGPOINT_NUMBER_64BIT_IEEE_754" Then TagType = TAG_FLOATINGPOINT_NUMBER_64BIT_IEEE_754
If TagType = "TAG_TEXT_TAG_8BIT_CHARACTER_SET" Then TagType = TAG_TEXT_TAG_8BIT_CHARACTER_SET
If TagType = "TAG_TEXT_TAG_16BIT_CHARACTER_SET" Then TagType = TAG_TEXT_TAG_16BIT_CHARACTER_SET
If TagType = "TAG_RAW_DATA_TYPE" Then TagType = TAG_TEXT_REFERENCE
' cau truc tao tag
objHMIGO.CreateTag TagName, TagType
' thong bao da tao tag
MsgBox "Tag " & TagName & " is created "
Set objHMIGO = Nothing
Else: MsgBox "OK, Noproblem !!!"
End If
End Sub
Đoạn code trên mới chỉ tạo được từng tag một, và sẽ báo lỗi khi tên Tag bị trùng, Tóm lại đoạn code chưa hoàn thiện.
Vinh - 0935 501 812
-wincc có smarttool dùng cho chuyện này, lúc bạn cài wincc để ý bạn sẽ thấy, thường nó nằm trong C:\Program Files\SIEMENS\WINCC\SmartTools\VarExpImp.
-Cách các bạn phát triển rất tôt nhưng trong 1 số trường hợp lại không dùng được Vd, Tag struct,....
-Ngoài ra wincc còn có wincc ODK phải nói là cực good.
@tiendungkct: Đề nghị Dũng trình bày phương pháp dùng SmartTools và phương pháp dùng ODK cho mọi người cùng mở rộng kiến thức.
@thiquocvinh: Bạn đặt các dòng code vào 1 vòng lặp, trong đó có biến mRow và sửa code thành
TagName = objExcelApp.Cells(mRow, 2).value
'Lay TagType tu excel
TagType = objExcelApp.Cells(mRow, 3).value
Thiết kế hệ thống điều khiển
PLC - HMI - SCADA
YN: pvn_nhph
hp: 090 858 9797
Xin chào,
Thật ra, ý tưởng này là mình được biết từ anh Dũng. Và nay cũng gặp phải trường hợp này nên muốn phát triển ứng dụng ra.
@hpecom: Em sẽ thử sau và đưa ra kết quả.
Thanks các anh.
Vinh - 0935 501 812
^_^ đúng là số lượng tag lớn thì làm mệt thật nhưng trong wincc mệt nhất là làm alarm, và trend đó, add alarm và add trend mệt xỉu luôn, hình như có công cụ làm cái này trong wincc thì phải.
còn viết code tạo tag thì không hợp lý lắm vì tag chỉ add 1 lần thôi, sau đó không add nữa nên hiệu quả sử dụng so với công sức bỏ ra không đáng đâu, sài cái smartool hợp lý hơn
HỌC, HỌC NỮA, HỌC MÃI,HỌC HẾT LỚP BẢY THÌ NGHỈ
Hidden Content
Chào anh,
Mình nghĩ hiệu quả đấy chứ. Code là cố định, đâu phải ta chỉ xài 1 lần, còn nhiều dự án khác nữa chứ.
Mục đích của mình đưa ra vấn đề tạo tag này là muốn mở rộng ra tiếp vấn đề gán tag.
Ví dụ tạo 1k tag cho 1k đèn báo => gán 1k tag vào 1k đèn báo đó.
Không biết là việc này có tool hay không (?). Nhưng mình muốn phát triển mạnh về code để sau này có thể mở rộng thêm nhiều nhiều việc khác.
Thân
Vinh - 0935 501 812
Đánh dấu