S7200的MODBUS詳細(xì)應(yīng)用示例_第1頁
S7200的MODBUS詳細(xì)應(yīng)用示例_第2頁
S7200的MODBUS詳細(xì)應(yīng)用示例_第3頁
S7200的MODBUS詳細(xì)應(yīng)用示例_第4頁
S7200的MODBUS詳細(xì)應(yīng)用示例_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、S7200的MODBUS細(xì)應(yīng)用示例<PLC200MODBUS協(xié)議配置使用方法>修訂歷史記錄日期版本說明(修改、補(bǔ)充、刪除)作者審核<2009/4/3>第一版(已完)研發(fā)部孫寶東研發(fā)部王振岳5.13庫存儲(chǔ)區(qū)補(bǔ)充說明(36頁)注釋:紅色字體為注意點(diǎn);藍(lán)色為修改補(bǔ)充;紫色為問題總結(jié);茶色為暫時(shí)刪除;綠色為住宿前言錯(cuò)誤!未定義書簽。第一章使用Modbus協(xié)議庫錯(cuò)誤!未定義書簽。1 .使用Modbus主設(shè)備協(xié)議的要求62 .使用Modbus從站設(shè)備協(xié)議的要求73 .Modbus主設(shè)備協(xié)議的初始化和執(zhí)行時(shí)間74 .Modbus從站協(xié)議的初始化和執(zhí)行時(shí)間.85 .Modbus主設(shè)備尋

2、址86 .Modbus從站尋址87 .Modbus主設(shè)備MBUSMSG行錯(cuò)誤代碼.108 .Modbus從站協(xié)議執(zhí)行錯(cuò)誤代碼119 .Modbus主設(shè)備高級(jí)用戶信息11第二章使用Modbus主設(shè)備指令1410 141 .MBUS_CT廂令(初始化主設(shè)備)152 .MBUSMSG令16第三章使用Modbus從站指令錯(cuò)誤!未定義書簽。前言221 .MBUS_INIT指令(初始化從站)錯(cuò)誤!未定義書簽2 .MBUS_SLAVE令錯(cuò)誤!未定義書簽。久常見問題26第四章下載與通訊測(cè)試錯(cuò)誤!未定義書簽。1 .編譯、下載錯(cuò)誤!未定義書簽。2 .通訊31附表主從站指令配置表37S7200Modbus主從協(xié)議版

3、本(0。初稿版)制作:研發(fā)部前言:Modbus從站協(xié)議指令可以配置S7-200,將其用作ModbusRTlM站)與Modbus主設(shè)備通訊。Modbus主設(shè)備協(xié)議指令可以配置S7-200,將其用作ModbusRT也設(shè)備,與一個(gè)或多個(gè)Modbus從站通訊。Modbus指令安裝在STEP7Micro/WIN指令樹的"協(xié)議庫"文件夾中。有了這些新指令,您可以將S7-200用作Modbus設(shè)備。當(dāng)您在程序中加入Modbus指令時(shí),會(huì)在項(xiàng)目中自動(dòng)增加一個(gè)或多個(gè)相關(guān)子程序。Modbus主設(shè)備協(xié)議庫有兩個(gè)版本。一個(gè)版本使用CPU勺端口0,另一個(gè)則使用CPU勺端口1。端口1協(xié)議庫的POUg中

4、帶有"_P1"(MBUS_CTRL_P1)表示POU用CPUk的端口1。在其它方面,這兩個(gè)Modbus主設(shè)備協(xié)議庫完全一致。Modbus從站協(xié)議庫僅支持端口0通訊。在STEP7Micro/WIN中,ModbusRTU協(xié)議和USS協(xié)議操作庫位于操作樹的“庫”文件夾中。MODBUSi數(shù)庫要求STEP7Micro/WIN為V3.2或更高版本。FVog.sTiElle/,.$4«uChM生口“MDEmfmc.kmtjl.*«一HLav:_alOMkjiiCormn-Qtaand-jLA£<wip«»£eE*tAuMM

5、i*ftwRsni1Mdhillk4eigerW-jMjn-MErijtJU3*E4flDorJteiHfliMHebgRECwM"rfdSW/R(uieUaMgT0JX|Tira-j一lAxfaMBM靜工J*說邛力3lnMBUSJZTHLj_TMB4,MrsG三|Medbwi%l1加1.田oH»WS_CTRt_PIO_«&5_E"M'LdtusSlaePa*0|m1Ol口MBUS即nMBUS&L0Vr“口口口門口口門In-oununFrFTr!USSjETRLU55firnWUSS-WM.*!US5_WFM_Wuss.wmuUS

6、S_WFM,H5li加工J|y55_wrT_piUSSjETaLpiUS5_WM_W_mU55_W*i_C_MLIS5_1=ffRrt_fR_PIUSSWFhLWJMUISJWRhUBjFIUss日pi圖1:添加函數(shù)庫第一章使用Modbus協(xié)議庫前言:這些庫是附加函數(shù)庫,并非組態(tài)軟件STEP7Micro/WIN的組成部分。您如果需要使用ModbusRTU協(xié)議,必須先安裝“STEP7Micro/WIN32ToolboxV1.0"(包括庫),然后安裝運(yùn)行“STEP7Micro/WIN"。就會(huì)出現(xiàn)如圖1的庫。注意:這個(gè)函數(shù)庫包含可以在STEP7Micro/WINV3.2中使用的M

7、odbusRTU協(xié)議庫和USS協(xié)議庫。如果您安裝了STEP7Micro/WINV4,0SP5或者更高版本,那么操作庫中就會(huì)包含下列函數(shù):ModbusRTUMasterV1.2對(duì)應(yīng)端口0和端口1,ModbusRTUSlaveV1.0對(duì)應(yīng)端口0,USSprotocolV2.3對(duì)應(yīng)端口0和端口1下面我對(duì)ModbusRT咯指令功能與使用方法分別加以講解:Modbus主設(shè)備協(xié)議指令使用下列S7-200資源:,初始化Modbus主設(shè)備協(xié)議可以為Modbus主設(shè)備協(xié)議通訊指定專用CPU端口。當(dāng)CPU端口被用于Modbus主設(shè)備協(xié)議通訊時(shí))就無法用于任何其它用途,包括與STEP7-Micro/WIN通訊。MB

8、US_CTRL指令控制將端口0分配給Modbus協(xié)議或PPI,Mode為1時(shí)分配給Modbus協(xié)議)為0是分配給PPIo將S7-200上的模式開關(guān)設(shè)為“STOP”,端口零也會(huì)被復(fù)位為PPI協(xié)議模式。MBUS_CTRL_P1指令(來自端口1協(xié)議庫)控制將端口1分屈給Modbus主設(shè)備協(xié)議或PPIoModbus主設(shè)備協(xié)議指令影響與CPU通訊端口中自由端口通訊相關(guān)的所有SM位置。Modbus主設(shè)備協(xié)議指令使用3個(gè)子程序和1個(gè)中斷例程。-Modbus主設(shè)備協(xié)議指令要求兩個(gè)Modbus主設(shè)備指令和支持例程有1620個(gè)字節(jié)的程序空間。-Modbus主設(shè)備協(xié)議指令的變量要求284個(gè)字節(jié)的V存儲(chǔ)器程序塊。該程

9、序塊的起始地址由用戶指定)專門保留用于Modbus變量。-S7-200CPU必須是固化程序修訂版2.00或最好支持Modbus主設(shè)備協(xié)議庫(CPUMLFB21x-2xx23-0XB0)。-Modbus主設(shè)備協(xié)議庫為某些功能使用用戶中斷。用戶中斷不能被用戶程序禁用。提示:欲將CPU通訊端口操作更換回PPI以便與STEP7-Micro/WIN通訊,將MBUS_CTRL指令的模式參數(shù)設(shè)置為零(0)。您還可僅將S7-200上的模式開關(guān)設(shè)置到STOP模式位置。這些方法中的任一個(gè)將設(shè)置CPU通訊端口與STEP7-Micro/WIN通訊。2.使用Modbus從站協(xié)議的要求Modbus從站協(xié)議指令使用下列S7

10、-200資源:,初始化Modbus從站協(xié)議為Modbus從站協(xié)議通訊指定端口0。當(dāng)端口0被用于Modbus從站協(xié)議通訊時(shí),就無法用于任何其它用途,包括與STEP7-Micro/WIN通訊。MBUS_INIT指令控制將端口0指定給Modbus從站協(xié)議或PPIo-Modbus從站協(xié)議指令影響與端口0中自由端口通訊相關(guān)的所有SM位置。Modbus從站協(xié)議指令使用3個(gè)子程序和2個(gè)中斷例程。,Modbus從站協(xié)議指令要求兩個(gè)Modbus主設(shè)備指令和支持例程有1857個(gè)字節(jié)的程序空間。-Modbus從站協(xié)議指令的變量要求779個(gè)字節(jié)的V存儲(chǔ)器程序塊。該程序塊的起始地址由用戶指定)專門保留用于Modbus變

11、量。一定要設(shè)置V存儲(chǔ)區(qū),不然編譯時(shí)會(huì)出現(xiàn)錯(cuò)誤信息,設(shè)置過程很簡(jiǎn)單:點(diǎn)擊“文件”-“庫存儲(chǔ)區(qū)”,出現(xiàn)如下畫面(進(jìn)行設(shè)置即可):提示:欲將端口0操作更換回PPI以便與STEP7-Micro/WIN通訊,用另一條MBUS_INIT指令重新指定端口0。您還可以將S7-200上的模式開關(guān)設(shè)為STOP模式。這樣會(huì)將參數(shù)復(fù)原為端口0。Modbus主設(shè)備協(xié)議每次掃描都需要少量的時(shí)間來執(zhí)行MBUS_CTRL指令。MBUS_CTRL初始化Modbus主設(shè)備(首次掃描)需要夫約1.11毫秒的時(shí)間,以后掃描需要大約0.41毫秒。當(dāng)MBUS_MSG子程序執(zhí)行請(qǐng)求時(shí),將執(zhí)行掃描時(shí)間。工多數(shù)時(shí)間用于計(jì)算ModbusCRC的

12、請(qǐng)求和應(yīng)答。CRC(循環(huán)冗余檢驗(yàn))確保通訊消息的完整性。對(duì)于請(qǐng)求和應(yīng)答中的每個(gè)字,掃描時(shí)間會(huì)延長(zhǎng)約1.85毫秒。最大請(qǐng)求/應(yīng)答(讀取或?qū)懭?20個(gè)字)使掃描時(shí)間延長(zhǎng)約222毫秒。當(dāng)在從站中接收應(yīng)答并至少發(fā)出請(qǐng)求時(shí),主要是讀取請(qǐng)求在延長(zhǎng)掃描時(shí)間。當(dāng)將數(shù)據(jù)發(fā)送到從站并至少收到應(yīng)答時(shí),主要是寫入請(qǐng)求在延長(zhǎng)掃描時(shí)間。4. Modbus從站協(xié)議的初始化和執(zhí)行時(shí)間Modbus通訊使用CRC(循環(huán)冗余檢驗(yàn))確保通訊消息的完整性。Modbus從站協(xié)議使用預(yù)先計(jì)算數(shù)值的表格減少處理消息的時(shí)間。該CRC表初始化約需240毫秒。初始化在MBUS_INIT子程序中進(jìn)行,通常在進(jìn)入RUN模式后芯戶程序首次掃描時(shí)執(zhí)行。如

