第十二部分 S7200的modbus rtu通訊_第1頁
第十二部分 S7200的modbus rtu通訊_第2頁
第十二部分 S7200的modbus rtu通訊_第3頁
第十二部分 S7200的modbus rtu通訊_第4頁
第十二部分 S7200的modbus rtu通訊_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

S7-200的modbusrtu通訊MODBUSRTU協(xié)議簡介MODBUSRTU庫的使用兩臺PLC之間的MODBUSRTU通訊西門子PLC與臺達變頻器之間的MODBUSRTU通訊MODBUS協(xié)議簡介Modbus通信協(xié)議分為串行鏈路的和基于TCP/IP的;Modbus串行鏈路協(xié)議只有一個主站,可以有1---247個從站。只能主站發(fā)起。Modbus串行電氣規(guī)范:RS485(長距離傳輸),和RS232(短距離傳輸)。Modbus傳輸模式:傳輸?shù)臅r候?qū)嶋H上是按這種格式發(fā)送信息,CRC叫循環(huán)冗余校驗,LRC叫縱向冗余校驗。ASCⅡ地址功能代碼數(shù)據(jù)數(shù)量數(shù)據(jù)1……數(shù)據(jù)NLRC高字節(jié)LRC低字節(jié)回車換行RTU地址功能代碼數(shù)據(jù)數(shù)量數(shù)據(jù)1……數(shù)據(jù)NCRC高字節(jié)CRC低字節(jié)回車換行MODBUS協(xié)議簡介Modbus主站尋址00001到09999是離散輸出(線圈)

假設(shè)輸出:QX.Y;

最高位:Q=0;

尋址計算:X*8+Y+1(低位順排);

中間補零;10001至19999是離散輸入(觸點):I=130001至39999是輸入寄存器(通常模擬量)

假設(shè)模擬量:AIWN;

最高位:AIW=3;

尋址計算:(N+2)/2(N必為偶數(shù));

中間補零;40001至49999是保持寄存器(V(W)存儲區(qū)):同3注:模擬量和V區(qū)都只能寫一個字,不能寫雙字。MODBUS協(xié)議庫的使用MBUS_CTRL指令用于初始化主站通信,MBUS_MSG指令(或用于端口1的MBUS_MSG_P1)用于啟動對Modbus從站的請求并處理應(yīng)答。MBUS_CTRL指令用于S7-200端口0的MBUS_CTRL指令(或用于端口1的MBUS_CTRL_P1指令)可初始化、監(jiān)視或禁用Modbus通訊。在使用MBUS_MSG指令之前,必須正確執(zhí)行MBUS_CTRL指令。指令完成后立即設(shè)定“完成”位,才能繼續(xù)執(zhí)行下一條指令。MBUS_CTRL指令在每次掃描且EN輸入打開時執(zhí)行。MBUS_CTRL指令必須在每次掃描時(包括首次掃描)被調(diào)用,以允許監(jiān)視隨MBUS_MSG指令啟動的任何突出消息的進程。除非每次調(diào)用MBUS_CTRL,否則Modbus主設(shè)備協(xié)議將不能正確運行。MODBUS協(xié)議庫的使用EN:指令使能位。Mode:“模式”參數(shù)?!澳J健陛斎霐?shù)值選擇通訊協(xié)議。輸入值1將CPU端口分配給Modbus協(xié)議并啟用該協(xié)議。輸入值0將CPU端口分配給PPI系統(tǒng)協(xié)議,并禁用Modbus協(xié)議。Baud:“波特率”參數(shù)。MBUS_CTRL指令支持的波特率為1200、2400、4800、9600、19200、38400、57600或115200bit/s。Parity:“奇偶校驗”參數(shù)?!捌媾夹r灐眳?shù)被設(shè)為與Modbus從站奇偶校驗相匹配。所有設(shè)置使用一個起始位和一個停止位??山邮艿臄?shù)值為:0無奇偶校驗、1奇校驗、2偶校驗。Timeout:“超時”參數(shù)?!俺瑫r”參數(shù)設(shè)為等待來自從站應(yīng)答的毫秒時間數(shù)?!俺瑫r”數(shù)值可以設(shè)置的范圍為1毫秒到32767毫秒。典型值是1000毫秒(1秒)?!俺瑫r”參數(shù)應(yīng)該設(shè)置的足夠大,以便從站有時間對所選的波率做出應(yīng)答。MODBUS協(xié)議庫的使用Done:MBUS_CTRL指令成功完成時,“完成”輸出為1,否則為0。Error:“錯誤”輸出代碼。“錯誤”輸出代碼由反應(yīng)執(zhí)行該指令的結(jié)果的特定數(shù)字構(gòu)成?!板e誤”輸出代碼的含義如下:

