电子开发 | 基础入门 | 电路原理图 | 濮婎垰鑸伴崶鎯х杽娓氾拷 | PLC閸╄櫣顢�   閵嗗﹤顩ч弸婊冩灘濞嗐垺婀扮粩娆欑礉鐠囬攱瀵� Ctrl+D 閹靛濮╅弨鎯版閿涗焦鍔呯拫銏″亶閻ㄥ嫭鏁幐浣碘偓锟�娑撯偓鐠у嘲顒熸稊鐘辩鐠х柉绻樺銉礉閻㈤潧鐡欏鈧崣鎴犲竾濞嗐垼绻嬮幃顭掔磼.

电子开发网

电子开发网电子设计 | 电子开发网Rss 2.0 会员中心 会员注册

閳藉懐鏁哥捄顖氬彆瀵繑澧滈崘宀嬬礉閺堚偓閺傛壆澧楅妴濠勬暩鐎涙劗鏁哥捄顖氬彆瀵繗顓哥粻妤€娅掗妴瀣剁礉閻絻鐭鹃崗顒€绱¢弻銉嚄閹靛鍞� 閻絻鐭鹃崗顒€绱$拋锛勭暬閸c劊鈧劗鏁哥€涙劒绮犳稉姘眽閸涙ê绻€婢跺洦澧滈崘灞烩偓锟�
閳藉棗宕勬径鈺侇劅娴兼艾宕熼悧鍥ㄦ簚鐎圭偘绶�100 c鐠囶叀鈻� chm閺嶇厧绱¢妴鍌濈カ閺傛瑥鍞寸€圭顕涚紒鍡礉鐟曞棛娲婃笟瀣摍婢舵熬绱濋崘鍛啇楠炶¥鈧劗鏁哥€涙劒绮犳稉姘眽閸涙ê绻€婢跺洦澧滈崘灞烩偓锟�
搜索: 您现在的位置: 电子开发网 >> 电子开发 >> 梯形图实例 >> 正文

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

作者:佚名    文章来源:网络整理    点击数:718    更新时间: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通信需要的各种功能,这点十分方便,我们可以使用封装好的函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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

其中

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

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

1
mb.Timeout = 2;

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

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

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

1
2
data = read(mb,'holdingregs',1,[5,2,3],{
<!-- -->'int16','uint32','double'});
1
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类型的数据保写入。

1
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 个字
[ 查看全部 ] 网友评论
    没有任何评论
