18luck网站

18luck网站電子設計 | 18luck网站Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 18luck网站 >> 18luck平台 >> 梯形圖實例 >> 正文

基於S7-200 SMART實現MATLAB寫入與讀取PLC數據_matlab

作者:佚名    文章來源:網絡整理    點擊數:    更新時間:2024/12/29

關(guan) 鍵字:S7-200 SMART;Modbus TCP;MATLAB。

係列文章目錄

基於(yu) S7-200 SMART實現一鍵啟停
順序功能圖——(二)設計機組延時關(guan) 機程序
基於(yu) S7-200 SMART實現Modbus TCP通信



前言

  提到PID控製,不知道各位第一個(ge) 想到的相關(guan) 實現軟件是什麽(me) ,反正博主第一個(ge) 想到的是MATLAB,不過這都是因為(wei) 在過去的學生時代接觸這個(ge) 最多。相信基於(yu) PID的控製理念,不論是C++/C#還是Python基於(yu) 這些高級語言很多軟件都能實現PID控製。不過在工作以後在過程控製或是運動控製PLC的使用十分廣泛,一些PLC也集成了PID控製的功能例如S7-200 SMART
  隨著時代的發展越來越多不同的PID控製也被運用到工程中——模糊PID控製專(zhuan) 家PID控製神經網絡PID控製差分進化PID控製,他們(men) 是智能控製中專(zhuan) 家控製模糊控製神經網絡控製優(you) 化算法控製的發展的結果,雖然優(you) 勢明顯,但僅(jin) 憑PLC難以實現,往往需要PC中的其他軟件進行輔助。因此實現PC軟件如MATLAB與(yu) PLC之間的通信就是十分必要的。


一、Modbus TCP

  Modbus TCP是一種通信協議,支持這種通信協議的設備隻需要通過以太網就可以實現通數據傳(chuan) 輸,基於(yu) 此通信協議,可以通過一根網線實現PC與(yu) PLC之間的數據處理,本文不會(hui) 對Modbus TCP做重點介紹,需要學習(xi) 的小夥(huo) 伴可以走傳(chuan) 送門——帶你玩轉modbusTCP通信。

二、總體環境介紹

  以下的案例基於(yu) :

  • PC操作係統:WIN11
  • PLC:S7-200 SAMRT CPU ST60
  • 通信介質:普通網線一根
  • PLC編程軟件:STEP 7-Micro/WIN SMART V2.8
  • MATLAB:R2019a

三、PLC中搭建服務端

  在基於(yu) S7-200 SMART實現Modbu TCP通信一文中博主詳細介紹了基於(yu) S7-200 SMART搭建Modbus TCP服務端的搭建過程,這裏隻進行簡單介紹,需要重溫的小夥(huo) 伴請走傳(chuan) 送門。
 

圖3.1 在PLC中搭建Modbu TCP服務端

  設置端口號:502,保持寄存器包括從VB10000開始向後的1000個V寄存器。

四、Matlab中搭建客戶端

  在Matlab中已經集成好了Modbus通信需要的各種功能,這點十分方便,我們(men) 可以使用封裝好的函數:

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'); %寫(xie) 入數據 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);

用於(yu) 生成一個(ge) Modbus對象,比較像麵向對象編程中類的實例化。第一個(ge) 參數表示是Modbus TCP通信,第二個(ge) 參數表示服務端的IP地址(PLC的IP地址),第三個(ge) 參數表示端口號。

mb.Timeout = 2;

用於(yu) 設定Modbus對象的通信時間,超過此時間還未建立通信連接則認為(wei) 通信失敗。

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

用於(yu) 讀取數據並反回到一個(ge) 變量裏。第一個(ge) 參數表示是通過mb對象讀取數據,第二個(ge) 參數表示讀取保持寄存器數據,第三個(ge) 參數表示從(cong) 第一個(ge) 地址開始讀取,第四個(ge) 參數表示讀取10個(ge) 數據,第五個(ge) 參數表示以int16類型的數據保存到data中。如果需要讀取的數據有多種類型也可以寫(xie) 成如下形式:

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');

用於(yu) 寫(xie) 入數據。第一個(ge) 參數表示是通過mb對象寫(xie) 入數據,第二個(ge) 參數表示寫(xie) 入保持寄存器數據,第三個(ge) 參數表示從(cong) 第一個(ge) 地址開始寫(xie) 入,第四個(ge) 參數表示寫(xie) 入的六個(ge) 數據,第五個(ge) 參數表示以int16類型的數據保寫(xie) 入。

clear mb

用於(yu) 清除Modbus對象。

五、運行結果

  可以看到運行結束後再PLC的V寄存器中VW10000~VW10010都比原來的值累加了1000,而且再MATLAB的工作區也得到了反應,值得一提的是,MATLAB的工作區不會(hui) 實時更新數據,隻有在程序運行完成後可以查看到運行的結果。
 

圖5.1 在PLC中的通信結果

  
圖5.2 在Matlab中的通信結果


總結

  本文實現了S7-200 SMART與(yu) PC端Matlab的Modbus TCP通信,通過Matlab讀取與(yu) 寫(xie) 入了V區寄存器。

Tags:MATLAB,200smart,讀取PLC數據  
責任編輯:admin
請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個字
[ 查看全部 ] 網友評論
推薦文章
最新推薦
關於我們 - 聯係我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁麵
下到頁底
晶體管查詢