13、果MBUS_INIT子程序和任何其它初始化程序要求的時(shí)間超過500微秒掃描監(jiān)視時(shí)間,您需要復(fù)原監(jiān)視定時(shí)器,并將輸出保持在啟用狀態(tài)(如果擴(kuò)展模塊要求)。輸出模塊監(jiān)視定時(shí)器可用向模塊輸出寫入的方法復(fù)原。請(qǐng)參閱監(jiān)視復(fù)原指令。當(dāng)MBUS_SLAVE子程序執(zhí)行請(qǐng)求時(shí),掃描時(shí)間會(huì)延長(zhǎng)。由于大多數(shù)時(shí)間用于計(jì)算ModbusCRC,對(duì)于請(qǐng)求中和應(yīng)答中的每個(gè)字節(jié),掃描時(shí)間會(huì)延長(zhǎng)約420微秒。最大請(qǐng)求/應(yīng)答(讀取或?qū)懭?20個(gè)字)使掃描時(shí)間延長(zhǎng)約100毫秒。5. Modbus主設(shè)備尋址Modbus地址通常寫作包含數(shù)據(jù)類型和偏移量的5個(gè)字符的數(shù)值。第一個(gè)字符決定數(shù)據(jù)類型,最后四個(gè)字符在數(shù)據(jù)類型中選擇適當(dāng)?shù)臄?shù)值。然后,

14、Modbus主設(shè)備指令將地址映射至正確的功能,以便發(fā)送到從站。Modbus主設(shè)備指令支持下列Modbus地址:00001至09999是離散輸出(線圈)10001至19999是離散輸入(觸點(diǎn))30001至39999是輸入寄存器(通常是模擬量輸入)40001至49999是保持寄存器所有Modbus地址均以1為基位,表示第一個(gè)數(shù)據(jù)值從地址1開始。有效地址范圍將取決于從站。不同的從站將支持不同的數(shù)據(jù)類型和地址范圍。6. Modbus從站尋址Modbus地址通常被寫為包含數(shù)據(jù)類型和偏移量的5個(gè)字符的數(shù)值。第一個(gè)字符決定數(shù)據(jù)類型,最后四個(gè)字符在數(shù)據(jù)類型中選擇適當(dāng)?shù)臄?shù)值。然后,Modbus主設(shè)備將地址映射至

15、正確的功能。Modbus從站指令支持下列地址:00001至00128是映射至Q0.0-Q15.7的離散輸出10001至10128是映射至I0.0-I15.7的離散輸30001至30032是映射至AIW0至AIW62的模擬輸入寄存器40001至4xxxx是映射至V存儲(chǔ)器的保持寄存器。所有Modbus地址均以1為基位。下表顯示映射至S7-200地址的Modbus地址。Modbus地址S7-200地址00001Q0.000002Q0.1000030012700128100011000210003101271012830001300023000330032400014000240003Q0.2Q15.

16、6Q15.7I0.0I0.1I0.2I15.6I15.7AIW0AIW2AIW4AIW62HoldStartHoldStart+24xxxxHoldStart+2x(xxxx-1)Modbus從站協(xié)議允許您限制Modbus主設(shè)備可存取的輸入、輸出、模擬輸入和保持寄存器(V存儲(chǔ)器)數(shù)量。MBUS_INIT指令的MaxlQ參數(shù)指定Modbus主設(shè)備無許存取的離散輸入或輸出(I或Q)的最大數(shù)目。MBUS_INIT指令的MaxAI參數(shù)指定Modbus主設(shè)備無許存取的輸入寄存器(AIW)的最大數(shù)目。MBUS_INIT指令的MaxHold參數(shù)指定Modbus主設(shè)備允許存取的保持寄存器(V存儲(chǔ)器字)的最大數(shù)

17、目。請(qǐng)參閱MBUS_INIT指令說明,了解有關(guān)為Modbus從站設(shè)定存儲(chǔ)器限制的進(jìn)一步詳情。7. Modbus主設(shè)備MBUS_MSG執(zhí)行錯(cuò)誤代碼MBUS_MSG錯(cuò)誤代碼說明0無錯(cuò)誤1應(yīng)答時(shí)奇偶校驗(yàn)錯(cuò)誤:僅當(dāng)使用偶校驗(yàn)或奇校驗(yàn)時(shí)才會(huì)發(fā)生。傳輸被干擾,可能會(huì)收到不正確的數(shù)據(jù)。該錯(cuò)誤通常是由電氣故障(例如錯(cuò)誤接線或者影響通訊的電噪聲)引起的。2未使用3接收超時(shí):在“超時(shí)”時(shí)間內(nèi),沒有來自從站的應(yīng)答。可能有以下一些原因:與從站的電氣連接有問題、主設(shè)備和從站設(shè)置為不同的波特率/奇偶校驗(yàn)設(shè)置,以及錯(cuò)誤的從站地址。4請(qǐng)求參數(shù)出錯(cuò):一個(gè)或多個(gè)輸入?yún)?shù)(從站、讀寫、地址或計(jì)數(shù))被設(shè)置為非法值。檢查文檔中輸入?yún)?shù)

18、的允許值。5Modbus主設(shè)備未啟用:在調(diào)用MBUS_MSG前,每次掃描時(shí)都調(diào)用MBUS_CTRL。6Modbus忙于處理另一個(gè)請(qǐng)求:一次只能激活一條MBUS_MSG指令。7應(yīng)答時(shí)出錯(cuò):收到的應(yīng)答與請(qǐng)求不相關(guān)。這表示從站中出現(xiàn)了某些錯(cuò)誤,或者錯(cuò)誤的從站應(yīng)答了請(qǐng)求。8應(yīng)答時(shí)CRC錯(cuò)誤:傳輸被干擾,可能會(huì)收到不正確的數(shù)據(jù)。該錯(cuò)誤通常是由電氣故障(例如錯(cuò)誤接線或者影響通訊的電噪聲)引起的。101從站不支持在該地址處所請(qǐng)求的功能:請(qǐng)參閱”使用Modbus主設(shè)備指令”幫助主題中的所需Modbus從站功能支持表。102從站不支持?jǐn)?shù)據(jù)地址:“地址"加上”計(jì)數(shù)”所要求的地址范圍超出了從站所允許的地址