推荐文章
鐢靛瓙寮€鍙戠綉锛氭眹闆嗙患鍚堝悇绫荤數瀛愬埗浣滀笌鐢佃矾鍥剧殑缃戠珯锛宲lc宸ユ帶鎶€鏈�,妯$數鏁扮數鐭ヨ瘑,鍗曠墖鏈篍DA绛夌瓑锛佽崯钀冪數璺浘缃戠珯绮惧崕锛屼负宸ョ▼甯堝垱閫犱环鍊笺€傛杩庡叧娉ㄥ井淇″叕浼楀彿锛氱數瀛愬紑鍙戠綉锛�
最新推荐
璧勬枡鍖呬笅杞�
 [闂備礁鎲¢〃鍡椕哄⿰鍕珷闁哄稁鍘肩€氬螖閿曚焦纭堕柕鍫亰閺岋繝宕掗敂钘夘伓]闂備礁鎲¢妵鐐电矆娓氣偓婵″灚寰勭仦绋夸壕婵炴垵纾槐鎵磼閸欐ê宓嗙€规洩绻濆鎾偐瀹割喗姣堥梻浣告惈閻楀棝骞栭锔藉仾闁告洦鍓涢悷褰掓煥閻曞倹瀚�100 c闂佽崵濮村ù鍕箯閿燂拷
 [闂佸搫顦遍崕鎰板垂椤栨埃鏋庨柕蹇嬪灮鐏忕敻鏌ㄩ悤鍌涘]濠电偞鍨堕幐鎼佀囩€圭姰浜圭紒鈧悜鐫犻梺璇插閸愯崵绱撳鍗炲К闁告洦鍓涢々鐑芥偣閹帒濡介柛鈺佸€垮鍫曟倻閸℃浠у┑鐐叉-閺侇煝-TR
 [闂備焦妞垮鈧紒鎻掝煼閹矂鎮欓鍌ゆ祫闁荤姵浜介崝宥夊春閸岀偞鍋eù锝囨嚀缁€鍐┿亜閹垮嫭瀚�]LM324闂佸搫顦弲婊堝礉閺嶎厼妫橀柨鐕傛嫹4~20mA闂佸搫顦遍崕鎴﹀箯閿燂拷1~5V闂備焦鐪归崹褰掓倶濮樿京鐭堥柨鐕傛嫹
 [闂備焦妞垮鈧紒鎻掝煼閹矂鎮欓鍌ゆ祫闁荤姵浜介崝宥夊春閸岀偞鍋eù锝囨嚀缁€鍐┿亜閹垮嫭瀚�]LM386濠碉紕鍋涘﹢杈╁垝椤栫偞鍊垫い鎺嶇劍婵挳鏌熼幑鎰靛殭妞ゆ柨锕弻娑滅疀閹垮啫鍓跺銈冨劜閹瑰洤顕i妸鈺佺畾鐟滃绂嶉敐澶嬬厱闁挎繂鍟俊濂告偨椤栥倖瀚�
 [闂備焦妞垮鈧紒鎻掝煼閹矂鎮欓鍌ゆ祫闁荤姵浜介崝宥夊春閸岀偞鍋eù锝囨嚀缁€鍐┿亜閹垮嫭瀚�]936闂備胶绮敮鎺楁晝閵堝牄浜归柟缁㈠枟閸嬨劌霉閿濆懎鏆熼柣鏂挎嚇閺屾稑螣閻撳孩鐏侀梺璇″枛閿曨亜鐣烽崼鏇熸櫢闁跨噦鎷�
 [闂備礁鎲¢〃鍡椕哄⿰鍕珷闁哄稁鍘肩€氬螖閿曚焦纭堕柕鍫亰閺岋繝宕掗敂钘夘伓]闂佺儵鍓濈敮鎺楀箠鎼淬劍鏅柟閭﹀厴閺嬫牠鏌曡箛銉х?闁靛牊鎸抽幃褰掓偖鐎涙ê顏�+婵犵數鍋為幐鎾疾濞戞埃鍋撻惂鍛婂+闂備胶顢婄紙浼村磿閹绢噮鏁嗛柣鏂垮悑閸庡秹鏌涢弴銊ヤ簻缂佲偓閿燂拷
 [闂傚倷绶¢崑鍛潩閵娾晛鏋侀柕鍫濐槹閸嬨劑姊婚崼鐔恒€掗柟钘夌Ч閹鎷呴悷鎵槰濡炪倖鎸搁幉鈥翅缚椤忓牜鏁嶆繛鍡樺姦閸嬶拷]S7-200PLC闂備焦鐪归崝宀€鈧凹浜為幐鎺楀閵堝棗鍓抽梺缁樻⒐濡叉帡骞忛鈷氬綊鎮崨顔碱伓 S7_2
 [闂佸搫顦遍崕鎰板垂椤栨埃鏋庨柕蹇嬪灮鐏忕敻鏌ㄩ悤鍌涘]S7-200闂佸湱鍘ч悺銊╁箰婵犳艾鍑犻柛鎰ㄦ櫇椤╃兘鎮规担鍛婅础缂佲偓閸曨垱鐓曢煫鍥风悼閸樻粎绱掗幉瀣,STEP7
 [闂佸搫顦遍崕鎰板垂椤栨埃鏋庨柕蹇嬪灮鐏忕敻鏌ㄩ悤鍌涘]ModbusPoll闂備礁鎲$划宀勵敆閻栧獛busSalve闂備胶枪妤犲繘骞忛敓锟�
 [闂佸搫顦遍崕鎰板垂椤栨埃鏋庨柕蹇嬪灮鐏忕敻鏌ㄩ悤鍌涘]STEP7婵犵妲呴崹顏堝礈濠靛牃鍋撳顓犳噰闁哄苯鐭佺粻娑㈠棘鐠恒劍鈻屽┑鐐差嚟婵即宕愰弴鐘哄С闁跨噦鎷� Smart_
 [闂佸搫顦遍崕鎰板垂椤栨埃鏋庨柕蹇嬪灮鐏忕敻鏌ㄩ悤鍌涘]Modbus闂佽崵濮撮鍛村疮閹惰姤鍎婃い鏍ㄧ矊閸ㄦ繈鏌涢幘妤€鍊荤憴锟� v1.024 缂傚倸鍊风欢銈夊箯閿燂拷
 [闂佸搫顦遍崕鎰板垂椤栨埃鏋庨柕蹇嬪灮鐏忕敻鏌ㄩ悤鍌涘]Modscan32闂備礁鎲$划宀勵敆閻栧獛sim32,modb
 [闂備焦妞垮鈧紒鎻掝煼閹矂鎮欓鍌ゆ祫闁荤姵浜介崝宥夊春閸岀偞鍋eù锝囨嚀缁€鍐┿亜閹垮嫭瀚�]89c51闂備胶枪缁绘劙藝闁秵鍋熸繛鎴欏灩濡﹢姊洪锝囶灱闂傚棗缍婇弻锝夘敂閸℃鐝㈢紓浣介哺閻涱槝otues
 [闂備焦妞垮鈧紒鎻掝煼閹矂鎮欓鍌ゆ祫闁荤姵浜介崝宥夊春閸岀偞鍋eù锝囨嚀缁€鍐┿亜閹垮嫭瀚�]濠电偞鍨堕幐绋棵洪妶澶婄濡わ絽鍟崒銊╂煕閻愭潙袨otues濠电偛顕慨鎯р枖閺囩儑鑰块柨娑樺閻瑩鎮楅敐搴濈敖缁炬澘绉电换婵婎槼闁告梹顨婇幃銉╂晸閿燂拷
 [闂備焦妞垮鈧紒鎻掝煼閹矂鎮欓鍌ゆ祫闁荤姵浜介崝宥夊春閸岀偞鍋eù锝囨嚀缁€鍐┿亜閹垮嫭瀚�]51闂備礁鎲¢〃鍡椕哄⿰鍕珷闁哄稁鍘肩€氬鏌涘┑鍡楊仼闁秆冿功缁辨帞鈧綀鍩栫€氾拷 protues濠电偛顕慨鎯р枖閺囩儑鑰块柨鐕傛嫹
鏈€鏂版枃绔�
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 在线帮助 - 文章列表
返回顶部
刷新页面
下到页底
晶体管查询