ABBAC900F学习笔记231:OPC通讯16
标签:
abbac900ffreelanceopcvba |
分类: ABBDCS |
资料正文学习结束了,现在根据附录做练习吧。
ClientHandles(i) = i + 1 '每个项目的客户端句柄不同
ActiveStates(i) = True
ActualHour =
Hour(Now())
ActualMinute =
Minute(Now())
ActualSecond =
Second(Now()) + 2
WaitingTime =
TimeSerial(ActualHour, ActualMinute, ActualSecond)
Application.Wait
WaitingTime
For i = 0 To NrOfItems -
1
Worksheets(1).Cells(1 + 2, i + 1) =
"Server:"
Worksheets(1).Cells(1 + 2, i + 2) =
ServerName
Worksheets(1).Cells(1 + 3, i + 1) =
"Name:"
Worksheets(1).Cells(1 + 3, i + 2) =
ItemObjects(i).ItemID
Worksheets(1).Cells(2 + 3, i + 1) = "Access
Right:"
Worksheets(1).Cells(2 + 3, i + 2) =
ItemObjects(i).AccessRights
Worksheets(1).Cells(3 + 3, i + 1) =
"Value:"
Worksheets(1).Cells(3 + 3, i + 2) =
ItemObjects(i).Value
Worksheets(1).Cells(4 + 3, i + 1) =
"Quality:"
Worksheets(1).Cells(4 + 3, i + 2) =
ItemObjects(i).Quality
Worksheets(1).Cells(5 + 3, i + 1) =
"TimeStamp:"
Worksheets(1).Cells(5 + 3, i + 2) =
ItemObjects(i).Timestamp
Next
从 MS-Excel 和 MS-visual basic 访问 OPC 的示例
1.新建一个ABB Freelance项目文件,插入下面的结构
2.
在这个项目文件夹下新建一个excel文件,文件名字为OPC_freelance2019.xlsx,文件名字不是关键。
3. 启用excel文件的VBA二次开发功能。
打开刚才新建的excel文件,点击菜单文件-选项,弹出对话框,选中左边的“自定义功能区”,右边勾选“开发”复选框,然后点击确定关闭对话框。
excel文件界面的菜单会出现一个开发工具的菜单,点击这个菜单,会看到和开发有关的工具栏。
5. 双击sheet1,在右边“通用”-“声明”写入下面的代码
Option Explicit
Dim Server As IOPCServerDisp '引用服务器对象
Dim ServerName As String '服务器名字
Dim Group As IOPCItemMgtDisp '引用组对象
Dim ServerUpdateRate As Long '更新速率
Dim ServerGroupHandle As Long '将包含服务器生成的组句柄
Dim NrOfItems As Long '本程序OPC项目的数量
Dim ItemIDs() As String 'OPC项名字数组
Dim ActiveStates() As Boolean 'OPC每个项的活动状态数组
Dim ClientHandles() As Long '每个项目的客户端句柄的数组
Dim AccessPaths() As String '每一个项目的访问路径的数组
Dim RequestedDataTypes() As Integer '每一个项目需求数据类型的数组
Dim ItemsErrors As Variant '每一个项目的错误代码
Dim ServerHandles As Variant '包含每一个项目的服务器句柄
Dim ItemObjects As Variant '将包含对每个项目的引用
Sub OPCExmpleMacro()
Dim i, ActualHour, ActualMinute, ActualSecond, WaitingTime
'本地变量
NrOfItems = 1 '如果想读取更多的项目,就修改这个数值
'更新那些数组的daxiao
ReDim ItemIDs(NrOfItems)
ReDim AccessPaths(NrOfItems)
ReDim ClientHandles(NrOfItems)
ReDim AccessPaths(NrOfItems)
ReDim RequestedDataTypes(NrOfItems)
ReDim ActiveStates(NrOfItems)
ReDim ItemObjects(NrOfItems)
'开始配置服务器
ServerName = "Freelance2000OPCServer.24.1"
Set Server = CreateObject(ServerName)
'添加一个组到服务器
Set Group = Server.AddGroup("Group 1", True, 1000, 1, 0,
&H409, ServerGroupHandle, ServerUpdateRate)
'设置项目名字
ItemIDs(0) = "LT1001"
'设置客户端句柄,激活项目状态
For i = 0 To NrOfItems - 1
Next
'添加项目到组
Group.AddItems NrOfItems, ItemIDs, ActiveStates,
ClientHandles, ServerHandles, ItemsErrors, ItemObjects,
AccessPaths, RequestedDataTypes
'没有按下Ctrl+Break,那么每2秒更新一次数据
Worksheets(1).Visible = True
While True
Wend
End Sub
保存一下,如果提示宏安全啥的
运行VBA程序,会提示是否加载宏
点击运行按钮,回到excel主界面,如果在模拟器把freelance运行起来,加载OPC网关,把OPC
server运行起来。修改LT1001数值,可以看到excel文件刷新后,数值也跟着变化了
要注意freelance中资源配置要和freelance
setting里面一致,要从ABB程序组启动OPC服务器
这个是简单的读取freelance
OPC服务器数据的例子,这是在同一台计算机上运行,读取一个数据,没有读取别的信息。是用血代码的方式工作量较大,维护起来也有要求。

加载中…