報(bào)名人數(shù)298782
資訊中心 > 課程相關(guān)資訊 > 技工技能類(lèi) > PLC電工資訊 > PLC資訊 >?西門(mén)子小型系列S7-200MODBUS RTU通訊篇

西門(mén)子小型系列S7-200MODBUS RTU通訊篇

時(shí)間:2019-09-03 15:41 來(lái)源:郭晨

                                    MODBUS通訊

基于RS485通訊的基礎(chǔ),簡(jiǎn)化版

1. 單主站的主從通訊

2. 從站地址0-247

3. MODBUS本身帶有指定的通訊地址

00001至0xxxx-開(kāi)關(guān)量輸出                                                                                              10001至1xxxx-開(kāi)關(guān)量輸入                                                                                          30001至3xxxx-模擬量輸入                                                                                          40001至4xxxx-保持寄存器

Xxxx:用戶定義

MODBUS支持PLC于PLC  還有PLC與變頻器 PLC與伺服通訊等


使用S7-200編寫(xiě)

打開(kāi)S7-200庫(kù)

MODBUS  MASTER   PORT 0   主站通訊庫(kù)端口0

將上面的庫(kù)展開(kāi)

MBUS_CTRL初始化MODBUS主站通訊

MBUS_MSG設(shè)置MODBUS控制請(qǐng)求(設(shè)置發(fā)送和接受)

MODBUS SLAVE PORT 0從站通訊庫(kù) (在于PLC與PLC之間才會(huì)用從站通訊庫(kù),從站通訊庫(kù)寫(xiě)在從站當(dāng)中。)

MODBUS_INIT 從站通訊地址設(shè)置

MODBUS_slave 從站接受請(qǐng)求


主站初始化MODBUS通訊指令

西門(mén)子小型系列S7-200MODBUS RTU通訊篇01 

EN          EN使能:必須保證每一掃描周期都被使能(使用SM0.0)

Mode      模式:常為1,使能 Modbus 協(xié)議功能;為0 時(shí)恢復(fù)為系統(tǒng) PPI 協(xié)議

Baud       波特率:設(shè)為9600,要與從站波特率對(duì)應(yīng)

Parity       校驗(yàn):0:無(wú) 1:奇  2:偶            是一種校驗(yàn)代碼傳輸正確性的方法,根據(jù)被傳輸?shù)囊唤M二進(jìn)制數(shù)據(jù)中的1的個(gè)數(shù)為奇數(shù)還是偶數(shù)。             

Timeout    超時(shí):主站等待從站響應(yīng)的時(shí)間,以毫秒為單位,典型的設(shè)置值為1000毫秒(1秒),

                            允許設(shè)置的范圍為1-32767。

                注意:這個(gè)值必須設(shè)置足夠大以保證從站有時(shí)間響應(yīng)。

Done      完成位:初始化完成,此位會(huì)自動(dòng)置1??梢杂迷撐粏?dòng) MBUS_MSG 讀寫(xiě)操作

Error       初始化錯(cuò)誤代碼(只有在 Done 位為1時(shí)有效):0= 無(wú)錯(cuò)誤                                                                                                               1= 校驗(yàn)選擇非法                                                                                                               2= 波特率選擇非法                                                                                                               3= 模式選擇非法

 

2設(shè)置通訊的讀寫(xiě)

西門(mén)子小型系列S7-200MODBUS RTU通訊篇02 

EN使能:同一時(shí)刻只能有一個(gè)讀寫(xiě)功能(即 MBUS_MSG)使能   

注意:建議每一個(gè)讀寫(xiě)功能(即MBUS_MSG)都用上一個(gè) MBUS_MSG 指令的 Done 完成位來(lái)激活,以保證所有讀寫(xiě)指令循環(huán)進(jìn)行(見(jiàn)程序)。

First讀寫(xiě)請(qǐng)求位:每一個(gè)新的讀寫(xiě)請(qǐng)求必須使用脈沖觸發(fā)

Slave從站地址:可選擇的范圍 1-247

RW讀寫(xiě)操作:0=讀, 1=寫(xiě)                 

注意:1. 開(kāi)關(guān)量輸出和保持寄存器支持讀和寫(xiě)功能

      2. 開(kāi)關(guān)量輸入和模擬量輸入只支持讀功能

Addr讀寫(xiě)從站的數(shù)據(jù)地址:選擇讀寫(xiě)的數(shù)據(jù)類(lèi)型

00001至0xxxx-開(kāi)關(guān)量輸出                                                                                              10001至1xxxx-開(kāi)關(guān)量輸入                                                                                          30001至3xxxx-模擬量輸入                                                                                          40001至4xxxx-保持寄存器

