電子開發(fā)網(wǎng)

電子開發(fā)網(wǎng)電子設(shè)計(jì) | 電子開發(fā)網(wǎng)Rss 2.0 會員中心 會員注冊
搜索: 您現(xiàn)在的位置: 電子開發(fā)網(wǎng) >> 電子開發(fā) >> PLC基礎(chǔ)入門教程 >> 正文

分分鐘玩轉(zhuǎn)通訊!西門子plc的Modbus通訊MBUS_CTRL 、MBUS_MSG和MBUS_INIT、MBUS_SLAVE指令

作者:佚名    文章來源:本站原創(chuàng)    點(diǎn)擊數(shù):    更新時間:2023/1/18

Modbus通訊標(biāo)準(zhǔn)協(xié)議可以通過各種傳輸方式傳播,如RS-232C、RS-485、光纖、無線電等。Modbus具有兩種串行傳輸模式,ASC2和RTU模式。支持Modbus協(xié)議的一般都支持RTU模式,通信雙方(主站和從站)必須同時支持上述模式中的一種。一般都使用RTU模式。

Modbus是一種單主站的主/從通信模式,Modbus網(wǎng)絡(luò)上只能有一個主站存在(注意和PPI協(xié)議的區(qū)別),主站在Modbus網(wǎng)絡(luò)上沒有地址,從站的地址范圍為0-247,其中0為廣播地址,從站的實(shí)際地址范圍為1-247。

主站  

NO.1 初始化

使用MODBUS通訊協(xié)議,必須首先初始化程序,使用MBUS_CTRL可初始化、監(jiān)視或禁用Modbus通訊,在使用MBUS_MSG指令之前,必須正確執(zhí)行MBUS_CTRL指令。指令完成后立即設(shè)定'完成'位,才能繼續(xù)執(zhí)行下一條指令。在每次掃描且 EN輸入打開時執(zhí)行該指令。

 

MBUS_CTRL指令必須在每次掃描時(包括首次掃描)被調(diào)用,


                    MBUS_CTRL指令        


Mode('模式')輸入數(shù)值選擇通訊協(xié)議。輸入值1(可用SM0.0替代或者直接用數(shù)值1)將CPU端口分配給Modbus協(xié)議并啟用該協(xié)議。輸入值0將CPU端口分配給PPI系統(tǒng)協(xié)議并禁用Modbus協(xié)議。

Baud (波特率)一般選擇9600。

Parity (奇偶校驗(yàn)) 參數(shù)被設(shè)為與Modbus從站奇偶校驗(yàn)相匹配。所有設(shè)置使用一個起始位和一個停止位。一般選擇偶校驗(yàn)2.

Timeout('超時')參數(shù)設(shè)為等待來自從站應(yīng)答的毫秒時間數(shù)。'超時'數(shù)值可以設(shè)置的范圍為1毫秒到32767毫秒。典型值是1000毫秒(1秒)(一般都設(shè)定為1000)

。'超時'參數(shù)應(yīng)該設(shè)置的足夠大,以便從站有時間對所選的波特率作出應(yīng)答。

'超時'參數(shù)用于確定Modbus從站是否對請求做出應(yīng)答。'超時'值確定Modbus主設(shè)備在發(fā)送了請求的最后一個字符后,將要等待多長時間才會有應(yīng)答的第一個字符。如果在'超時'規(guī)定的時間內(nèi)至少收到應(yīng)答的一個字符,Modbus主設(shè)備將從Modbus從站接收到整個應(yīng)答。

Done(完成) MBUS_CTRL指令完成時,'完成'輸出打開。

Error(錯誤) 輸出包含執(zhí)行該指令的結(jié)果。下表定義了在執(zhí)行MBUS_CTRL指令時會產(chǎn)生的錯誤條件。指定一個字節(jié)來存放錯誤代碼。

錯誤代碼         說明

0       無錯誤

1       奇偶校驗(yàn)選擇無效

2       波特率選擇無效

3       超時選擇無效

4       模式選擇無效

初始化完成!

 

 

 

 NO.2 啟動Modbus協(xié)議

讀操作

MBUS_MSG(端口0使用)指令(或用于端口1的MBUS_MSG_P1)用于啟動對Modbus從站的請求并處理應(yīng)答。

當(dāng)EN輸入和'首次'輸入打開時,BUS_MSG指令啟動對Modbus從站的請求。發(fā)送請求、等待應(yīng)答、并處理應(yīng)答通常需要多次掃描。EN輸入必須打開以啟用請求的發(fā)送,并應(yīng)該保持打開直到'完成'位(M10.1)被置位。


MBUS_MSG指令 


