VB实现PLC与上位机通信
谁有PLC与上位机通信的VisualBasic程序代码(PLC型号不定)?『满意的话追加50分』...
谁有PLC与上位机通信的Visual Basic程序代码(PLC型号不定)?『满意的话追加50分』
展开
4个回答
展开全部
可利用OPC服务器来完成,比较方便。可适用于各类PLC。
下面以西门子PLC为例说下实现方法:
一、通过STEP7软件建立一个新项目OPC,在项目中添加SIMATIC 300站和一个PC 站,其中PLC站中第四个槽安装的CP343模块。PC站的第一个槽 为OPC SERVER ,第三个槽为 IE GENERAL,然后在NETPRO下配置PLC和PC站的网络连接:(注意:是在PC站上新建的网络连接,连接类型选的S7连接)
二、通过station configurator软件 配置本机的PC站(要和STEP7中配置的相同),然后把PLC和PC站都下载下去(注意:下载PC站的时候要把S7ONLINE (STEP7)--->;PC internal(local))。
三、打开OPC Scout,(Start>;SIMATIC>;SIMATICNet>;OPC Scout), 双击“OPC
SimaticNet”在随之弹出的“ADD Group”对话框中输入组名,本例命名为“OPC”。
点击OK 确认 ;
;双击已添加的连接组(OPC),即弹出“OPC Navigator”对话框,此窗口中显示
所有的连接协议。双击“S7”,在PC Station 组态NetPro 中所建的连接名会被显示(S7
connection_1)。双击此连接,即可出现有可能被访问的对象树(objects tree),在PLC
CPU 中已存在的DB 块也会出现
以上完成的OPC SERVER部分的配置。
四、用VB编写了OPC客户端应用程序。主要程序代码如下:
在VB中引在VB中还要引用 siemens opc daautomation 2.0
(1) 连接OPC服务器
Dim WithEvents MyOPCServer As OPCServer ‘定义服务器对象变量MyOPCServer
Dim WithEvents MyOPCGroup As OPCGroup ‘定义OPC组对象变量MyOPCGroup
Set MyOPCServer = New OPCServer
MyOPCServer.Connect " OPC.SimaticNET" ‘连接SIMATICNET 的OPC服务器
(2) 添加OPC组对象
Set MyOPCGroup=MyOPCServer.OPCGroups.Add("Group1")
‘添加OPC组对象
MyOPCGroup.IsSubscribed= True
‘设置该组数据为后台刷新
MyOPCGroup.IsActive = True
‘设置该组为激活状态
MyOPCGroup.UpdateRate=1000
‘设置数据刷新时间为1000
(3) 添加数据项
Dim abItemIDs() As String
‘项标识符
Dim abClientHandles() As Long
‘客户端句柄
Dim abServerHandles() As Long
‘服务器端句柄
Dim abErrors() As Long
Dim i As Long
ItemCount=3
abItemIDs(1) = " S7:【S7 connection_1】IB1"
abItemIDs(2) = " S7:【S7 connection_1】MB1"
abItemIDs(3) = " S7:【S7 connection_1】QB1"
for i=1 to 3
abClientHandles(i) = i
‘给客户端句柄赋值
Next
MyOPCGroup.OPCItems.AddItems ItemCount, abItemIDs, abClientHandles, abServerHandles, abErrors
‘添加数据项操作
(4) 同步数据读写
OPC数据存取有同步方式和异步方式两种。异步读写数据复杂,需要与事件结合使用,与同步相比速度慢但准确性高。同步读写数据简单,直接使用OPCItem的方法即可。
Dim One As OPCItem
Dim Index As Long
‘Index为标签顺序号
Dim OneRead As String
Dim Xie As String
Set One = MyOPCGroup.OPCItems(Index)
One.Read OPCCache
OneRead = One.Value
‘读数据
MyOPCGroup.SyncWrite ItemCount, ServerHandles, valuess, Errors
‘同步写数据
MyOPCGroup.SyncRead OPCCache, ItemCount, ServerHandles, ReadValue, Errors
‘同步读数据
One.Write (Xie)
‘写数据
若只读取数据,可以使用DataChange事件,当控制器中所要访问的数据一旦发生改变时将会触发该事件,并将该数据自动读到TxtValue文本框。
Private Sub MyOPCGroup_DataChange(ByVal TransactionID As Long, ByVal NumItems As Long, ClientHandles() As Long, ItemValues() As Variant, Qualities() As Long, TimeStamps() As Date)
‘自动刷新数据
Dim i As Long
For i = 1 To NumItems
txtValue(ClientHandles(i)) = ItemValues(i)
‘获取项的值
txtTime(ClientHandles(i)) = TimeStamps(i)
‘获取项的时间戳
txtQuantity(ClientHandles(i))=GetQualityString(Qualities(i))
‘获取项的品质
Next i
End Sub
(5) 断开OPC服务器
MyOPCServer.OPCGroups.RemoveAll
‘移除所有OPC Group,空出资源
Set MyOPCGroup = Nothing
MyOPCServer.Disconnect
‘断开连接
下面以西门子PLC为例说下实现方法:
一、通过STEP7软件建立一个新项目OPC,在项目中添加SIMATIC 300站和一个PC 站,其中PLC站中第四个槽安装的CP343模块。PC站的第一个槽 为OPC SERVER ,第三个槽为 IE GENERAL,然后在NETPRO下配置PLC和PC站的网络连接:(注意:是在PC站上新建的网络连接,连接类型选的S7连接)
二、通过station configurator软件 配置本机的PC站(要和STEP7中配置的相同),然后把PLC和PC站都下载下去(注意:下载PC站的时候要把S7ONLINE (STEP7)--->;PC internal(local))。
三、打开OPC Scout,(Start>;SIMATIC>;SIMATICNet>;OPC Scout), 双击“OPC
SimaticNet”在随之弹出的“ADD Group”对话框中输入组名,本例命名为“OPC”。
点击OK 确认 ;
;双击已添加的连接组(OPC),即弹出“OPC Navigator”对话框,此窗口中显示
所有的连接协议。双击“S7”,在PC Station 组态NetPro 中所建的连接名会被显示(S7
connection_1)。双击此连接,即可出现有可能被访问的对象树(objects tree),在PLC
CPU 中已存在的DB 块也会出现
以上完成的OPC SERVER部分的配置。
四、用VB编写了OPC客户端应用程序。主要程序代码如下:
在VB中引在VB中还要引用 siemens opc daautomation 2.0
(1) 连接OPC服务器
Dim WithEvents MyOPCServer As OPCServer ‘定义服务器对象变量MyOPCServer
Dim WithEvents MyOPCGroup As OPCGroup ‘定义OPC组对象变量MyOPCGroup
Set MyOPCServer = New OPCServer
MyOPCServer.Connect " OPC.SimaticNET" ‘连接SIMATICNET 的OPC服务器
(2) 添加OPC组对象
Set MyOPCGroup=MyOPCServer.OPCGroups.Add("Group1")
‘添加OPC组对象
MyOPCGroup.IsSubscribed= True
‘设置该组数据为后台刷新
MyOPCGroup.IsActive = True
‘设置该组为激活状态
MyOPCGroup.UpdateRate=1000
‘设置数据刷新时间为1000
(3) 添加数据项
Dim abItemIDs() As String
‘项标识符
Dim abClientHandles() As Long
‘客户端句柄
Dim abServerHandles() As Long
‘服务器端句柄
Dim abErrors() As Long
Dim i As Long
ItemCount=3
abItemIDs(1) = " S7:【S7 connection_1】IB1"
abItemIDs(2) = " S7:【S7 connection_1】MB1"
abItemIDs(3) = " S7:【S7 connection_1】QB1"
for i=1 to 3
abClientHandles(i) = i
‘给客户端句柄赋值
Next
MyOPCGroup.OPCItems.AddItems ItemCount, abItemIDs, abClientHandles, abServerHandles, abErrors
‘添加数据项操作
(4) 同步数据读写
OPC数据存取有同步方式和异步方式两种。异步读写数据复杂,需要与事件结合使用,与同步相比速度慢但准确性高。同步读写数据简单,直接使用OPCItem的方法即可。
Dim One As OPCItem
Dim Index As Long
‘Index为标签顺序号
Dim OneRead As String
Dim Xie As String
Set One = MyOPCGroup.OPCItems(Index)
One.Read OPCCache
OneRead = One.Value
‘读数据
MyOPCGroup.SyncWrite ItemCount, ServerHandles, valuess, Errors
‘同步写数据
MyOPCGroup.SyncRead OPCCache, ItemCount, ServerHandles, ReadValue, Errors
‘同步读数据
One.Write (Xie)
‘写数据
若只读取数据,可以使用DataChange事件,当控制器中所要访问的数据一旦发生改变时将会触发该事件,并将该数据自动读到TxtValue文本框。
Private Sub MyOPCGroup_DataChange(ByVal TransactionID As Long, ByVal NumItems As Long, ClientHandles() As Long, ItemValues() As Variant, Qualities() As Long, TimeStamps() As Date)
‘自动刷新数据
Dim i As Long
For i = 1 To NumItems
txtValue(ClientHandles(i)) = ItemValues(i)
‘获取项的值
txtTime(ClientHandles(i)) = TimeStamps(i)
‘获取项的时间戳
txtQuantity(ClientHandles(i))=GetQualityString(Qualities(i))
‘获取项的品质
Next i
End Sub
(5) 断开OPC服务器
MyOPCServer.OPCGroups.RemoveAll
‘移除所有OPC Group,空出资源
Set MyOPCGroup = Nothing
MyOPCServer.Disconnect
‘断开连接
展开全部
用VISUALBASIC实现上位机和PLC的通讯
论文摘要:本文以OMRON C200HS PLC为例,介绍了如何用VISUAL BASIC编程软件实现上位机和PLC的通讯,该方案具有硬件简单,使用灵活的特点.对串小型控制系统实现通讯有一定的参考价值.
论文名称: 用VISUALBASIC实现上位机和PLC的通讯
作 者: 余松 赵忠堂 甘川
专业类别:
论文来源: 转载
刊载杂志: 电气传动
下载地址:http://www.download.shejis.com/upload_file/upload_lw/2007-5-14lw-wy/200712492035.rar
论文摘要:本文以OMRON C200HS PLC为例,介绍了如何用VISUAL BASIC编程软件实现上位机和PLC的通讯,该方案具有硬件简单,使用灵活的特点.对串小型控制系统实现通讯有一定的参考价值.
论文名称: 用VISUALBASIC实现上位机和PLC的通讯
作 者: 余松 赵忠堂 甘川
专业类别:
论文来源: 转载
刊载杂志: 电气传动
下载地址:http://www.download.shejis.com/upload_file/upload_lw/2007-5-14lw-wy/200712492035.rar
参考资料: http://www.dq.shejis.com/new_lw/html/139655.shtml
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是232通信吗?你可以看串口调试工具的vb的源代码。网上面很容易找到的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |