產(chǎn)品分類(lèi)品牌分類(lèi)
-
西門(mén)子PLC模塊 西門(mén)子CPU 西門(mén)子DP電纜 西門(mén)子模塊 西門(mén)子變頻器 西門(mén)子電源 西門(mén)子連接器 西門(mén)子軟啟動(dòng) 西門(mén)子軸卡 西門(mén)子數(shù)控系統(tǒng) 西門(mén)子工控機(jī) 西門(mén)子PLC 西門(mén)子觸摸屏 西門(mén)子交換機(jī) 西門(mén)子導(dǎo)軌 西門(mén)子驅(qū)動(dòng)器 西門(mén)子NCU備件 ET200 DP接頭 S7-1500 S7-400 S7-300 1200 200SMART 200CN PLC 電線電纜
西門(mén)子PLC模塊6ES7214-1HF40-0XB0參數(shù)詳細(xì)
西門(mén)子PLC模塊6ES7214-1HF40-0XB0參數(shù)詳細(xì)
西門(mén)子PLC編程中的Modbus通訊,,詳細(xì)教程.
(1)Modbus通訊
S7-200的Modbus通訊:
S7-200只支持Modbus RTU協(xié)議,,不支持Modbus ASCII協(xié)議;
Modbus是一種單主站的主/從通信模式,。一條Modbus網(wǎng)絡(luò)上同時(shí)只能有一臺(tái)主站,,從站可以有若干個(gè)(如下圖所示),。從站的地址范圍為1-247;
一個(gè)Modbus通訊的傳輸字符應(yīng)包括一個(gè)起始位,,8個(gè)數(shù)據(jù)位,,1個(gè)或0個(gè)校驗(yàn)位(奇偶校驗(yàn)或無(wú)校驗(yàn)可選擇),以及一個(gè)停止位,。
在S7-200 CPU通信口上實(shí)現(xiàn)的是RS485半雙工通信,,使用的是S7-200的自由口功能。
上圖是一個(gè)典型的主站和從站的網(wǎng)絡(luò)結(jié)構(gòu),,對(duì)于Modbus主站而言可以對(duì)從站進(jìn)行讀或者寫(xiě)的操作,,其中它所支持的功能碼(FC,F(xiàn)unction Code)包括主站左側(cè)表格中所述功能,,例如功能碼為'01'時(shí)表示讀取單個(gè)/多個(gè)線圈(DO)狀態(tài)或功能碼為'04'時(shí)表示讀取單個(gè)/多個(gè)輸入寄存器(AI)狀態(tài),。
而對(duì)于從站,我們只需要把Modbus的標(biāo)準(zhǔn)地址和從站的地址對(duì)應(yīng)關(guān)系建立好就可以了,,S7-200的從站與Modbus標(biāo)準(zhǔn)的對(duì)應(yīng)關(guān)系如從站右側(cè)表格所示,。
表中左側(cè)是Modbus標(biāo)準(zhǔn)地址碼,其中1-128對(duì)應(yīng)于S7-200的,,10001-10128對(duì)應(yīng)于S7-200的I0.0-I15.7,,30001-30032對(duì)應(yīng)于AIW0-AIW62,40001-4xxx對(duì)應(yīng)的是S7-200的保持寄存器(V區(qū)),,它的范圍是T-T+2*(xxxx-1),,T表示的是V區(qū)的起始地址,這一點(diǎn)由Modbus從站的指令所決定的,。
Modbus的主站指令叫做MBUS_MSG,,通過(guò)這條指令可以將Modbus的標(biāo)準(zhǔn)報(bào)文發(fā)給從站,例如在上圖例子當(dāng)中從站的個(gè)字節(jié)是03,,表示的是從站的地址,,F(xiàn)C功能碼為03,表示的是讀取單個(gè)/多個(gè)保存寄存器,,Modbus標(biāo)準(zhǔn)地址是40001,,長(zhǎng)度是10。隨著功能碼的不同,,報(bào)文的格式會(huì)發(fā)生相應(yīng)的變化,,具體的報(bào)文格式需要去參閱Modbus的通訊手冊(cè)。
從站的指令時(shí)MBUS _SLAVE,,在接到主站發(fā)給它的報(bào)文后會(huì)根據(jù)報(bào)文的需求返回報(bào)文,,比如在上圖例子中返回的格式是個(gè)字節(jié)為從站的地址,第二個(gè)為功能碼,,第三個(gè)是數(shù)據(jù)返回給主站,,這樣就完成了一次Modbus通訊的請(qǐng)求與應(yīng)答的過(guò)程,。
(2)Modbus庫(kù)文件的安裝和調(diào)用
如果想要應(yīng)用Modbus指令庫(kù),那么首先需要到因特網(wǎng)上或者向西門(mén)子的客服人員申請(qǐng)名稱(chēng)為'Toolbox_V32-STEP 7-Micro WIN' 的指令庫(kù),,將它解壓并且安裝到Micro WIN當(dāng)中就可以使用了,,安裝后會(huì)在Micro WIN的庫(kù)文件當(dāng)中出現(xiàn)上圖標(biāo)記的三個(gè)庫(kù),其中Port0和Port1都可以做Modbus Master,,而Slave只有Port0口可以做,。
(3)Modbus庫(kù)文件的使用
使用方法很簡(jiǎn)單,打開(kāi)Modbus主站指令庫(kù)會(huì)有相應(yīng)的指令塊出現(xiàn),,直接把指令塊拖拽到程序當(dāng)中進(jìn)行調(diào)用就可以了,。
在調(diào)用Modbus庫(kù)指令的時(shí)候,需要注意一定記得為Modbus庫(kù)文件分配庫(kù)存儲(chǔ)區(qū),。具體的方法是右鍵單擊庫(kù),,然后選擇庫(kù)存儲(chǔ)區(qū),在彈出來(lái)的對(duì)話框當(dāng)中可以選擇建議地址,,自動(dòng)分配一個(gè)程序里面不會(huì)用到的地址區(qū)間,,也可以人為地手動(dòng)填寫(xiě)起始地址,這個(gè)區(qū)間在程序當(dāng)中不可以和其他的數(shù)據(jù)區(qū)相沖突,,否則Modbus功能將不正常,。
所謂的庫(kù)存儲(chǔ)區(qū)其實(shí)就是Modbus指令庫(kù)能夠正常工作所必須的一部分背景數(shù)據(jù),只要給它分配好區(qū)間并保證不與程序當(dāng)中其他的地址相沖突就可以了,。
(4)Modbus從站指令
從站指令一共有兩條,,條是從站的初始化指令(MBUS_INIT),另一條是MBUS_SLAVE從站指令,,在Modbus從站的初始化指令當(dāng)中涉及哪些內(nèi)容呢,?
首先,個(gè)引腳Mode表示等于1的時(shí)候是啟動(dòng)Modbus,,等于0的時(shí)候是關(guān)閉Modbus,,Addr表示的是這個(gè)從站的從站地址,Baud表示波特率,,Parity是奇偶校驗(yàn),0是無(wú)校驗(yàn),,1是奇校驗(yàn),,2是偶校驗(yàn),Delay是附加字符之間的延遲,,MaxIQ表示的是大I/Q地址(默認(rèn)128),,MaxAI表示的是大AI長(zhǎng)度(默認(rèn)32),MaxHold表示的是大的V存儲(chǔ)區(qū)(VW),,關(guān)鍵的是HoldStart,,表示的是V區(qū)起始地址(對(duì)應(yīng)40001),,在之前已經(jīng)提到過(guò)S7-200作為從站的時(shí)候,它的V區(qū)地址對(duì)應(yīng)于Modbus標(biāo)準(zhǔn)地址的起始地址是可更改的,,那么就在這里進(jìn)行設(shè)定,,在本例中如果HoldStart寫(xiě)的是VB0,那么40001對(duì)應(yīng)的地址就是VW0,,40002對(duì)應(yīng)的地址是VW2,,40003對(duì)應(yīng)的地址是VW4,以此類(lèi)推,,每一個(gè)標(biāo)準(zhǔn)的Modbus地址碼對(duì)應(yīng)的是一個(gè)Word,,以字為單位,同樣如果這里設(shè)的是VB100,,那么40001對(duì)應(yīng)的就是VW100,,40002對(duì)應(yīng)的是VW102,以此類(lèi)推