First(首次啟動),在有新請求要發(fā)送時才打開以進(jìn)行一次掃描,通過一個邊沿檢測元素(例如上升沿)打開,這將導(dǎo)致請求被傳送一次。

Slave(從站地址) 從站的地址,允許的范圍是0到247,地址0是廣播地址,只能用于寫請求。不存在對地址0的廣播請求的應(yīng)答。從站的實(shí)際地址范圍為1-247(從站的地址(Slave)在1-247范圍內(nèi)任選一個數(shù)即可,但需要和從站程序中的地址對應(yīng),否則通訊失敗)。主站在Modbus網(wǎng)絡(luò)上沒有地址。

RW('讀寫') 指定是用來讀取還是寫入該消息。'讀寫'參數(shù)允許使用下列兩個值。

0  讀

1        寫

Addr (地址) 是指向讀取或?qū)懭氲钠鹗糓odbus地址,'地址'的指定取值范圍基于Modbus從站支持的地址。一般都取40001。

Count (計(jì)數(shù)) 指定在該請求中讀取或?qū)懭氲臄?shù)據(jù)元素的數(shù)目,MBUS_MSG指令將讀取或?qū)懭胱畲?20個字或1920個位(240字節(jié)的數(shù)據(jù))。'計(jì)數(shù)'的實(shí)際限值將取決于Modbus從站中的限制。

DataPtr(地址指針) 指向S7-200 CPU的V存儲器中與讀取或?qū)懭胝埱笙嚓P(guān)的數(shù)據(jù)的間接地址指針。DataPtr值作為間接地址指針傳遞到MBUS_MSG。例如,如果要寫入Modbus從站的數(shù)據(jù)從S7-200 CPU中的地址VW200開始,則DataPtr的數(shù)值將會是&VB200 (VB200的地址)。指針必須始終是VB類型,即使它們指向字?jǐn)?shù)據(jù)。

 

Done(完成位) 輸出在發(fā)送請求和接收應(yīng)答時關(guān)閉。'完成'輸出在應(yīng)答完成或MBUS_MSG指令因錯誤而中止時打開。完成信息存入輔助寄存器中(如M10.1)

Error(錯誤) 輸出僅當(dāng)'完成'輸出打開時有效,反饋錯誤代碼,存入輔助位寄存器中(如MB6)

MBUS_MSG。

錯誤代碼         說明

0       無錯誤

1       應(yīng)答時奇偶校驗(yàn)錯誤:僅當(dāng)使用偶校驗(yàn)或奇校驗(yàn)時才會發(fā)生。傳輸被干擾,可能會收到不正確的數(shù)據(jù)。該錯誤通常是由電氣故障(例如錯誤接線或者影響通訊的電噪聲)引起的。

2       未使用

3       接收超時:在'超時'時間內(nèi),沒有來自從站的應(yīng)答。可能有以下一些原因:與從站的電氣連接有問題、主設(shè)備和從站設(shè)置為不同的波特率/奇偶校驗(yàn)設(shè)置,以及錯誤的從站地址。

4       請求參數(shù)出錯:一個或多個輸入?yún)?shù)(從站、讀寫、地址或計(jì)數(shù))被設(shè)置為非法值。檢查文檔中輸入?yún)?shù)的允許值。

5       Modbus主設(shè)備未啟用:在調(diào)用MBUS_MSG前,每次掃描時都調(diào)用MBUS_CTRL。

6       Modbus忙于處理另一個請求:一次只能激活一條MBUS_MSG指令。

7       應(yīng)答時出錯: 收到的應(yīng)答與請求不相關(guān)。這表示從站中出現(xiàn)了某些錯誤,或者錯誤的從站應(yīng)答了請求。

8       應(yīng)答時CRC錯誤: 傳輸被干擾,可能會收到不正確的數(shù)據(jù)。該錯誤通常是由電氣故障(例如錯誤接線或者影響通訊的電噪聲)引起的。

101  從站不支持在該地址處所請求的功能:請參閱'使用Modbus主設(shè)備指令'幫助主題中的所需Modbus從站功能支持表。

102  從站不支持?jǐn)?shù)據(jù)地址:'地址'加上'計(jì)數(shù)'所要求的地址范圍超出了從站所允許的地址范圍。

103  從站不支持?jǐn)?shù)據(jù)類型:該'地址'類型不被從站支持。

104  從站故障

105  從站已接受消息但應(yīng)答延遲:這是MBUS_MSG的錯誤,用戶程序應(yīng)在稍后重新發(fā)送請求。

106  從站忙,因此拒絕消息:可以再次嘗試相同的請求,以獲得應(yīng)答。

107  從站因未知原因而拒絕消息。

108  從站存儲器奇偶校驗(yàn)錯誤:從站中有錯誤。

 

