西門(mén)子S7-200與變頻器MODBUS通訊實(shí)例詳解
西門(mén)子S7-200PLC簡(jiǎn)介,西門(mén)子plc s7-200
西門(mén)子S7-200PLC在實(shí)時(shí)模式下具有速度快,具有通訊功能和較高的生產(chǎn)力的特點(diǎn)。一致的模塊化設(shè)計(jì)促進(jìn)了低性能定制產(chǎn)品的創(chuàng)造和可擴(kuò)展性的解決方案。來(lái)自西門(mén)子的S7 - 200微型PLC可以被當(dāng)作獨(dú)立的微型PLC解決方案或與其他控制器相結(jié)合使用。
免費(fèi)學(xué)習(xí)PLC編程技術(shù),包吃住還有工資...
Modbus通訊協(xié)議簡(jiǎn)介
Modbus是由Modicon(現(xiàn)為施耐德電氣公司的一個(gè)品牌)在1979年發(fā)明的,是全球第一個(gè)真正用于工業(yè)現(xiàn)場(chǎng)的總線協(xié)議。
ModBus網(wǎng)絡(luò)是一個(gè)工業(yè)通信系統(tǒng),由帶智能終端的可編程序控制器和計(jì)算機(jī)通過(guò)公用線路或局部專用線路連接而成。其系統(tǒng)結(jié)構(gòu)既包括硬件、亦包括軟件。它可應(yīng)用于各種數(shù)據(jù)采集和過(guò)程監(jiān)控。
ModBus網(wǎng)絡(luò)只有一個(gè)主機(jī),所有通信都由他發(fā)出。網(wǎng)絡(luò)可支持247個(gè)之多的遠(yuǎn)程從屬控制器,但實(shí)際所支持的從機(jī)數(shù)要由所用通信設(shè)備決定。采用這個(gè)系統(tǒng),各PC可以和中心主機(jī)交換信息而不影響各PC執(zhí)行本身的控制任務(wù)。
1 MODBUS RTU協(xié)議在S7-200中的應(yīng)用原理
1.1 MODBUS RTU協(xié)議與S7-200相互關(guān)系簡(jiǎn)介
S7-200 CPU上的通訊口Port0可以支持MODBUS RTU協(xié)議,成為MODBUS RTU從站。此功能是通過(guò)S7-200的自由口通訊模式實(shí)現(xiàn),因此可以通過(guò)無(wú)線數(shù)據(jù)電臺(tái)等慢速通訊設(shè)備傳輸。
想在S7-200 CPU與其他支持MODBUS RTU的設(shè)備使用MODBUS RTU協(xié)議通訊,需要由有S7-200 CPU做MODBUS主站。S7-200 CPU做主站必須由用戶自己用自由口模式,按相關(guān)協(xié)議編程。
2 從站指令的用法:
S7-200控制系統(tǒng)應(yīng)用中,MODBUS RTU從站指令庫(kù)只支持CPU上的通訊0口(Port0)。要實(shí)現(xiàn)MODBUS RTU通訊,需要Step7-Micro/WIN32 V3.2以上版本的編程軟件,而且須安裝Step7-Micro/WIN32 V3.2 Instruction Library(指令庫(kù))。MODBUS RTU功能是通過(guò)指令庫(kù)中預(yù)先編好的程序功能塊實(shí)現(xiàn)的。
MODBUS RTU協(xié)議在S7-200中應(yīng)用的基本過(guò)程
(1) 首先檢查S7-200控制系統(tǒng)中所用Micro/WIN軟件版本,應(yīng)當(dāng)是Step7-Micro/WIN V3.2以上版本。
(2) 檢查Micro/WIN的指令樹(shù)中是否存在MODBUS RTU從站指令庫(kù)(圖1),庫(kù)中應(yīng)當(dāng)包括MBUS_INIT和MBUS_SLAVE兩個(gè)子程序。如果沒(méi)有,須安裝Micro/WIN32 V3.2 Instruction Library(指令庫(kù))軟件包
編程時(shí)使用SM0.1—調(diào)用子程序MBUS_INIT進(jìn)行初始化,使用SM0.0—調(diào)用研究MBUS_SLAVE,并指定相應(yīng)參數(shù)。關(guān)于參數(shù)的詳細(xì)說(shuō)明,可在子程序的局部變量表中找到。
調(diào)用MODBUS通訊指令庫(kù)
參數(shù)意義如下:
●模式選擇:啟動(dòng)/停止MODBUS,1=啟動(dòng);0=停止;
● 從站地址:MODBUS從站址,取值1~247;
● 波特率:可選1200,2400,4800,9600,19200,38400,57600;
● 奇偶校驗(yàn):0=無(wú)校驗(yàn);1=奇校驗(yàn);2=偶校驗(yàn);
● 延時(shí):附加字符間延時(shí),缺省值為0;
● 最大I/Q位:參與通訊的最大I/O點(diǎn)數(shù),S7-200I/O映像區(qū)為128/128,缺省值為128;
● 最大AI字?jǐn)?shù):參與通訊的最大AI通道數(shù),可為16或32;
● 最大保持寄存器區(qū):參與通訊的V存儲(chǔ)區(qū)字(VW);● 保持寄存器區(qū)起始址:以&VBx指定(間接尋址方式);
● 初始化完成標(biāo)志:成功初始化后置1;
● 錯(cuò)誤代碼:0=無(wú)錯(cuò)誤。
1.3 注意的問(wèn)題
調(diào)用Step7-Mciro/WIN32 V3.2 Instruction Library(指令庫(kù))需要分配庫(kù)指令數(shù)據(jù)區(qū)(Library Memory)。庫(kù)指令數(shù)據(jù)區(qū)是相應(yīng)庫(kù)子程序和中斷程序所要用到變量存儲(chǔ)空間。編程時(shí)不分配庫(kù)指令數(shù)據(jù)區(qū),編譯時(shí)會(huì)產(chǎn)生許多相同的錯(cuò)誤。
由子程序參數(shù)HoldStart和MaxHold指定保持寄存器區(qū),是S7-200 CPUV數(shù)據(jù)存儲(chǔ)區(qū)中分配,此數(shù)據(jù)區(qū)不能和庫(kù)指令數(shù)據(jù)區(qū)有任何重疊,否則運(yùn)行時(shí)會(huì)產(chǎn)生錯(cuò)誤,不能正常通訊。注意MODBUS 中保持寄存器區(qū)按“字”尋址,即MaxHold規(guī)定是VW而VB個(gè)數(shù)。
3 主站指令的用法:
1. MODBUS RTU 主站指令庫(kù)的功能是通過(guò)在用戶程序中調(diào)用預(yù)先編好的程序功能塊實(shí)現(xiàn)的,該庫(kù)對(duì) Port 0 和 Port 1 有效。該指令庫(kù)將設(shè)置通信口工作在自由口模式下。
2. MODBUS RTU 主站指令庫(kù)使用了一些用戶中斷功能,編其他程序時(shí)不能在用戶程序中禁止中斷。
3. MODBUS RTU 主站庫(kù)對(duì)CPU的版本有要求。CPU 的版本必須為 2.00 或者 2.01(即訂貨號(hào)為 6ES721*-***23-0BA*),1.22版本之前(包括1.22版本)的 S7-200 CPU 不支持。
使用 MODBUS RTU 主站指令庫(kù),可以讀寫(xiě) MODBUS RTU 從站的數(shù)字量、模擬量 I/O 以及保持寄存器。
要使用 MODBUS RTU 主站指令庫(kù),須遵循下列步驟:
安裝西門(mén)子標(biāo)準(zhǔn)指令庫(kù)
按照要求編寫(xiě)用戶程序調(diào)用 MODBUS RTU 主站指令庫(kù)
MODBUS RTU 主站功能編程
1. 調(diào)用 MODBUS RTU 主站初始化和控制子程序
使用 SM0.0 調(diào)用 MBUS_CTRL 完成主站的初始化,并啟動(dòng)其功能控制:
用 SM0.0 調(diào)用 MODBUS RTU 主站初始化與控制子程序
各參數(shù)意義如下:
a. EN 使能:必須保證每一掃描周期都被使能(使用 SM0.0)
b. Mode 模式:為 1 時(shí),使能 MODBUS 協(xié)議功能;為 0 時(shí)恢復(fù)為系統(tǒng) PPI 協(xié)議
c. Baud 波特率:支持的通訊波特率為1200,2400,4800,9600,19200,38400,57600,115200。
d. Parity 校驗(yàn):校驗(yàn)方式選擇
0=無(wú)校驗(yàn)
1=奇較驗(yàn)
2=偶較驗(yàn)
e. Timeout 超時(shí):主站等待從站響應(yīng)的時(shí)間,以毫秒為單位,典型的設(shè)置值為 1000 毫秒(1 秒),允許設(shè)置的范圍為 1 - 32767。
注意: 這個(gè)值必須設(shè)置足夠大以保證從站有時(shí)間響應(yīng)。
f. Done 完成位:初始化完成,此位會(huì)自動(dòng)置1。可以用該位啟動(dòng) MBUS_MSG 讀寫(xiě)操作(見(jiàn)例程)
g. Error 初始化錯(cuò)誤代碼(只有在 Done 位為1時(shí)有效):
0= 無(wú)錯(cuò)誤
1= 校驗(yàn)選擇非法
2= 波特率選擇非法
3= 模式選擇非法
2. 調(diào)用 MODBUS RTU 主站讀寫(xiě)子程序MBUS_MSG,發(fā)送一個(gè)MODBUS 請(qǐng)求;
調(diào)用MODBUS RTU 主站讀寫(xiě)子程序
各參數(shù)意義如下:
a. EN 使能:同一時(shí)刻只能有一個(gè)讀寫(xiě)功能(即 MBUS_MSG)使能
注意:建議每一個(gè)讀寫(xiě)功能(即 MBUS_MSG)都用上一個(gè) MBUS_MSG 指令的 Done 完成位來(lái)激活,以保證所有讀寫(xiě)指令循環(huán)進(jìn)行(見(jiàn)例程)。
b. First 讀寫(xiě)請(qǐng)求位:每一個(gè)新的讀寫(xiě)請(qǐng)求必須使用脈沖觸發(fā)
c. Slave 從站地址:可選擇的范圍 1 - 247
d. RW 從站地址:0 = 讀, 1 = 寫(xiě)
注意:
1. 開(kāi)關(guān)量輸出和保持寄存器支持讀和寫(xiě)功能
2. 開(kāi)關(guān)量輸入和模擬量輸入只支持讀功能
e. Addr 讀寫(xiě)從站的 選擇讀寫(xiě)的數(shù)據(jù)類型
數(shù)據(jù)地址: 00001 至 0xxxx - 開(kāi)關(guān)量輸出
10001 至 1xxxx - 開(kāi)關(guān)量輸入
30001 至 3xxxx - 模擬量輸入
40001 至 4xxxx - 保持寄存器
f. Count 數(shù)據(jù)個(gè)數(shù) 通訊的數(shù)據(jù)個(gè)數(shù)(位或字的個(gè)數(shù))
注意: MODBUS主站可讀/寫(xiě)的最大數(shù)據(jù)量為120個(gè)字(是指每一個(gè) MBUS_MSG 指令)
g. DataPtr 數(shù)據(jù)指針:
1. 如果是讀指令,讀回的數(shù)據(jù)放到這個(gè)數(shù)據(jù)區(qū)中
2. 如果是寫(xiě)指令,要寫(xiě)出的數(shù)據(jù)放到這個(gè)數(shù)據(jù)區(qū)中
h. Done 完成位 讀寫(xiě)功能完成位
i. Error 錯(cuò)誤代碼:只有在 Done 位為1時(shí),錯(cuò)誤代碼才有效
0 = 無(wú)錯(cuò)誤
1 = 響應(yīng)校驗(yàn)錯(cuò)誤
2 = 未用
3 = 接收超時(shí)(從站無(wú)響應(yīng))
4 = 請(qǐng)求參數(shù)錯(cuò)誤(slave address, MODBUS address, count, RW)
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ù)類型
104 = 從站設(shè)備故障
105 = 從站接受了信息,但是響應(yīng)被延遲
106 = 從站忙,拒絕了該信息
107 = 從站拒絕了信息
108 = 從站存儲(chǔ)器奇偶錯(cuò)誤
常見(jiàn)的錯(cuò)誤:
如果多個(gè) MBUS_MSG 指令同時(shí)使能會(huì)造成 6 號(hào)錯(cuò)誤
從站 delay 參數(shù)設(shè)的時(shí)間過(guò)長(zhǎng)會(huì)造成主站 3 號(hào)錯(cuò)誤
從站掉電或不運(yùn)行,網(wǎng)絡(luò)故障都會(huì)造成主站 3 號(hào)錯(cuò)誤
3. 在 CPU 的 V 數(shù)據(jù)區(qū)中為庫(kù)指令分配存儲(chǔ)區(qū)(Library Memory)
MODBUS Master 指令庫(kù)需要一個(gè)284個(gè)字節(jié)的全局 V 存儲(chǔ)區(qū)。
西門(mén)子 S7200 PLC MODBUS支持的功能碼
功能碼 |
描述 |
1 |
讀取單個(gè)/多個(gè)線圈的實(shí)際輸出狀態(tài)。功能1返回任意數(shù)量輸出點(diǎn)的接通/斷開(kāi)狀態(tài)(Q)。 |
2 |
讀取單個(gè)/多個(gè)線圈的實(shí)際輸入狀態(tài)。功能2返回任意數(shù)量的輸入點(diǎn)的接通/斷開(kāi)狀態(tài)(I) |
3 |
多個(gè)保持寄存器。功能3返回V存儲(chǔ)器的內(nèi)容。保持寄存器在MODBUS下是字類型,在一個(gè)請(qǐng)求中最多可讀120個(gè)字。 |
4 |
讀單個(gè)/多個(gè)輸入寄存器,返回模擬輸入值。 |
5 |
寫(xiě)單個(gè)線圈(實(shí)際輸出)。功能5將實(shí)際輸出點(diǎn)設(shè)置為指定值。該輸出點(diǎn)不是被強(qiáng)制,用戶程序可以重寫(xiě)由MODBUS的請(qǐng)求而寫(xiě)入的值。 |
6 |
寫(xiě)單個(gè)保持寄存器。功能6寫(xiě)一個(gè)單個(gè)保持寄存器的值到S7-200的V存儲(chǔ)區(qū)。 |
15 |
寫(xiě)多個(gè)線圈(實(shí)際輸出)。功能15寫(xiě)多個(gè)實(shí)際輸出值到S7-200的Q映像區(qū)。起始輸出點(diǎn)必須是一個(gè)字節(jié)的開(kāi)始(如Q0.0或Q2.0),并且要寫(xiě)得輸出的數(shù)量是8的倍數(shù)。這是MODBUS從站協(xié)議指令的限定。這些點(diǎn)不是被強(qiáng)制,用戶程序可以重寫(xiě)由MODBUS的請(qǐng)求而寫(xiě)入的值。 |
16 |
寫(xiě)多個(gè)保持寄存器。功能16寫(xiě)多個(gè)保持寄存器到S7-200的V區(qū)。在一個(gè)請(qǐng)求中最多可寫(xiě)120字。 |
例 國(guó)產(chǎn)精驅(qū)變頻器與S7200 CPU224XP PLC通訊
(1)設(shè)置變頻器的通訊參數(shù)
參數(shù) |
設(shè)置值 |
說(shuō)明 |
P0.01 |
4 |
啟動(dòng)命令改為串行通訊 |
P0.03 |
2 |
頻率給定改為串行通訊 |
P3.09 |
133 |
9600波特率 無(wú)奇偶校驗(yàn) |
P3.10 |
3 |
從站地址 3 |
硬件接線
S7-200通訊口1
第3腳-----RS485+ 第8腳----RS485-
(3) 初始化程序
變頻器的控制地址,因?yàn)樽冾l器控制地址為2000H,所以換位10進(jìn)制為8192,MUDBUS地址40001開(kāi)頭,需要加1,控制地址為8193,功能碼4為讀寫(xiě)寄存器,因?yàn)閱?/P>
動(dòng)變頻器的控制命令為17,所以傳送17到VW200則啟動(dòng)變頻器
(5 ) 設(shè)置變頻器的給定頻率
變頻器的通信控制字節(jié)
西門(mén)子通訊MUDBUS協(xié)議在工控上使用最廣泛的一種協(xié)議,具備以下幾個(gè)特點(diǎn)
1 )使用簡(jiǎn)單,利用MUDBUS庫(kù)文件簡(jiǎn)單的幾條指令就能實(shí)現(xiàn)與智能儀表,變頻器,打印機(jī)等設(shè)備進(jìn)行通訊,且無(wú)需加其他硬件上的成本MODBUS總線廣泛應(yīng)用于儀器儀表、智能高低壓電器、變送器、可編程控制器、人機(jī)界面、變頻器、現(xiàn)場(chǎng)智能設(shè)備等諸多領(lǐng)域。MODBUS與其他的現(xiàn)場(chǎng)總線和工業(yè)網(wǎng)絡(luò)相比有以下幾個(gè)顯著特點(diǎn):
2)標(biāo)準(zhǔn)、開(kāi)放:用戶可以免費(fèi)放心的使用
MODBUS協(xié)議,不用繳納許可費(fèi)用,不會(huì)涉及侵犯知識(shí)產(chǎn)權(quán)。目前支持MODBUS的廠一家超過(guò)400家,支持MODBUS的產(chǎn)品超過(guò)600種。在中國(guó),MODBUS已經(jīng)成為國(guó)家標(biāo)準(zhǔn)GB/T19582-2008。據(jù)不完全統(tǒng) 計(jì):截止到2007年MODBUS的節(jié)點(diǎn)安裝數(shù)量已經(jīng)超過(guò)了1000萬(wàn)個(gè)。
3)應(yīng)用廣泛:凡MODBUS協(xié)議設(shè)備具有RS232/485接口的都可以使用本產(chǎn)品實(shí)現(xiàn)與現(xiàn)場(chǎng)總線PROFIBUS的互連。如:具有MODBUS協(xié)議接口的變頻器、智能高低壓電器、電機(jī)啟動(dòng)保護(hù)裝置、電量測(cè)量裝置、智能現(xiàn)場(chǎng)測(cè)量設(shè)備、各種變送器及儀表等。
4)MODBUS可以支持較多類型的電氣接口:MODBUS 總線協(xié)議采用主站查詢從站的方式,物理接口可以是RS232、RS485、RS422、RJ45,還可以在各種介質(zhì)上傳送,如雙絞線、光纖、無(wú)線射頻等.
5)MODBUS的幀格式較為簡(jiǎn)單、緊湊,格式規(guī)范,易于傳輸,通俗易懂。用戶使用容易,廠商開(kāi)發(fā)簡(jiǎn)單。用戶不必了解PROFIBUS和MODBUS技術(shù)細(xì)節(jié),只需參考說(shuō)明手冊(cè)及提供的應(yīng)用實(shí)例,按要求完成配置,不需要復(fù)雜的編程,即可在短時(shí)間內(nèi)實(shí)現(xiàn)設(shè)備間的連接通信。
6)透明通信:用戶可以依照PROFIBUS通信數(shù)據(jù)區(qū)和MODBUS通信數(shù)據(jù)區(qū)的映射關(guān)系,實(shí)現(xiàn)PROFIBUS到MODBUS之間的數(shù)據(jù)透明通信。
免責(zé)聲明:本文系網(wǎng)絡(luò)轉(zhuǎn)載或改編,版權(quán)歸原作者所有!