19、范圍。103從站不支持?jǐn)?shù)據(jù)類型:該"地址”類型不被從站支持。104從站故障105從站已接受消息但應(yīng)答延遲:這是MBUS_MSG的錯(cuò)誤,用戶程序應(yīng)在稍后重新發(fā)送汆。106從站忙,因此拒絕消息:可以再次嘗試相同的請(qǐng)求,以獲得應(yīng)答。107從站因未知原因而拒絕消息108從站存儲(chǔ)器奇偶校驗(yàn)錯(cuò)誤:從站中有錯(cuò)誤。8. Modbus從站協(xié)議執(zhí)行錯(cuò)誤代碼錯(cuò)誤代碼說明0無錯(cuò)誤1內(nèi)存范圍錯(cuò)誤2非法波特率或奇偶校驗(yàn)3非法從屬地址4非法Modbus參數(shù)值5保持寄存器與Modbus從屬符號(hào)重疊6收到奇偶校驗(yàn)錯(cuò)誤7收到CRC錯(cuò)誤8非法功能請(qǐng)求/功能不受支持9請(qǐng)求中的非法內(nèi)存地址10從屬功能未啟用9. Modbus

20、主設(shè)備高級(jí)用戶信息返回的功能與請(qǐng)求不匹配(錯(cuò)誤代碼7)。Modbus主設(shè)備將在設(shè)置"完成"和"錯(cuò)誤"輸出參數(shù)前,重新發(fā)送請(qǐng)求兩個(gè)附加時(shí)間。通過查找Modbus主設(shè)備符號(hào)表中的符號(hào)mModbusRetries然后在執(zhí)行MBUS_CTRL后改變?cè)撝担梢愿闹卦嚧螖?shù)。mModbusRetries值是"字節(jié)"類型)重試范圍是0至255。內(nèi)部字符超時(shí)如果應(yīng)答中字符之間的時(shí)間超出了指定的時(shí)間限制,Modbus主設(shè)備將中止來自從站的應(yīng)答。缺省時(shí)間設(shè)置為100毫秒,可允許Modbus主設(shè)備協(xié)議用于大多數(shù)有線或電話調(diào)制解調(diào)器聯(lián)網(wǎng)的從站。如果檢測(cè)到該錯(cuò)

21、誤,MBUSCTRL"錯(cuò)誤"參數(shù)將設(shè)置為錯(cuò)誤代碼3。當(dāng)字符之間需要較長(zhǎng)的時(shí)間時(shí),可能是因?yàn)閭魉徒橘|(zhì)(例如電話調(diào)制解調(diào)器)或者因?yàn)閺恼咀陨硇枰嗟臅r(shí)間。通過查找Modbus主設(shè)備符號(hào)表中的符號(hào)mModbusCharTimeout然后在執(zhí)行MBUS_CTRL后改變?cè)撝担梢匝娱L(zhǎng)該超時(shí)時(shí)間。mModbusCharTimeout值是"整型"類型)范圍是1至少30000毫秒。單個(gè)對(duì)多個(gè)位/字寫入功能某些Modbus從站不支持Modbus功能寫入單個(gè)離散輸出位(Modbus功能5)或?qū)懭雴蝹€(gè)保持寄存器(Modbus功能6)。這些設(shè)備僅支持多個(gè)位寫入(Modbus功

22、能15)或多個(gè)寄存器寫入(Modbus功能16)。如果從站不支持單個(gè)位/字Modbus功能,則MBUS_MSG指令將返回錯(cuò)誤代碼101。Modbus主設(shè)備協(xié)議允許強(qiáng)制MBUS_MSG指令,以使用多個(gè)位/字Modbus功能來取代單個(gè)的位/字Modbus功能。通過查找Modbus主設(shè)備符號(hào)表中的符號(hào)mModbusForceMulti然后在執(zhí)行MBUS_CTRL后改變?cè)撝?,可以?qiáng)制執(zhí)行多個(gè)位/字指令。mModbusForceMulti值是“布爾”數(shù)據(jù)類型,應(yīng)該設(shè)置為"1"以在寫入單個(gè)位/寄存器時(shí)強(qiáng)制使用多個(gè)位/字功能。累加器用途累力口器(AC0、AC1、AC2,AC3)由Modb

23、us主設(shè)備指令使用,并在“交叉參考”列表中顯示。累加器中的數(shù)值被Modbus主設(shè)備指令保存和恢復(fù)。當(dāng)執(zhí)行Modbus主設(shè)備指令時(shí))保存累加器中的所有用戶數(shù)據(jù)。保持寄存器地址大于9999Modbus保持地址通常在40001至U49999的范圍內(nèi)。該范圍對(duì)大多數(shù)應(yīng)用程序來說足夠了,但是某些數(shù)據(jù)映射到保持寄存器的Modbus從站所具有的地址超過9999。這些設(shè)備不適合常規(guī)的Modbus尋址方案。Modbus主設(shè)備指令支持通過可選的尋址方法對(duì)大于9999的保持寄存器進(jìn)行尋址。MBUS_MSG指令允許參數(shù)“地址”具有附加范圍以更持保持寄存器地址的擴(kuò)充范圍。400001至465536用于保持寄存器例如:要

24、訪問保持寄存器16768,MBUS_MSG的"地址”參數(shù)應(yīng)該設(shè)置為416768。擴(kuò)充尋址允許訪問Modbus協(xié)議支持的65536個(gè)可能地址的全部范圍。該擴(kuò)充尋址僅支持保持寄存器。第二章使用Modbus主設(shè)備指令前言:欲在S7-200程序中使用Modbus主設(shè)備指令,請(qǐng)執(zhí)行以下步驟:1 .在程序中插入MBUS_CTRL指令,并在每次掃描時(shí)執(zhí)行MBUS_CTRL。您可以使用MBUS_CTRL指令初始化或更改Modbus通訊參數(shù)。當(dāng)您插入MBUS_CTRL指令時(shí),會(huì)在程序中自動(dòng)增加幾個(gè)受保護(hù)的子程序和中斷例程。2 .使用協(xié)議庫存儲(chǔ)器命令,為Modbus主設(shè)備協(xié)議指令需要的V存儲(chǔ)器指定一個(gè)起