低位編號的錯誤代碼(1到8)是由MBUS_MSG指令檢測到的錯誤。這些錯誤代碼通常指示與MBUS_MSG指令的輸入?yún)?shù)有關(guān)的問題,或接收來自從站的應(yīng)答時出現(xiàn)的問題。奇偶校驗(yàn)和CRC錯誤指示存在應(yīng)答但是數(shù)據(jù)未正確接收。這通常是由電氣故障(例如連接有問題或者電噪聲)引起的。

高位編號的錯誤代碼(從101開始)是由Modbus從站返回的錯誤。這些錯誤指示從站不支持所請求的功能,或者所請求的地址(或數(shù)據(jù)類型或地址范圍)不被Modbus從站支持。

 

由于一次只能激活一條MBUS_MSG指令。所以在第一條MBUS_MSG指令完成后,啟動第二條指令,同時必須復(fù)位第一條指令。如果啟用了多條MBUS_MSG指令,則將處理所執(zhí)行的第一條MBUS_MSG指令,之后的所有MBUS_MSG指令將中止并產(chǎn)生錯誤代碼6。


 


寫操作

M10.0動作之后啟動第二條MBUS_MSG指令(寫指令)(所謂通訊就是主/從的讀、寫或者讀寫的交互過程),將主站的數(shù)據(jù)寫入到從站的處理器中。


MBUS_MSG指令 


Slave(從站地址) 同讀操作不變,地址與從站相一致。

RW寫1,啟動“寫”功能。

Addr 不能與“讀”地址重合。

Count 同上。

DataPtr 同上,不能與讀操作地址重復(fù)。

Done 同上,存儲器不能重復(fù)。

Error 同上,位寄存器最好不要重復(fù)。

寫操作完成后,置位讀操作,復(fù)位寫操作。


讀寫循環(huán)執(zhí)行


 

數(shù)據(jù)傳送,(進(jìn)行對話)

MOV_B指令 



從站

MBUS_INIT指令被用于啟用和初始化或禁止Modbus通訊。在使用MBUS_SLAVE指令之前,必須正確執(zhí)行MBUS_INIT指令。指令完成后立即設(shè)定'完成'位,才能繼續(xù)執(zhí)行下一條指令。


MBUS_INIT指令 


Mode(模式) 為1,啟用Modbus協(xié)議。

Addr(地址) 與主站的尋址對應(yīng)一致。

Baud (波特率)一般選擇9600。

Parity (奇偶校驗(yàn)) 參數(shù)被設(shè)為與Modbus從站奇偶校驗(yàn)相匹配。所有設(shè)置使用一個起始位和一個停止位。一般選擇偶校驗(yàn)2.(和主站保持一致)

Delay('延時')參數(shù)通過將指定的毫秒數(shù)增加至標(biāo)準(zhǔn)Modbus信息超時的方法延長標(biāo)準(zhǔn)Modbus信息結(jié)束超時條件。該參數(shù)的典型數(shù)值在有線網(wǎng)絡(luò)上應(yīng)為0。

MaxIQ 參數(shù)將供Modbus地址0xxxx和1xxxx使用的I和Q點(diǎn)數(shù)設(shè)為0至128之間的數(shù)值。建議使用的MaxIQ數(shù)值是128,該數(shù)值可在S7-200中存取所有的I和Q點(diǎn)。

MaxAI參數(shù)將供Modbus地址3xxxx使用的字輸入(AI)寄存器數(shù)目設(shè)為0至32之間的數(shù)值。

建議使用的MaxAI數(shù)值如下,這些數(shù)值可允許存取所有的S7-200模擬輸入:(根據(jù)CPU型號選擇數(shù)值)

0用于CPU 221

16用于CPU 222

32用于CPU 224、224XP、226和226XM。

MaxHold 參數(shù)設(shè)定供Modbus地址4xxxx使用的V存儲器中的字保持寄存器數(shù)目。例如,為了允許主設(shè)備存取2000個字節(jié)的V存儲器,將MaxHold 設(shè)為1000個字的數(shù)值(保持寄存器)。

HoldStart參數(shù)是V存儲器中保持寄存器的起始地址,Modbus主設(shè)備可存取V內(nèi)存MaxHold個字?jǐn)?shù),從HoldStart開始。

Done(完成)MBUS_INIT指令完成時,'完成'輸出打開。

Error(錯誤)'錯誤'輸出字節(jié)包含執(zhí)行指令的結(jié)果。

錯誤代碼         說明

0       無錯誤

1       內(nèi)存范圍錯誤

2       非法波特率或奇偶校驗(yàn)

3       非法從屬地址

4       非法Modbus參數(shù)值

5       保持寄存器與Modbus從屬符號重疊

