您当前的位置:五五电子网电子知识plc技术PLC入门OPC Client 动态连接库开发和应用 正文
OPC Client 动态连接库开发和应用

OPC Client 动态连接库开发和应用

点击数:7224 次   录入时间:03-04 11:59:32   整理:http://www.55dianzi.com   PLC入门
        Trace "<GetData Cancelled,Because configuration has not been set"
        Exit Function
    End If
    Dim ItemClientHandle As Long
    ItemClientHandle = AllItemsInfo.GetItem_ClientHandle(ItemName)
    GetData = ItemData(ItemClientHandle)
    Trace "<GetData OK: ItemData= " & GetData
End Function

'写入单个变量数据
Public Function WriteData(ItemName As String, ItemWriteData As Variant)
    Trace ">WriteData to Wincc start..."
    Trace ">ItemName: " & ItemName & " Value: " & ItemWriteData
    If Dll_is_Initial = False Then
        Trace "<WriteData Cancelled,Because Dll_Initial has not been called"
        Exit Function
    End If
    If ServerConnected = False Then
        Trace "<WriteData Cancelled,Because ConnectServer has not been called"
        Exit Function
    End If
    If Configuration_is_Set = False Then
        Trace "<WriteData Cancelled,Because configuration has not been set"
        Exit Function
    End If
    On Error GoTo ErrorHandler
    Set GroupObj = GroupCollection.GetOPCGroup(AllItemsInfo.GetItem_Group(ItemName))
    Set ItemObj = GroupObj.OPCItems.GetOPCItem(AllItemsInfo.GetItem_ServerHandle(ItemName))
    ItemObj.Write ItemWriteData
    Trace "<WriteData to Wincc OK"
    Set GroupObj = Nothing
    Set ItemObj = Nothing
    Exit Function
ErrorHandler:
    Trace "<Write Data to Wincc Error,Please make sure Item's Name and Write-data is correct"
    Set GroupObj = Nothing
    Set ItemObj = Nothing
End Function
'列举某个变量的属性
Private Function GetItemProperty(ItemID As String)
    Dim Count As Long, i As Long
    Dim PropertyIDs() As Long
    Dim DeSCRJPTions() As String
    Dim DataTypes() As Integer
    Dim PropertyValues() As Variant
    Dim Errors() As Long
    ServerObj.QueryAvailableProperties ItemID, Count, PropertyIDs, DeSCRJPTions, DataTypes
    ServerObj.GetItemProperties ItemID, Count, PropertyIDs, PropertyValues, Errors
    Trace "=====Get ItemID Property Start======"
        For i = 1 To Count
            Trace "=" & PropertyIDs(i) & "  " & DeSCRJPTions(i) & "  " & PropertyValues(i)
        Next
    Trace "=====Get ItemID Property End======"
End Function
'获取某个变量的数据类型
Private Function GetItemDataType(ItemID As String) As Long
    Dim Count As Long
    Dim PropertyIDs(1) As Long
    Dim PropertyValues() As Variant
    Dim Errors() As Long
    Count = 1
    PropertyIDs(1) = 1
    ServerObj.GetItemProperties ItemID, Count, PropertyIDs, PropertyValues, Errors
    GetItemDataType = PropertyValues(1)
End Function
'服务器关闭
Private Sub ServerObj_ServerShutDown(ByVal Reason As String)
    Trace "! Dll is shutdown,Following is the Reason:"
    Trace "! " & Reason
    ServerObj.Disconnect
    Configuration_is_Set = False
    Dll_is_Initial = False
    ServerConnected = False
End Sub
'获取服务器连接状态
Public Property Get Server_Connected() As Boolean
    Server_Connected = Configuration_is_Set
End Property

ItemInfo:
Option Explicit

Public ItemName As String
Public GroupName As String
Public ItemServerHandle As Long
Public ItemClientHandle As Long

ItemsInfo:
Option Explicit

Dim Collection_ItemsInfo As New Collection        ' 定义OPCItem 信息

Public Function ItemInfo_Add(Name As String, Group As String, ClientHandle As Long, ServerHandle As Long)
    Dim Info As New ItemInfo
    With Info
        .ItemName = Name
        .GroupName = Group
        .ItemClientHandle = ClientHandle
        .ItemServerHandle = ServerHandle
    End With
    Collection_ItemsInfo.Add Info
End Function

'获取Item属于的组名
Public Function GetItem_Group(ItemID As String) As String
    Dim Info As ItemInfo
    For Each Info In Collection_ItemsInfo
        If Info.ItemName = ItemID Then
            GetItem_Group = Info.GroupName
            Exit Function
        End If
    Next
End Function

'获取Item的ServerHandle
Public Function GetItem_ServerHandle(ItemID As String) As Long
    Dim Info As ItemInfo
    For Each Info In Collection_ItemsInfo
        If Info.ItemName = ItemID Then
            GetItem_ServerHandle = Info.ItemServerHandle
            Exit Function
        End If
    Next
End Function

'获取Item的ClientHandle
Public Function GetItem_ClientHandle(ItemID As String)
    Dim Info As ItemInfo
    For Each Info In Collection_ItemsInfo
        If Info.ItemName = ItemID Then
            GetItem_ClientHandle = Info.ItemClientHandle
            Exit Function
        End If
    Next
End Function

'获取Item的名称
Public Function GetItem_Name(ItemClientHandle As Long)
    Dim Info As ItemInfo
    For Each Info In Collection_ItemsInfo
        If Info.ItemClientHandle = ItemClientHandle Then
            GetItem_Name = Info.ItemName
            Exit Function
        End If
    Next
End Function

将以上代码输入VB并编译生成OPC_DLL.dll文件,完成后注册。OPC调用函数请参阅opcdataaccessautov2-02_76文件。

四、应用介绍
1、 新建ini配置文件(保存于系统目录下),如wincc.ini。注意组中定义的变量名称必须存在于OPCServer中!右边//后的内容仅为注释,不应在文件中存在!内容如下:
[TRACE]
TraceOn=1       //=1:打开调试开关
TraceFile="D:\OPCTrace.log"     //输出的调试文件

上一页  [1] [2] [3] [4] [5]  下一页


本文关键字:动态  开发  PLC入门plc技术 - PLC入门