http://plcvietnam.com.vn/forum/showt...C3%A0-MS-Excel
Bạn tham khảo thêm tại đấy, đã có chủ đề cụ thể.
Thân.
Lần sửa cuối bởi tran_hieu0983, ngày 01-03-2013 lúc 09:16 PM.
Vinh - 0935 501 812
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
Chào cả nhà,
thiquocvinh nói hoàn toàn đúng.
Cả cái Alarm của ncrazy tiên sinh cũng add được luôn. Việc này hpecom đã làm năm 2007 trên WinCC V6, nhưng lâu quá ko biết đoạn code thất lạc nơi nào rồi, tìm hoài không thấy. Nhưng chắc chắn phần Alarm là Add được. Riêng phần Trend tại hạ chưa hiểu các vị huynh đệ định Add kiểu gì? Nếu thực sự nó có lợi ích thì chúng ta cùng chung tay làm.
Trân trọng,
Thiết kế hệ thống điều khiển
PLC - HMI - SCADA
YN: pvn_nhph
hp: 090 858 9797
Đánh dấu