MODBUS協(xié)議庫的使用MBUS_MSG指令(或用于端口1的MBUS_MSG_P1)用于啟動對Modbus從站的請求并處理應(yīng)答,單條MSG指令只能完成對指定從站的讀或?qū)懻埱蟆?/p>

當EN輸入和“首次”輸入都為1時,BUS_MSG指令啟動對Modbus從站的請求。發(fā)送請求、等待應(yīng)答、并處理應(yīng)答通常需要多次掃描。EN輸入必須打開以啟用請求的發(fā)送,并應(yīng)該保持打開直到“完成”位被置位。必須注意的是,一次只能激活一條MBUS_MSG指令。如果啟用了多條MBUS_MSG指令,則將處理所執(zhí)行的第一條MBUS_MSG指令,之后的所有MBUS_MSG指令將中止并產(chǎn)生錯誤代碼6。MODBUS協(xié)議庫的使用EN:指令使能位。First:“首次”參數(shù)。“首次”參數(shù)應(yīng)該在有新請求要發(fā)送時才打開以進行一次掃描?!笆状巍陛斎霊?yīng)當通過一個邊沿檢測元素(例如上升沿)打開,這將導致請求被傳送一次。Slave:“從站”參數(shù)?!皬恼尽眳?shù)是Modbus從站的地址。允許的范圍是0到247。地址0是廣播地址,只能用于寫請求。不存在對地址0的廣播請求的應(yīng)答。并非所有的從站會支持廣播地址,S7-200Modbus從站協(xié)議庫不支持廣播地址。RW:“讀寫”參數(shù)?!白x寫”參數(shù)指定是否要讀取或?qū)懭朐撓??!白x寫”參數(shù)允許使用下列兩個值:0——讀,1——寫。Addr:“地址”參數(shù)?!暗刂贰眳?shù)是起始的Modbus地址。允許使用下列取值范圍:00001至09999是離散輸出(線圈);10001至19999是離散輸入(觸點);30001至39999是輸入寄存器;40001至49999是保持寄存器其中離散輸出(線圈)和保持寄存器支持讀取和寫入請求,而離散輸入(觸點)和輸入寄存器僅支持讀取請求?!暗刂贰钡木唧w值應(yīng)與Modbus從站支持的地址一致MODBUS協(xié)議庫的使用Count:“計數(shù)”參數(shù)?!坝嫈?shù)”參數(shù)指定在該請求中讀取或?qū)懭氲臄?shù)據(jù)元素的數(shù)目。“計數(shù)”數(shù)值是位數(shù)(對于位數(shù)據(jù)類型)和字數(shù)(對于字數(shù)據(jù)類型)。MBUS_MSG指令將讀取或?qū)懭胱畲?20個字或1920個位(240字節(jié)的數(shù)據(jù))?!坝嫈?shù)”的實際限值還取決于Modbus從站中的限制。

