西門子小型系列S7-200MODBUS RTU通訊篇
MODBUS通訊
基于RS485通訊的基礎(chǔ),簡化版
1. 單主站的主從通訊
2. 從站地址0-247
3. MODBUS本身帶有指定的通訊地址
00001至0xxxx-開關(guān)量輸出 10001至1xxxx-開關(guān)量輸入 30001至3xxxx-模擬量輸入 40001至4xxxx-保持寄存器
Xxxx:用戶定義
MODBUS支持PLC于PLC 還有PLC與變頻器 PLC與伺服通訊等
使用S7-200編寫
打開S7-200庫
MODBUS MASTER PORT 0 主站通訊庫端口0
將上面的庫展開
MBUS_CTRL初始化MODBUS主站通訊
MBUS_MSG設(shè)置MODBUS控制請求(設(shè)置發(fā)送和接受)
MODBUS SLAVE PORT 0從站通訊庫 (在于PLC與PLC之間才會用從站通訊庫,從站通訊庫寫在從站當中。)
MODBUS_INIT 從站通訊地址設(shè)置
MODBUS_slave 從站接受請求
主站初始化MODBUS通訊指令
EN EN使能:必須保證每一掃描周期都被使能(使用SM0.0)
Mode 模式:常為1,使能 Modbus 協(xié)議功能;為0 時恢復(fù)為系統(tǒng) PPI 協(xié)議
Baud 波特率:設(shè)為9600,要與從站波特率對應(yīng)
Parity 校驗:0:無 1:奇 2:偶 是一種校驗代碼傳輸正確性的方法,根據(jù)被傳輸?shù)囊唤M二進制數(shù)據(jù)中的1的個數(shù)為奇數(shù)還是偶數(shù)。
Timeout 超時:主站等待從站響應(yīng)的時間,以毫秒為單位,典型的設(shè)置值為1000毫秒(1秒),
允許設(shè)置的范圍為1-32767。
注意:這個值必須設(shè)置足夠大以保證從站有時間響應(yīng)。
Done 完成位:初始化完成,此位會自動置1??梢杂迷撐粏?MBUS_MSG 讀寫操作
Error 初始化錯誤代碼(只有在 Done 位為1時有效):0= 無錯誤 1= 校驗選擇非法 2= 波特率選擇非法 3= 模式選擇非法
2設(shè)置通訊的讀寫
EN使能:同一時刻只能有一個讀寫功能(即 MBUS_MSG)使能
注意:建議每一個讀寫功能(即MBUS_MSG)都用上一個 MBUS_MSG 指令的 Done 完成位來激活,以保證所有讀寫指令循環(huán)進行(見程序)。
First讀寫請求位:每一個新的讀寫請求必須使用脈沖觸發(fā)
Slave從站地址:可選擇的范圍 1-247
RW讀寫操作:0=讀, 1=寫
注意:1. 開關(guān)量輸出和保持寄存器支持讀和寫功能
2. 開關(guān)量輸入和模擬量輸入只支持讀功能
Addr讀寫從站的數(shù)據(jù)地址:選擇讀寫的數(shù)據(jù)類型
00001至0xxxx-開關(guān)量輸出 10001至1xxxx-開關(guān)量輸入 30001至3xxxx-模擬量輸入 40001至4xxxx-保持寄存器
Count 通訊的數(shù)據(jù)個數(shù)(位或字的個數(shù))
注意:Modbus主站可讀/寫的最大數(shù)據(jù)量為120個字(是指每一個 MBUS_MSG 指令)
DataPtr數(shù)據(jù)指針:1. 如果是讀指令,讀回的數(shù)據(jù)放到這個數(shù)據(jù)區(qū)中
2. 如果是寫指令,要寫出的數(shù)據(jù)放到這個數(shù)據(jù)區(qū)中
格式為(&vb0指針格式)
Done讀寫功能完成位
Error錯誤代碼 只有在 Done 位為1時,錯誤代碼才有效
錯誤代碼:0=無錯誤
1=響應(yīng)校驗錯誤
2=未用
3=接收超時(從站無響應(yīng))
4=請求參數(shù)錯誤
5=Modbus/自由口未使能
6=Modbus正在忙于其它請求
7=響應(yīng)錯誤(響應(yīng)不是請求的操作)
8=響應(yīng)CRC校驗和錯誤
101= 從站不支持請求的功能
102= 從站不支持數(shù)據(jù)地址
103= 從站不支持此種數(shù)據(jù)類型
104= 從站設(shè)備故障
105= 從站接受了信息,但是響應(yīng)被延遲
106= 從站忙,拒絕了該信息
107= 從站拒絕了信息
108= 從站存儲器奇偶錯誤
常見的錯誤及其錯誤代碼:
1. 如果多個 MBUS_MSG 指令同時使能會造成6號錯誤
2. 從站 delay 參數(shù)設(shè)的時間過長會造成3號錯誤
3. 從站掉電或不運行,網(wǎng)絡(luò)故障都會造成3號錯誤
在從站S7-200PLC中編寫
從站初始化請求
初始化Modbus從站協(xié)議
Mode: 模式選擇,啟動/停止MODBUS,1=啟動;0=停止
Address: 從站地址,MODBUS從站地址,取值1~247
Baud: 波特率,可選1200,2400,4800,9600,19200,38400,57600,115200
Parity: 奇偶校驗,0=無校驗;1=奇校驗;2=偶校驗
Delay: 延時,附加字符間延時,缺省值為0
MaxIQ: 最大I/Q位,參與通信的最大I/O點數(shù),S7-200的I/O映像區(qū)為128/128,缺省值為128
MaxAI: 最大AI字數(shù),參與通信的最大AI通道數(shù),可為16或32
MaxHold: 最大保持寄存器區(qū),參與通信的V存儲區(qū)字(VW)
HoldStart: 保持寄存器區(qū)起始地址,以&VBx指定(間接尋址方式)
Done: 初始化完成標志,成功初始化后置1
Error: 初始化錯誤代碼
在本例子中,設(shè)置從站地址為12
Port0 通訊波特率為9600
無校驗
可以使用的S7-200最大數(shù)字量輸入輸出點數(shù)為128
可以使用的S7-200最大模擬量輸入寄存器字數(shù)為32
可以使用的V區(qū)寄存器地址字數(shù)為100, 起始地址為VB1000
智通教育是東莞市專業(yè)的PLC編程培訓(xùn)機構(gòu),平時會不定期的在網(wǎng)站發(fā)布一些PLC電氣自動化課程相關(guān)的知識點,有興趣的同學(xué)歡迎大家關(guān)注本網(wǎng)站!