Count       通訊的數(shù)據(jù)個(gè)數(shù)(位或字的個(gè)數(shù))

                 注意:Modbus主站可讀/寫(xiě)的最大數(shù)據(jù)量為120個(gè)字(是指每一個(gè) MBUS_MSG 指令)

DataPtr數(shù)據(jù)指針:1. 如果是讀指令,讀回的數(shù)據(jù)放到這個(gè)數(shù)據(jù)區(qū)中

 2. 如果是寫(xiě)指令,要寫(xiě)出的數(shù)據(jù)放到這個(gè)數(shù)據(jù)區(qū)中

格式為(&vb0指針格式)

Done讀寫(xiě)功能完成位

Error錯(cuò)誤代碼 只有在 Done 位為1時(shí),錯(cuò)誤代碼才有效

錯(cuò)誤代碼:0=無(wú)錯(cuò)誤

          1=響應(yīng)校驗(yàn)錯(cuò)誤

          2=未用

          3=接收超時(shí)(從站無(wú)響應(yīng))

          4=請(qǐng)求參數(shù)錯(cuò)誤

          5=Modbus/自由口未使能

          6=Modbus正在忙于其它請(qǐng)求

          7=響應(yīng)錯(cuò)誤(響應(yīng)不是請(qǐng)求的操作)

          8=響應(yīng)CRC校驗(yàn)和錯(cuò)誤

          101= 從站不支持請(qǐng)求的功能

          102= 從站不支持?jǐn)?shù)據(jù)地址

          103= 從站不支持此種數(shù)據(jù)類(lèi)型

          104= 從站設(shè)備故障

          105= 從站接受了信息,但是響應(yīng)被延遲

          106= 從站忙,拒絕了該信息

          107= 從站拒絕了信息

          108= 從站存儲(chǔ)器奇偶錯(cuò)誤

常見(jiàn)的錯(cuò)誤及其錯(cuò)誤代碼:

1. 如果多個(gè) MBUS_MSG 指令同時(shí)使能會(huì)造成6號(hào)錯(cuò)誤

2. 從站 delay 參數(shù)設(shè)的時(shí)間過(guò)長(zhǎng)會(huì)造成3號(hào)錯(cuò)誤

3. 從站掉電或不運(yùn)行,網(wǎng)絡(luò)故障都會(huì)造成3號(hào)錯(cuò)誤


在從站S7-200PLC中編寫(xiě)

從站初始化請(qǐng)求

西門(mén)子小型系列S7-200MODBUS RTU通訊篇03 

初始化Modbus從站協(xié)議

 

Mode:         模式選擇,啟動(dòng)/停止MODBUS,1=啟動(dòng);0=停止

Address:     從站地址,MODBUS從站地址,取值1~247

Baud:         波特率,可選1200,2400,4800,9600,19200,38400,57600,115200

Parity:         奇偶校驗(yàn),0=無(wú)校驗(yàn);1=奇校驗(yàn);2=偶校驗(yàn)

Delay:         延時(shí),附加字符間延時(shí),缺省值為0

MaxIQ:       最大I/Q位,參與通信的最大I/O點(diǎn)數(shù),S7-200的I/O映像區(qū)為128/128,缺省值為128

MaxAI:       最大AI字?jǐn)?shù),參與通信的最大AI通道數(shù),可為16或32

MaxHold:   最大保持寄存器區(qū),參與通信的V存儲(chǔ)區(qū)字(VW)

HoldStart:   保持寄存器區(qū)起始地址,以&VBx指定(間接尋址方式)

 

Done:        初始化完成標(biāo)志,成功初始化后置1

Error:         初始化錯(cuò)誤代碼

 

在本例子中,設(shè)置從站地址為12

Port0 通訊波特率為9600

無(wú)校驗(yàn)

可以使用的S7-200最大數(shù)字量輸入輸出點(diǎn)數(shù)為128

可以使用的S7-200最大模擬量輸入寄存器字?jǐn)?shù)為32

可以使用的V區(qū)寄存器地址字?jǐn)?shù)為100, 起始地址為VB1000

智通教育是東莞市專(zhuān)業(yè)的PLC編程培訓(xùn)機(jī)構(gòu),平時(shí)會(huì)不定期的在網(wǎng)站發(fā)布一些PLC電氣自動(dòng)化課程相關(guān)的知識(shí)點(diǎn),有興趣的同學(xué)歡迎大家關(guān)注本網(wǎng)站!