MODBUS協(xié)議庫的使用DataPtr:“DataPtr”參數(shù)是指向S7-200CPU的V存儲器中與讀取或?qū)懭胝埱笙嚓P(guān)的數(shù)據(jù)的間接地址指針(例:&VB100)。對于讀取請求,DataPtr應(yīng)指向用于存儲從Modbus從站讀取的數(shù)據(jù)的第一個CPU存儲器位置。對于寫入請求,DataPtr應(yīng)指向要發(fā)送到Modbus從站的數(shù)據(jù)的第一個CPU存儲器位置。Done:完成輸出。完成輸出在發(fā)送請求和接收應(yīng)答時關(guān)閉?!巴瓿伞陛敵鲈趹?yīng)答完成或MBUS_MSG指令因錯誤而中止時打開。Error:“錯誤”輸出僅當“完成”輸出打開時有效。低位編號的錯誤代碼(1到8)是由MBUS_MSG指令檢測到的錯誤。這些錯誤代碼通常指示與MBUS_MSG指令的輸入?yún)?shù)有關(guān)的問題,或接收來自從站的應(yīng)答時出現(xiàn)的問題。奇偶校驗和CRC錯誤指示存在應(yīng)答但是數(shù)據(jù)未正確接收。這通常是由電氣故障(例如連接有問題或者電噪聲)引起的。高位編號的錯誤代碼(從101開始)是由Modbus從站返回的錯誤。這些錯誤指示從站不支持所請求的功能,或者所請求的地址(或數(shù)據(jù)類型或地址范圍)不被Modbus從站支持。MODBUS協(xié)議庫的使用西門子Modbus從站協(xié)議庫是包括兩條指令:MBUS_INIT指令和MBUS_SLAVE指令。MBUS_INIT指令用于啟用和初始化或禁止Modbus通訊。MBUS_SLAVE指令用于為Modbus主設(shè)備發(fā)出的請求服務(wù)。MBUS_INIT指令用于啟用和初始化或禁止Modbus從站通訊。在使用MBUS_SLAVE指令之前,必須正確執(zhí)行MBUS_INIT指令。指令完成后立即設(shè)定“完成”位,才能繼續(xù)執(zhí)行下一條指令。MODBUS協(xié)議庫的使用EN:指令使能位。Mode:模式選擇,啟動/停止Modbus從站通信。Mode參數(shù)允許使用以下兩個數(shù)值: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。MODBUS協(xié)議庫的使用MaxAI:最大AI字數(shù),參與通信的最大AI通道數(shù),可為16或32。0用于CPU221、16用于CPU222、32用于CPU224、224XP、226。MaxHold:設(shè)定供Modbus地址4xxxx使用的V存儲器中的字保持寄存器數(shù)目。HoldStart:保持寄存器區(qū)起始地址,以&VBx指定(間接尋址方式)。Done:初始化完成標志,成功初始化后置1。Error:初始化錯誤代碼。MODBUS協(xié)議庫的使用MBUS_SLAVE指令被用于為Modbus主設(shè)備發(fā)出的請求服務(wù),并且必須在每次掃描時執(zhí)行,以便允許該指令檢查和回答Modbus請求。MBUS_SLAVE指令無輸入?yún)?shù),在每次掃描且EN輸入開啟時執(zhí)行。EN:指令使能位。Done:Modbus執(zhí)行通信中時置1,無MODBUS通信活動時為0。Error:錯誤代碼。

MODBUS協(xié)議庫的使用利用指令庫編程前首先應(yīng)為其分配存儲區(qū),否則軟件編譯時會報錯。具體方法如下:執(zhí)行Step7-Micro/Win菜單命令“文件”>“庫存儲區(qū)”,打開“庫存儲區(qū)分配”對話框。在“庫存儲區(qū)分配”對話框中輸入庫存儲區(qū)(V存儲區(qū))的起始地址,注意避免該地址和程序中已經(jīng)采用或準備采用的其它地址重合。點擊“建議地址”按鈕,系統(tǒng)將自動計算存儲區(qū)的截止地址。然后確定即可。MODBUS協(xié)議庫的使用設(shè)置PLC通訊端口:在同一個通信網(wǎng)絡(luò)中,主站的讀取和寫入都是對某個站進行操作,因此需要對每個不同的通信站點一個站地址(同一通信網(wǎng)絡(luò)中的各站點站地址不能相同),用于區(qū)分對不同站點的操作(具體的儀表有不同的設(shè)置方法)。打開設(shè)置界面:點擊系統(tǒng)塊→通訊端口;選擇通信端口:端口0和端口1對應(yīng)實際硬件接口的Prot0和Prot1,同時與你所使用的ModubusRTU通信的庫指令有關(guān)(ModbusRTU主站庫包涵兩個,分別對應(yīng)Prot0和Prot1);設(shè)置通訊參數(shù):地址和波特率應(yīng)同程序保持一致;兩臺PLC之間的MODBUSRTU通訊將兩臺S7-200224XP設(shè)為Modbus主站和從站,主站的站地址為2、從站的站地址為3,通

溫馨提示

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

評論

0/150

提交評論