25、始地址。3 .將一條或多條MBUS_MSG指令放入程序中??梢愿鶕?jù)需要將盡可能多的MBUS_MSG指令放入程序中,但每次只能激活這些指令中的一條O4 .連接S7-200CPU上的端口0(或?qū)Χ丝?協(xié)議庫是端口1)和Modbus從站之間的通訊電纜。當(dāng)心:帶有不同參考電位的互連裝置會(huì)引起互連電纜中出現(xiàn)意外電流。這些意外電流會(huì)引起通訊錯(cuò)誤或損壞裝置。確保所有用通訊電纜連接的設(shè)備共享一個(gè)共用電路參考或單獨(dú)隔離,以防不需要的電流通過。Modbus主設(shè)備指令使用如下顯示的Modbus功能讀取或?qū)懭胩囟ǖ腗odbus地址。Modbus從站必須支持所需的Modbus功能才能讀取或?qū)懭胩囟ǖ腗odbus地址。所

26、需的Modbus從站功能支持Modbus地址讀取或?qū)懭胨璧腗odbus從站功能輸入/輸出操作數(shù)類型模式I,Q,M,S,SM,T,C,V,L布爾波特VD,ID,QD,MD,SD,SMD,LD,AC,Constant,*VD,*AC,*LD雙字奇偶校驗(yàn)VB,IB,QB,MB,SB,SMB,LB,AC,Constant,*VD,*AC,*LD字節(jié)超時(shí)VW,IW,QW,MW,SW,SMW,LW,AC,Constant,*VD,*AC,*LD字完成I,Q,M,S,SM,T,C,V,L布爾錯(cuò)誤VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*L字節(jié)用于S7-200端口0的MBUS_CT

27、R旨令(或用于端口1的MBUS_CTRL_P1令)可初始化、監(jiān)視或禁用Modbus通訊。在使用MBUS_MSG之前,必須正確執(zhí)行MBUS_CTRL令。指令完成后立即設(shè)定"完成"位,才能繼續(xù)執(zhí)行下一條指令。在每次掃描且EN輸入打開時(shí)執(zhí)行該指令。MBUS_CTRL指令必須在每次掃描時(shí)(包括首次掃描)被調(diào)用,以允許監(jiān)視隨MBUS_MSG令啟動(dòng)的任何突出消息的進(jìn)程。除非每次調(diào)用MBUS_CTR語則Modbus主設(shè)備協(xié)議將不能正確運(yùn)行。"模式"輸入數(shù)值選擇通訊協(xié)議。輸入值1將CP編口分配給Modbus協(xié)議并啟用該協(xié)議。輸入值0將CPU口分配給PPI系統(tǒng)協(xié)議并禁用M

28、odbus協(xié)議。"波特"參數(shù)將波特率設(shè)為1200、2400、4800、9600、19200、38400、57600或115200波特。"奇偶校驗(yàn)"參數(shù)被設(shè)為與Modbus從站奇偶校驗(yàn)相匹配。所有設(shè)置使用一個(gè)起始位和一個(gè)停止位??山邮艿臄?shù)值為:0-無奇偶校驗(yàn)1 -奇校驗(yàn)2 -偶校驗(yàn)"超時(shí)”參數(shù)設(shè)為等待來自從站應(yīng)答的毫秒時(shí)間數(shù)。"超時(shí)"數(shù)值可以設(shè)置的范圍為1毫秒到32767毫秒。典型值是1000毫秒(1秒)。"超時(shí)"參數(shù)應(yīng)該設(shè)置的足夠大,以便從站有時(shí)間對(duì)所選的波特率作出應(yīng)答。"超時(shí)"參數(shù)用

29、于確定Modbus從站是否對(duì)請(qǐng)求做出應(yīng)答。"超時(shí)"值確定Modbus主設(shè)備在發(fā)送了請(qǐng)求的最后一個(gè)字符后,將要等待多長(zhǎng)時(shí)間才會(huì)有應(yīng)答的第一個(gè)字符。如果在"超時(shí)"規(guī)定的時(shí)間內(nèi)至少收到應(yīng)答的一個(gè)字符,Modbus主設(shè)備將從Modbus從站接收到整個(gè)應(yīng)答。MBUS_CTRL令完成時(shí),"完成"輸出打開。"錯(cuò)誤"輸出包含執(zhí)行該指令的結(jié)果。下表定義了在執(zhí)行MBUS_CTR旨令時(shí)會(huì)產(chǎn)生的錯(cuò)誤條件。MBUS_CTRL錯(cuò)誤代碼說明0無錯(cuò)誤1 奇偶校驗(yàn)選擇無效2 波特率選擇無效3超時(shí)選擇無效4模式選擇無效CALLIM田口齒_21爭(zhēng)色.F

30、irstjRWjAddr,CoiLint.ataFitr.Ekwue,ErrorLao-FDDSTL2.MBUSMSG令輸入/輸出數(shù)據(jù)類型操作數(shù)首次I,Q,M,S,SM,T,C,V,L(以上升沿檢測(cè)元素為條件的功率流)布爾從站VB,IB,QB,MB,SB,SMB,LB,AC,Constant,*VD,*AC,*LD字節(jié)讀寫VB,IB,QB,MB,SB,SMB,LB,AC,Constant,*VD,*AC,*LD字節(jié)地址VD,ID,QD,MD,SD,SMD,LD,雙AC,Constant,*VD,*AC,*LD字計(jì)數(shù)VW,IW,QW,MW,SW,SMW,LW,AC,Constant,*VD,*A

