电子开发网

电子开发网电子设计 | 电子开发网Rss 2.0 会员中心 会员注册
搜索: 您现在的位置: 电子开发网 >> 电子开发 >> 梯形图实例 >> 正文

基于S7-200 SMART实现MATLAB写入与读取PLC数据_matlab

作者:佚名    文章来源:网络整理    点击数:    更新时间:2024/12/29

关键字:S7-200 SMART;Modbus TCP;MATLAB。

系列文章目录

基于S7-200 SMART实现一键启停
顺序功能图——(二)设计机组延时关机程序
基于S7-200 SMART实现Modbus TCP通信



前言

  提到PID控制,不知道各位第一个想到的相关实现软件是什么,反正博主第一个想到的是MATLAB,不过这都是因为在过去的学生时代接触这个最多。相信基于PID的控制理念,不论是C++/C#还是Python基于这些高级语言很多软件都能实现PID控制。不过在工作以后在过程控制或是运动控制PLC的使用十分广泛,一些PLC也集成了PID控制的功能例如S7-200 SMART
  随着时代的发展越来越多不同的PID控制也被运用到工程中——模糊PID控制专家PID控制神经网络PID控制差分进化PID控制,他们是智能控制中专家控制模糊控制神经网络控制优化算法控制的发展的结果,虽然优势明显,但仅凭PLC难以实现,往往需要PC中的其他软件进行辅助。因此实现PC软件如MATLAB与PLC之间的通信就是十分必要的。


一、Modbus TCP

  Modbus TCP是一种通信协议,支持这种通信协议的设备只需要通过以太网就可以实现通数据传输,基于此通信协议,可以通过一根网线实现PC与PLC之间的数据处理,本文不会对Modbus TCP做重点介绍,需要学习的小伙伴可以走传送门——带你玩转modbusTCP通信。

二、总体环境介绍

  以下的案例基于:

  • PC操作系统:WIN11
  • PLC:S7-200 SAMRT CPU ST60
  • 通信介质:普通网线一根
  • PLC编程软件:STEP 7-Micro/WIN SMART V2.8
  • MATLAB:R2019a

三、PLC中搭建服务端

  在基于S7-200 SMART实现Modbu TCP通信一文中博主详细介绍了基于S7-200 SMART搭建Modbus TCP服务端的搭建过程,这里只进行简单介绍,需要重温的小伙伴请走传送门。
 

图3.1 在PLC中搭建Modbu TCP服务端

  设置端口号:502,保持寄存器包括从VB10000开始向后的1000个V寄存器。

四、Matlab中搭建客户端

  在Matlab中已经集成好了Modbus通信需要的各种功能,这点十分方便,我们可以使用封装好的函数:

clc
clear all;
%创建modbus连接对象
mb = modbus('tcpip','192.168.2.1',502);
%通信延时2s
mb.Timeout = 2;
for i=1:1:1000
%读取数据
data = read(mb,'holdingregs',1,10,'int16');
%写入数据
write(mb,'holdingregs',1,[data(1)+1 data(2)+1 data(3)+1 data(4)+1 data(5)+1 data(6)+1],'int16');
%表示暂停0.1s
pause(1/10);
end
%断开并清除modbus对象
clear mb

其中

mb = modbus('tcpip','192.168.2.1',502);

用于生成一个Modbus对象,比较像面向对象编程中类的实例化。第一个参数表示是Modbus TCP通信,第二个参数表示服务端的IP地址(PLC的IP地址),第三个参数表示端口号。

mb.Timeout = 2;

用于设定Modbus对象的通信时间,超过此时间还未建立通信连接则认为通信失败。

data = read(mb,'holdingregs',1,10,'int16');

用于读取数据并反回到一个变量里。第一个参数表示是通过mb对象读取数据,第二个参数表示读取保持寄存器数据,第三个参数表示从第一个地址开始读取,第四个参数表示读取10个数据,第五个参数表示以int16类型的数据保存到data中。如果需要读取的数据有多种类型也可以写成如下形式:

data = read(mb,'holdingregs',1,[5,2,3],{
'int16','uint32','double'});
write(mb,'holdingregs',1,[data(1)+1 data(2)+1 data(3)+1 data(4)+1 data(5)+1 data(6)+1],'int16');

用于写入数据。第一个参数表示是通过mb对象写入数据,第二个参数表示写入保持寄存器数据,第三个参数表示从第一个地址开始写入,第四个参数表示写入的六个数据,第五个参数表示以int16类型的数据保写入。

clear mb

用于清除Modbus对象。

五、运行结果

  可以看到运行结束后再PLC的V寄存器中VW10000~VW10010都比原来的值累加了1000,而且再MATLAB的工作区也得到了反应,值得一提的是,MATLAB的工作区不会实时更新数据,只有在程序运行完成后可以查看到运行的结果。
 

图5.1 在PLC中的通信结果

  
图5.2 在Matlab中的通信结果


总结

  本文实现了S7-200 SMART与PC端Matlab的Modbus TCP通信,通过Matlab读取与写入了V区寄存器。

Tags:MATLAB,200smart,读取PLC数据  
责任编辑:admin
请文明参与讨论,禁止漫骂攻击,不要恶意评论、违禁词语。 昵称:
1分 2分 3分 4分 5分

还可以输入 200 个字
[ 查看全部 ] 网友评论
推荐文章
最新推荐
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 在线帮助 - 文章列表
返回顶部
刷新页面
下到页底
晶体管查询