目录
OPC简介
OPC是一种利用微软COM/DCOM技术达成自动控制的协议,采用典型的CIS模式,针对硬件设备的驱动程序由硬件厂商完成提供统OPC接口标准的Server程序。软件厂商只需按照OPC标准接口编写CLient程序访问硬件厂商提供的Serve程序进行读写,即可实现与硬件设备的通信。
PLC与Matlab之间的OPC通讯
S7-PC Access SMART配置
S7-200 PC Access SMART是西门子基于200smart PLC之后,推出的一款读取200smart PLC数据的上位机OPC软件
新建一个PLC程序并保存下载到PLC。
打开S7 -200 PC Access Smart,将PLC程序变量上传到OPC服务器。
文件——导入符号——选择保存到本地的.smart格式的文件
右键新加入的项目——属性——选择PLCcpu地址以添加PLC——确认
可以在右侧看到已写在PLC里面的条目
这里有个很明显的错误 S7-200 PC Access SMART V2.3版本支持中文的group和item 但是在这里使用中文会导致后面Matlab建立opc连接后add-item时会出现ChangeBrowsePosition failed browsing down to的错误提示。
选择条目添加到测试客户端
点击查看客户端状态查询连接信号质量
Matlab配置
Matlab7.0以上版本中集成了 OPC工具箱 (OPC Toolbox),它是一个客户端软件,提供了一种服务器和客户端互访的通用机制,应用于OPC客户端数据访问,通过OPC工具箱不需了解 0PC服务器的内部配置和具体操作,就能连接任何一个 OPC服务器。组态软件可以作为 OPC服务器与作为 0PC客户端的 MATLAB相连接,为其提供读写组态软件内部数据的功能
在Matlab中下载OPC Toolbox,并通过在命令行窗口中输入指令完成核心组件的安装
opcregister('install')
输入
opctool
建立连接
在localhost/S7200SMART.OPCServer 下右击选择Add Group(添加组)
添加条目(200 smart OPC服务器的变量条目)
Group右击添加Item
完成后保存
在simulink中建立opc客户端
从库浏览器中选中——Industrial Communication Toolbox——OPC Configuration 配置如下
启动仿真 运行时间设置为inf 从示波器观察数据传输
组态王与matlab之间的OPC通讯
首先在组态王里面新建一个工程,找到“设备”——“”OPC服务器
新建OPC服务器,网络节点名由于不能使用默认的本机名称,建议不懂就照着下图输入\\loaclhost,选中左侧KingView.View.1,其他照默认配置
添加变量名。先在“数据库”——“数据词典”中添加变量
变量名可以任意取,但是变量类型必须是“I/O型”,连接设备需要选中第一步设置的服务器名(一般为KingView.View.1)。
千万注意!!!需要组态王和matlab通讯的变量,必须选为“I/O型”!!!
寄存器可以任意选择,但是建议可以另外建立变量类型为“内存”型的变量,作为寄存器。也即,先建立一个“内存”类型的变量,然后重启组态王程序,再建立对应的I/O变量,在寄存器中选中刚刚建立的“内存”类型的变量。
采样频率按照需要选择。
在Matlab中的操作如上节所示
不同的是在simulink—OPC Configuration模块中,点击上方的“Configure OPC Clients”,在弹出界面上点击“Add”,输入Host名称为之前设置的“网络节点名”(对应"\\loaclhost"这里填"loaclhost")。再点击“Select”点选服务器名称(KingView.View.1即是组态王OPC服务器)
配置OPC Read(读OPC服务器上变量)、OPC Write(写OPC服务器上变量)
需要注意的是!!!
Matlab里面无法显示组态王OPC服务器内的变量名列表,但是不代表无法读写对应的I/O变量
如上图所示,添加“Item IDs”就是添加对组态王OPC服务器内的指定I/O型变量的操作。在点击“Add Items”后弹出的界面里面“Enter Item ID(s)”输入之前在组态王里面的“数据词典”里添加的I/O型变量的名字,在加上.Value。注意大小写和标点符号 (上图示例,组态王里面的“数据词典”里添加的I/O型变量的名字为“a”)
自学手册 很多借鉴
参考文章:
Matlab和PLC的OPC通讯_matlab中没有opc插件-CSDN博客