31、C,*LD整型DataPtr&cVB雙字完成I,Q,M,S,SM,T,C,V,L布爾錯(cuò)誤VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD字節(jié)mbus_mSG4(或用于端口1的MBUS_MSG_PH聲啟動(dòng)對(duì)Modbus從站的請(qǐng)求并處理應(yīng)答。當(dāng)EN輸入和"首次"輸入打開時(shí),BUS_MSG令啟動(dòng)對(duì)Modbus從站的請(qǐng)求。發(fā)送請(qǐng)求、等待應(yīng)答、并處理應(yīng)答通常需要多次掃描。EN輸入必須打開以啟用請(qǐng)求的發(fā)送,并應(yīng)該保持打開直到"完成"位被置位。注釋:一次只能激活一條MBUS_MSG令。如果啟用了多條mbus_mSG令,則將處理所執(zhí)行的第

32、一條mbus_mSG令,之后的所有mbus_mSG令將中止并產(chǎn)生錯(cuò)誤代碼6。"首次"參數(shù)應(yīng)該在有新請(qǐng)求要發(fā)送時(shí)才打開以進(jìn)行一次掃描。"首次"輸入應(yīng)當(dāng)通過一個(gè)邊沿檢測(cè)元素(例如上升沿)打開,這將導(dǎo)致請(qǐng)求被傳送一次。"從站"參數(shù)是Modbus從站的地址。允許的范圍是0到247。地址0是廣播地址,只能用于寫請(qǐng)求。不存在對(duì)地址0的廣播請(qǐng)求的應(yīng)答。并非所有的從站會(huì)支持廣播地址。S7-200Modbus從站協(xié)議庫不支持廣播地址。"讀寫"參數(shù)指定是否要讀取或?qū)懭朐撓ⅰ?quot;讀寫"參數(shù)允許使用下列兩個(gè)值:0-讀,

33、1-寫。離散輸出(線圈)和保持寄存器支持讀取和寫入請(qǐng)求。離散輸入(觸點(diǎn))和輸入寄存器僅支持讀取請(qǐng)求。"地址"參數(shù)是起始的Modbus地址。允許使用下列取值范圍:00001至09999是離散輸出(線圈);10001至19999是離散輸入(觸點(diǎn));30001至39999是輸入寄存器;40001至49999是保持寄存器"地址"的指定取值范圍基于Modbus從站支持的地址。"計(jì)數(shù)"參數(shù)指定在該請(qǐng)求中讀取或?qū)懭氲臄?shù)據(jù)元素的數(shù)目。"計(jì)數(shù)"值是位數(shù)(對(duì)于位數(shù)據(jù)類型)和字?jǐn)?shù)(對(duì)于字?jǐn)?shù)據(jù)類型)。地址0xxxx-"計(jì)數(shù)&qu

34、ot;是要讀取或?qū)懭氲奈粩?shù)。地址1xxxx-"計(jì)數(shù)"是要讀取的位數(shù)。地址3xxxx-"計(jì)數(shù)"是要讀取的輸入寄存器的字?jǐn)?shù)。地址4xxxx-"計(jì)數(shù)"是要讀取或?qū)懭氲谋3旨拇嫫鞯淖謹(jǐn)?shù)。MBUSMS齡將讀取或?qū)懭胱畲?20個(gè)字或1920個(gè)位(240字節(jié)的數(shù)據(jù))。"計(jì)數(shù)"的實(shí)際限值將取決于Modbus從站中的限制。"DataPtr"參數(shù)是指向S7-200CPU的V存儲(chǔ)器中與讀取或?qū)懭胝?qǐng)求相關(guān)的數(shù)據(jù)的間接地址指針。對(duì)于讀取請(qǐng)求,DataPtr應(yīng)該指向用于存儲(chǔ)從Modbus從站讀取的數(shù)據(jù)的第一個(gè)CPU?儲(chǔ)器位

35、置。對(duì)于寫入請(qǐng)求,DataPtr應(yīng)該指向要發(fā)送到ModbusR站的數(shù)據(jù)的第一個(gè)CP的儲(chǔ)器位置。DataPtr值作為間接地址指針傳遞到MBUS_MS前如,如果要寫入Modbus從站的數(shù)據(jù)從S7-200CPU中的地址VW20肝始,則DataPtr的數(shù)值將會(huì)是&VB200(VB200的地址)。指針必須始終是VB類型,即使它們指向字?jǐn)?shù)據(jù)。保持寄存器(地址4xxxx)和輸入寄存器(地址3xxxx)的值是字(2個(gè)字節(jié)或16位)。S7-200CPU?的格式與Modbus寄存器相同。低位編號(hào)的V存儲(chǔ)器地址是寄存器的最高有效字節(jié)。高位編號(hào)的V存儲(chǔ)器地址是寄存器的最低有效字節(jié)。下表顯示了S7-200字節(jié)和

36、字尋址如何與Modbus寄存器格式相對(duì)應(yīng)。S7-200CPU儲(chǔ)器字節(jié)地址S7-200CPU存儲(chǔ)器字地址Modbus保持寄存器地址地址十六進(jìn)制數(shù)據(jù)地址十六進(jìn)制地址十六進(jìn)制數(shù)據(jù)VB20012VW20C)123440011234VB20134VB20256VW202節(jié)67840025678VB20378VB2049AVW20419ABC40039ABCVB205BC位數(shù)據(jù)(地址0XXXX和1xxxx)區(qū)域作為壓縮字節(jié)被讀取和寫入,也就是說,每個(gè)數(shù)據(jù)字節(jié)內(nèi)壓縮8位。第一個(gè)數(shù)據(jù)字節(jié)的最低有效位是尋址的位號(hào)(參數(shù)“地址”)。如果僅寫入單個(gè)的位,則該位必須處于指向DataPtr的字節(jié)的最低有效位字節(jié)。壓縮字

37、節(jié)的格式(顯示離散輸入地址)Vx.7-Vx.01000810007100061000510004100031000210001對(duì)于未在偶數(shù)字節(jié)邊界上開始的位數(shù)據(jù)地址,與起始地址相關(guān)的位必須處于字節(jié)的最低有效位。參見如下在Modbus地址10004處開始的3位壓縮字節(jié)格式實(shí)例。壓縮字節(jié)的格式(在地址10004處開始的離散輸入)Vx7VX.0Q00001111-10004L1000510006當(dāng)寫入到離散輸出數(shù)據(jù)類型(線圈)時(shí),用戶必須在數(shù)據(jù)通過DataPtr傳遞到MBUS_MSG令之前,將壓縮字節(jié)內(nèi)的位放置到正確的位位置中。"完成”輸出在發(fā)送請(qǐng)求和接收應(yīng)答時(shí)關(guān)閉。"完成&qu