6       收到奇偶校驗(yàn)錯誤

7       收到CRC錯誤

8       非法功能請求/功能不受支持

9       請求中的非法內(nèi)存地址

10     從屬功能未啟用


MBUS_SLAVE指令被用于為Modbus主設(shè)備發(fā)出的請求服務(wù)。

如果'完成'關(guān)閉,錯誤參數(shù)不會改變。


MBUS_SLAVE從站指令 


 



40001至4xxxx是映射至V存儲器的保持寄存器。

所有Modbus地址均以1為基位。

下表顯示映射至S7-200地址的Modbus地址。

4xxxx        HoldStart+2 x (xxxx-1)。

40011   1000+2*(11-1)=1020 。


接收數(shù)據(jù)


 

Tags:modbus通訊,西門子plc,指令  
責(zé)任編輯:admin
相關(guān)文章列表
西門子PLC S7-200 smart如何使用Modbus 485通訊傳輸接收數(shù)據(jù)_200
初學(xué)者如何快速入門plc?PLC基礎(chǔ)入門,硬件和語法指令等
西門子S7-200 SMART 模擬量概述及自建庫文件,西門子PLC子程序創(chuàng)
西門子PLC編程常用基礎(chǔ)邏輯
一文學(xué)會設(shè)備運(yùn)行時間累計(jì)程序編寫, 從零基礎(chǔ)到精通,收藏這篇就
三菱PLC實(shí)現(xiàn)設(shè)備累計(jì)運(yùn)行時間_時間指令HOUR三菱計(jì)時長程序怎么用
S7-1200PLC入門初學(xué),需先熟悉PLC硬件結(jié)構(gòu)!S7-1200PLC硬件結(jié)構(gòu)
TIA Portal博途軟件和S7-1200PLC介紹
西門子200SMART PLC編程通過指針輕松實(shí)現(xiàn)多個數(shù)據(jù)排列
西門子S7-200SMART PLC如何實(shí)現(xiàn)星三角降壓啟動多次調(diào)用?子程序編
西門子PLC子程序?qū)嵗,S7-200 SMART PLC帶參數(shù)子程序應(yīng)用實(shí)例
詳解步進(jìn)電機(jī)與PLC的接線,西門子、三菱等PLC接線(總結(jié)篇)PLC和
三菱/信捷 PLC PLSR/DPLSR 多段雙向脈沖帶加減速脈沖輸出指令詳解
三菱/信捷 PLC脈沖停止[STOP] 指令詳解
西門子PLC編程實(shí)例  4個基本控制電路設(shè)計(jì)方法
三菱FX2N系列PLC的TO指令、FROM指令解析,緩沖存儲器BFM
三菱plc特殊功能模塊讀取與寫入指令,TO指令和FROM指令,緩沖存儲
S7-200smart 恒溫PID控制_STEP7中PID設(shè)置溫度自動控制編程
西門子plc傳送帶操作控制,傳輸帶控制
西門子PLC實(shí)現(xiàn)汽車涂裝前處理生產(chǎn)線中的磷化槽液位控制
請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個字
[ 查看全部 ] 網(wǎng)友評論
推薦文章
最新推薦
關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁面
下到頁底
晶體管查詢
免费黄色软件在线观看| 久热这里只精品99国产6_99| 欧美三级在线观看不卡视频| 亚洲白色白色在线播放| 欧美换爱交换乱理伦片免费| 亚洲欧美成人完整版在线| 欧美MV日韩MV国产网站| 亚洲一卡2卡4卡5卡6卡在线99| 春雨直播免费直播视频在线观看下载| 亚洲成a人v欧美综合天堂麻豆| 杨幂精品国产福利在线| 亚洲av无码一区二区三区国产| 日本高清二区视频久二区| 久久国产精品无码HDAV| 成年免费A级毛片免费看| 中文字幕无码乱人伦| 奶交性视频欧美| juy051佐佐木明希在线观看| 国产香蕉免费精品视频| 91av在线电影| 国产成人精品123区免费视频| 芭蕉私人影院在线观看| 国产aⅴ激情无码久久久无码| 精品一区二区91| 免费h成人黄漫画嘿咻破解版 | 国产亚洲综合激情校园小说| 美女视频黄频大全免费| 十七岁免费观看高清| 永久黄网站色视频免费| 亚洲欧美4444kkkk| 日韩欧美成末人一区二区三区| 久久国产精品一国产精品| 岛国大片在线播放高清| r18bl各种play高h| 国产精品成人va在线观看入口 | 国产精品美女久久久久久久| 黄色网站免费在线观看| 国产丰满麻豆videossexhd| 男人边吃奶边做性视频| 亚洲第一永久在线观看| 日韩欧美无线在码|