如何用VB编写程序能与西门子的PLC通信?
可利用OPC服务器来完成,比较方便transactionid 。可适用于各帝联临及护含如地次需批类PLC。 下面以西门子PLC为例说下实现方调伟角法: 一、通过STEP7软件建立一个新项目OPC,来自在项目中添加SIMATIC 300站和一个PC 站,其中PLC站中第四个槽安装的CP343模块。PC站的第一个槽 为OPC SERVER ,第三个槽为 IE GENER360问答AL,然后在NETP很方早入杀湖备RO下配置PLC和PC站的网络连接:(注意:是在PC站上十新建的网络连接,连接类型选的S7连接) 二、通过station configurator软件 配置本机的PC站(要和STEP7中配置的相同),然后把PLC和PC站相发庆止按建初肉眼系都下载下去(注意:下载PC站的时候要把S7ONLINE (STEP7)--->;PC internal(local))。 三、打开OPC Scout,(Start>;SIMATIC>;SIMATICNet>;OPC Scou赵评基河行还t), 双击“OPC SimaticNet&rdq增uo;在随之弹出的“ADD Group”对话框中输入组名,本例命名必包唱训价年顺作为“改OPC”。 点击OK 确认 ; ;双击已添加的连接组(苏组车首所有执入OPC),即弹出“朝肉松虽气民医于啊练OPC Navigator”对话框,此窗口中显示 所有的连接协议。双击“S7&rdqu入讨台圆指注拉席准o;,在PC Station 组态NetPro 中所建的连接名会被显示(S7 connection_1)。双击此连接,即可出现有可能被访问的对象树(objects tree),在PLC CPU 中已存在的DB 块也会出现 以上完成的OPC SERVER部分的翻宜台输任与配置。 四、用VB编写了OPC客户端应用程序。主要程序代码如下: 在VB中引在VB中还要引用 siemens opc daauto观色报各纸象据阶mation 2.0 (1) 连接OPC服务器 Dim WithEvents MyO况朝等图伟PCServer As OPCServer ‘定义服务器对象变量MyOPCServer Dim WithEvents MyOPCGroup As OPCGroup ‘定义OPC组对象变量MyOPCGroup Set MyOPCServer = New OPCServer MyOPCS由专信言济培还erver.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) ***.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 ‘断开连接
爱资源吧版权声明:以上文中内容来自网络,如有侵权请联系删除,谢谢。