38、ot;輸出在應(yīng)答完成或MBUS_MSG指令因錯(cuò)誤而中止時(shí)打開。"錯(cuò)誤"輸出僅當(dāng)"完成"輸出打開時(shí)有效。請(qǐng)參閱Modbus主設(shè)備MBUS_MSG亍錯(cuò)誤通過MBUS_MSG令返回。低位斑號(hào)的錯(cuò)誤代碼(1到8)是由mbus_mSG4檢測(cè)至U的錯(cuò)誤。這些錯(cuò)誤代碼通常指示與MBUS_MSG指令的輸入?yún)?shù)有關(guān)的問題,或接收來自仄站的應(yīng)答時(shí)出現(xiàn)的問題。奇偶校驗(yàn)和CRC昔誤指示存在應(yīng)答但是數(shù)據(jù)未正確接收。這通常是由電氣故障(例如連接有問題或者電噪聲)引起的。高位編號(hào)的錯(cuò)誤代碼(從101開始)是由Modbus從站返回的錯(cuò)誤。這些錯(cuò)誤指示從站不支持所請(qǐng)求的功能,或者所請(qǐng)求的

39、地址(或數(shù)據(jù)類型或地址范圍)不被Modbus從站支持。程序舉例該實(shí)例程序顯示了在每次輸入I0.0打開時(shí),如何使用Modbus主設(shè)備指令將4個(gè)保持寄存器寫入Modbus從站然后再?gòu)闹凶x取。S7-200CPUI除把自VW10肝始的4個(gè)字寫入Modbus從站。數(shù)據(jù)將寫入從站中自地址40001開始的4個(gè)保持寄存器。S7-200CPU于是將從Modbus從站t取4個(gè)保持寄存器。數(shù)據(jù)將來自保持寄存器4001040013,并放置到S7-200CPU勺V存儲(chǔ)器中自VW200開始的地址。實(shí)例程序數(shù)據(jù)傳送S7-20OCPU存爵Md用U5從站保椅留存游如果從mbus_mSG令返回一個(gè)錯(cuò)誤,則程序?qū)⒋蜷_輸出Q0.1和

40、Q0.2。Network1swaoSMO.O9E00-0-10CU-MBUS_CTRLENModeBaudDoneParityErrnTimetut-MO-。MB1Nerwoik5MO/MB100.1KelHork6M2.1MBUSMSGNetwork2SM0,1M20TI-(R)2Network3MBUS_MSGENM2.1P4D01C-卸B2QC-ENSlaveCone-MC.2400014-&VB100-FiistSI川DonsRV/ErmAddrCounlM0.1-MB1Network7RWEgAddrCoLntDd用Ri通過每次掃描時(shí)調(diào)用MBUSCTRL初始化和監(jiān)視Modbu

41、s主設(shè)備Modbus主設(shè)備設(shè)置為9600波特,無奇偶校驗(yàn)。從站允許1000毫秒(1秒)的應(yīng)答時(shí)間。在首次掃描時(shí),重設(shè)用于兩條MBUS_MSG指令的啟用標(biāo)記(M2.0和M2.1)當(dāng)I0.0從“關(guān)閉"切換到"打開"時(shí),為第一條MBUS_MSG令(M2.0)設(shè)置啟用標(biāo)記c當(dāng)?shù)谝粋€(gè)啟用標(biāo)記(M2.0)打開時(shí),調(diào)用MBUS_MSG令。"首次"參數(shù)必須僅為啟用指令時(shí)的音次掃描而設(shè)置。該指令將4個(gè)保持寄存器寫入(RW=1)從站2。要寫入的數(shù)據(jù)取自CPU的VB100-VB107(4個(gè)字)并寫入Modbus從站中的地址40001-40004。當(dāng)?shù)谝粭lmbus_m

42、SG令完成后("完成"從0變?yōu)?),清除對(duì)第一條mbus_mSG令的啟用,并為第二條mbus_mSG令設(shè)定啟用。如果錯(cuò)誤(MB1)不為零,則設(shè)置Q0.1以顯示錯(cuò)誤。當(dāng)?shù)诙€(gè)啟用標(biāo)記(M2.1)打開時(shí),調(diào)用第二條mbus_mS"首次"參數(shù)必須僅為啟用指令時(shí)而首次掃描而設(shè)置。該指令從從站2讀取(RW=0)4個(gè)保持寄存器。數(shù)據(jù)從Modbus從站的地址40010?40013讀取并復(fù)制到CPU中的VB200?VB207(4字)。當(dāng)?shù)诙lmbus_mSG令完成("完成"從0變?yōu)?)后,清除對(duì)第二條MBUS_MSG>的啟用。如果錯(cuò)誤(MB1)

43、不為零,則設(shè)置Q0.2以顯示錯(cuò)誤。第三章使用Modbus從站指令前言:編程時(shí)使用SM0.1調(diào)用子程序MBUS_INITS行初始化,使用SM0.0調(diào)用MBUS_SLAV子指定相應(yīng)參數(shù)。關(guān)于參數(shù)的詳細(xì)說明,可在子程序的局部變量表中找到;欲在S7-200程序中使用Modbus從站指令,請(qǐng)執(zhí)行以下步驟:1 .在程序中插入MBUS_INI甘旨令,并僅限為一次掃描執(zhí)行MBUS_INI甘旨令。您可以使用MBUS_INI甘旨令初屆化或更改Modbus通訊參數(shù)。當(dāng)您插入MBUS_INI甘旨令時(shí),會(huì)在程序中自動(dòng)增加幾個(gè)隱藏的子程序和中斷例行程序。2 .使用協(xié)議庫存儲(chǔ)器命令)為Modbus從站協(xié)議指令需要的V存儲(chǔ)器

44、指定一個(gè)起始地址。3 .僅將一條MBUS_SLAVE令放入程序中。每次掃描時(shí)均調(diào)用該指令,為所有收到的請(qǐng)求提供服務(wù)。4 .連接S7-200上的端口0和Modbus主設(shè)備之間的通訊電纜。小當(dāng)心:帶有不同參考電位的互連裝置會(huì)使不需要的電流從互連電纜中通過。這些不需要的電流會(huì)引起通訊錯(cuò)誤或損壞裝置。確保所有用通訊電纜連接的設(shè)備共享一個(gè)共用電路參考或單獨(dú)隔離,以防不需要的電流通過。累力器(ACRAC1、AC2AC3肱Modbus從站指令使用,在“交叉參考”列表中顯示。執(zhí)行之前)Modbus從站指令累加器中的數(shù)值被保存,并在Modbus從站指令完成之前還原至累加器,以確保在執(zhí)行Modbus從站指令時(shí)累加

45、器中的所有用戶數(shù)據(jù)被保留。Modbus從站協(xié)議指令支持ModbusRTUt、議。這些指令使用S7-200的自由端口實(shí)用程序支持最常用的Modbus功能。詳情見附表2從站功能碼與說明。輸入/輸出操作數(shù)數(shù)據(jù)類型模式、地址、奇偶校驗(yàn)VB,IB,QB,MB,SB,SMB,LB,AC,Constant,*VD,*AC,*LD波特、HoldStartVD,ID,QD,MD,SD,SMD,LD,AC,Constant,*VD,*AC,*LD雙字延時(shí)、MaxIQMaxAI、MaxHoldVW,IW,QW,MW,SW,SMW,LW,AC,Constant,*VD,*AC,*LD字字完成I,Q,M,S,SM,T,

46、C,V,L布爾誤錯(cuò)VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD1.MBUS_INIT指令(初始化從站)MBUS_INIT指令被用于啟用和初始化或禁止Modbus通訊。在使用MBUS_SLAVE指令之前,必須正確執(zhí)行MBUS_INIT指令。指令完成后立即設(shè)定“完成”位,彳能繼續(xù)執(zhí)行下一條指令。在每次掃描且EN輸入打開時(shí)執(zhí)行該指令。應(yīng)當(dāng)在每次通訊狀態(tài)改變時(shí)執(zhí)行MBUS_INIT指令。因此,EN輸入應(yīng)當(dāng)通過一個(gè)邊緣檢測(cè)元素用脈沖打開,掃描時(shí)執(zhí)行?;蛘邇H在首次“模式”輸入數(shù)值選擇通訊協(xié)議:輸入數(shù)值1將端口0指定給Modbus協(xié)議并啟用協(xié)議;將輸入數(shù)值0則將端口0指定給PPI

47、,并禁用Modbus協(xié)議?!安ㄌ亍眳?shù)將波特率設(shè)為1200、2400、4800、9600、19200、38400、57600或115200。“地址”參數(shù)將地址設(shè)為1和247之間(包括1和247)的數(shù)值?!捌媾夹r?yàn)”參數(shù)被設(shè)為與Modbus主設(shè)備奇偶校驗(yàn)相匹配??山邮艿臄?shù)值為:0-無奇偶校驗(yàn)1-奇數(shù)校驗(yàn)2-偶數(shù)校驗(yàn)“延時(shí)”參數(shù)通過將指定的毫秒數(shù)增加至標(biāo)準(zhǔn)Modbus信息超時(shí)的方法延長(zhǎng)標(biāo)準(zhǔn)Modbus信息結(jié)束超時(shí)條件。該參數(shù)的典型數(shù)值在有線網(wǎng)絡(luò)上應(yīng)為0o如果您在使用帶有糾錯(cuò)功能的調(diào)制解調(diào)器,將延時(shí)設(shè)為50至100毫秒的數(shù)值。如果您在使用擴(kuò)展頻譜無線電,將延時(shí)設(shè)為10至100毫秒的數(shù)值?!把訒r(shí)”數(shù)值

48、可以是0至32767毫秒。MaxIQ參數(shù)將供Modbus地址0xxxx和Ixxxx使用的I和Q點(diǎn)數(shù)設(shè)為0至128之間的數(shù)值。數(shù)值0禁止所有向輸入和輸出的讀取。建議使用的MaxIQ數(shù)值是128,該數(shù)值可在S7-200中存取所有的I和Q點(diǎn)。MaxAI參數(shù)將供Modbus地址3xxxx使用的字輸入(AI)寄存器數(shù)目設(shè)為0至32之間的數(shù)值。數(shù)值0禁止模擬輸入的讀數(shù)。建議使用的MaxAI數(shù)值如下,這些數(shù)值可允許存取所有的S7-200模擬輸入:0用于CPU22116用于CPU22232用于CPU224、224XP、226和226XMMaxHold參數(shù)設(shè)定供Modbus地址4xxxx使用的V存儲(chǔ)器中的字保持

49、寄存器數(shù)目。例如,為了允許主設(shè)備存取2000個(gè)字節(jié)的V存儲(chǔ)器,將MaxHold設(shè)為1000個(gè)字的數(shù)值(保持寄存器)。HoldStart參數(shù)是V存儲(chǔ)器中保持寄存器的起始地址。該數(shù)值一般被設(shè)為VB0,因此HoldStart參數(shù)被設(shè)為&VB0(VB0地址)。其它V存儲(chǔ)器地址可指定為保持寄存器的起始地址,以便在項(xiàng)目的其它地方使用VB0。Modbus主設(shè)備可存取V內(nèi)存MaxHold個(gè)字?jǐn)?shù),從HoldStart開始。注意:你選用的CPU的V存儲(chǔ)區(qū)大?。PU型號(hào)不同V數(shù)據(jù)存儲(chǔ)區(qū)大小不同。應(yīng)根據(jù)需要選擇Modbus保持寄存器區(qū)域的大小。MBUS_INIT指令完成時(shí),"完成”輸出打開。"錯(cuò)誤"輸出字節(jié)包含執(zhí)行指令的結(jié)果。請(qǐng)參閱Modbus從站協(xié)議執(zhí)行錯(cuò)誤代碼中可能因執(zhí)行指令而產(chǎn)生的錯(cuò)誤條件。包含ModbusRTU從站指令庫的項(xiàng)目編譯、下載到CPU中后,在編

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論