【】絕密 【】NDA 【X】公開(kāi) 一,、 組網(wǎng)概述本文以 ZKA-4488-RS485 為例介紹西門(mén)子PLC與深圳市綜科智控科技開(kāi)發(fā)有限公司的IO設(shè)備進(jìn)行Modbus通訊的步驟設(shè)置,。ZKA-4488-RS485 是 8 路數(shù)字量輸入(DI),8 路數(shù)字量輸出(DO),,4路模擬量輸入(AI,,0/4-20mA),4 路模擬量輸出設(shè)備(AO,,0/4-20mA),,485 通信總線。 以 ZKA-4488-RS485 出廠默認(rèn)通訊參數(shù)如下: 站號(hào):01 波特率:115200(注意:客戶需要參照綜科智控公司的配置指導(dǎo)文檔,,將ZKA-4488-RS485模塊的波特率修改為9600才能適用本例中的介紹) 數(shù)據(jù)格式:8,,N,1 二,、 S7-200 Modbus RTU通信1 S7-200 Modbus RTU 通信簡(jiǎn)介 Modbus是公開(kāi)通信協(xié)議,,詳細(xì)的協(xié)議和規(guī)范,請(qǐng)?jiān)L問(wèn) Modbus 組織的網(wǎng)站:http://www./ Modbus具有兩種串行傳輸模式:分別為ASCII和RTU,。Modbus是一種單主站的主從通信模式,,Modbus網(wǎng)絡(luò)上只能有一個(gè)主站存在,主站在Modbus網(wǎng)絡(luò)上沒(méi)有地址,每個(gè)從站必須有唯一的地址,,從站的地址范圍為0 - 247,,其中0為廣播地址,從站的實(shí)際地址范圍為1 - 247,。 Modbus RTU通信以主從的方式進(jìn)行數(shù)據(jù)傳輸,,在傳輸?shù)倪^(guò)程中Modbus RTU主站是主動(dòng)方,即主站發(fā)送數(shù)據(jù)請(qǐng)求報(bào)文到從站,,Modbus RTU從站返回響應(yīng)報(bào)文,。 S7-1200以下模塊支持 Modbus RTU通信:
注意: 2 Modbus RTU 主站指令庫(kù) 隨著 TIA PORATL 軟件和 S7-1200 CPU 固件的不斷更新,,S7-1200 Modbus RTU 指令也出現(xiàn)了不同的版本。 用戶需要根據(jù)使用的軟件和硬件,,正確選擇使用符合要求的 S7-1200 Modbus RTU 指令來(lái)實(shí)現(xiàn) Modbus RTU 通信,。 軟件,硬件要求和指令版本說(shuō)明如下,。 TIA PORTAL 中的 S7-1200 Modbus RTU 指令TIA PORTAL 軟件中提供了2個(gè)版本的 Modbus RTU指令,。如下圖 1 所示:
注意:新版本 Modbus RTU 指令的使用限制條件
Modbus RTU V1 - V2 版本指令介紹(S7-1200 作為Modbus RTU 主站)S7-1200 支持Modbus RTU通信模式的模塊可作為Modbus RTU主站,。以下以 CPU1215C DC/DC/DC和CM1241 RS485 模塊為例,,介紹S7-1200 Modbus RTU 主站通信組態(tài)及編程步驟,。 硬件和軟件需求及所完成的通信任務(wù): 硬件: 軟件: 1.組態(tài)Modbus RTU 通信模塊 在硬件目錄里找到“通信模塊”→“點(diǎn)到點(diǎn)”→“CM1241(RS485)”,,雙擊或拖拽此模塊至CPU左側(cè)即可,,如下圖1所示: 圖1 組態(tài)通信模塊 接下來(lái),,在“設(shè)備視圖”中用鼠標(biāo)選中CM1241(RS485)模塊,在“屬性”→“端口組態(tài)”中配置此模塊硬件接口參數(shù),。如下圖2所示: 以下以傳輸率=9.6Kbps,,奇偶校驗(yàn)=無(wú)奇偶校驗(yàn),數(shù)據(jù)位=8位字符,,停止位=1,,其它保持默認(rèn)設(shè)置為例。注意:請(qǐng)把ZKA-4488-RS485模塊的波特率改成和此處一致的參數(shù),。 圖2 RS485 端口設(shè)置 最后在“硬件標(biāo)識(shí)符”里確認(rèn)一下硬件標(biāo)識(shí)符為271,,如下圖3所示: 圖3 硬件標(biāo)識(shí)符 2.添加啟動(dòng)OB 在項(xiàng)目樹(shù)下選擇“CPU1215C DC/DC/DC”→“程序塊”→“添加新塊”,在彈出的窗口中選擇“OB 組織塊”→ “Startup”,,添加啟動(dòng)OB 100,,如下圖4所示: 圖4 添加啟動(dòng)OB 3.調(diào)用MB_COMM_LOAD指令 為使端口一啟動(dòng)就被設(shè)置為Modbus RTU通信模式,可在OB 100中調(diào)用“MB_COMM_LOAD”指令,。調(diào)用“MB_COMM_LOAD”指令時(shí)會(huì)自動(dòng)彈出創(chuàng)建相應(yīng)背景數(shù)據(jù)塊的界面,,如下圖5所示: 圖5 調(diào)用MB_COMM_LOAD指令 點(diǎn)擊“確認(rèn)”為該指令創(chuàng)建背景數(shù)據(jù)塊后,為各輸入/輸出引腳分配地址,。尤其需注意MB_DB輸入引腳需指向“MB_MASTER”指令的背景數(shù)據(jù)塊,,如下圖6所示: 注意: “MB_COMM_LOAD”指令輸入位“REQ”需使用上升沿觸發(fā)。由于OB 100只在S7-1200啟動(dòng)時(shí)執(zhí)行一次,,因此,此例中將“REQ”設(shè)為“TRUE”,。 圖6 MB_COMM_LOAD指令 MB_COMM_LOAD指令參數(shù)意義如下表1所示:
表1 MB_COMM_LOAD指令參數(shù)意義 4.創(chuàng)建DATA_PTR數(shù)據(jù)發(fā)送,、接收緩沖區(qū) 通過(guò)“程序塊”→ “添加新塊”,,選擇“數(shù)據(jù)塊(DB)”創(chuàng)建 DB 塊,選擇“標(biāo)準(zhǔn)與S7- 300/400兼容” ,,點(diǎn)擊“確認(rèn)”鍵,。在DB中創(chuàng)建數(shù)據(jù)類型為5個(gè)字的數(shù)組,如下圖7所示: 注意:DATA_PTR數(shù)據(jù)發(fā)送,、接收緩沖區(qū)使用的DB訪問(wèn)類型必須是標(biāo)準(zhǔn)與S7- 300/400兼容,。 圖7 創(chuàng)建DATA_PTR 數(shù)據(jù)發(fā)送、接收緩沖區(qū) 5.調(diào)用MB_MASTER指令 在OB1中調(diào)用“MB_MASTER”指令,,調(diào)用該指令時(shí)會(huì)自動(dòng)彈出創(chuàng)建相應(yīng)背景數(shù)據(jù)塊的界面,,如下圖8所示: 圖8 調(diào)用MB_MASTER指令 點(diǎn)擊“確認(rèn)”為該指令創(chuàng)建背景數(shù)據(jù)塊后,并為各輸入/輸出引腳分配地址,,如下圖9所示: 注意:“MB_MASTER”指令的輸入位“REQ”必須使用上升沿觸發(fā),。 以下以S7-1200作為Modbus RTU主站,用F04功能碼讀取Modbus RTU從站2,,從Modbus地址30001開(kāi)始的五個(gè)字,,接收的數(shù)據(jù)存放在緩沖區(qū)DB3.DBW0開(kāi)始區(qū)域?yàn)槔TO(shè)置如下所示:MB_ADDR=2,,MODE=0,,DATA_ADDR=30001,DATA_LEN=5,。 地址對(duì)應(yīng)關(guān)系如下表2所示:
表2 Modbus地址對(duì)應(yīng)關(guān)系 圖9 MB_MASTER指令 MB_MASTER指令參數(shù)意義如下表3所示:
表3 MB_MASTER指令參數(shù)意義 關(guān)于MODE,,DATA_ADDR,,DATA_LEN可在下表4中查看:
表4 MB_MASTER Modbus功能表 7. Modbus RTU測(cè)試結(jié)果 在STEP 7 Professional
V11 UPD4軟件中打開(kāi)該項(xiàng)目CPU1215C
DC/DC/DC的“監(jiān)控表”,,觸發(fā)“MB_MASER”指令的輸入位M10.0,。PLC主站將從站ZKA-4488-RS485地址30001中的數(shù)值11,30002中的數(shù)值12,,30003中的數(shù)值13,,30004中的數(shù)值14,30005中的數(shù)值15,,分別讀取到了地址DB3.DBW0,,DB3.DBW2,DB3.DBW4,,DB3.DBW6,,DB3.DBW8中,如下圖12所示: 圖12 Modbus RTU測(cè)試結(jié)果 S7-1200 Modbus RTU通信模式的多地址或多站點(diǎn)輪詢多個(gè)CM 1241 RS485 通訊模塊之間可以使用 PROFIBUS 電纜相互連接,??梢詫?span style="font-family:"Arial","sans-serif""> 1 個(gè)主站和最多 31 個(gè) MODBUS 從站使用 PROFIBUS 電纜連接組網(wǎng)。 S7-1200 Modbus RTU輪詢需要通過(guò)上一條”MB_MASTER“指令輸出位“Done“=1來(lái)觸發(fā)下一條“MB_MASTER“指令,。具體說(shuō)明及編程思路請(qǐng)參考以下鏈接: 如何使用STEP 7(TIA Portal)V11為SIMATIC S7-1200建立Modbus RTU通訊,? http://support.automation./CN/view/zh/47756141 MB_COMM_LOAD和MB_MASTER指令STATUS錯(cuò)誤代碼
表5 MB_COMM_LOAD指令STATUS錯(cuò)誤代碼
表6 MB_MASTER指令STATUS錯(cuò)誤代碼(指令的通信和組態(tài)錯(cuò)誤消息)
表7 MB_MASTER指令STATUS錯(cuò)誤代碼(Modbus 協(xié)議的錯(cuò)誤消息) 4 連接超時(shí)參數(shù) S7-1200 Mobus RTU通信網(wǎng)絡(luò)中包含多個(gè)從站站點(diǎn)時(shí),,由于輪詢的網(wǎng)絡(luò)特性,只能同時(shí)讀或?qū)懸粋€(gè)站點(diǎn)數(shù)據(jù),。因此有如下因素,,會(huì)影響到最終整體的輪詢時(shí)間: 1. 通信速率(波特率)設(shè)置時(shí)間 2. 每個(gè)站點(diǎn)的通信數(shù)據(jù)量 3. 站點(diǎn)數(shù)量 4. 通信距離 5. 各站點(diǎn)連接時(shí)間 無(wú)論是由于信號(hào)干擾,硬件質(zhì)量引起的從站掉站或是由于工程需要暫時(shí)關(guān)閉站點(diǎn),,此時(shí)都會(huì)由于“各站點(diǎn)連接時(shí)間”的增加而使通信系統(tǒng)的輪詢時(shí)間大大延長(zhǎng),。在S7-1200的Modbus RTU通信中,主要有三個(gè)參數(shù)與“各站點(diǎn)連接時(shí)間”的設(shè)置相關(guān),。 1. 從站響應(yīng)時(shí)間RESP_TO如圖1所示,,V2.x版本的MB_COMM_LOAD初始化塊可設(shè)置從站響應(yīng)時(shí)間RESP_TO參數(shù): 設(shè)置單次連接從站的可響應(yīng)時(shí)間,范圍為5ms到65535ms(默認(rèn)值為1000ms),;即如從站在此時(shí)間段內(nèi)未作出響應(yīng),,則MB_MASTER將在發(fā)送指定次數(shù)的重試請(qǐng)求后終止請(qǐng)求并提示錯(cuò)誤信息80C8。 圖1. RESP_TO參數(shù)設(shè)置 注意:如圖2所示,,Modbus從站的執(zhí)行頻率須至少小于RESP_TO設(shè)置的響應(yīng)時(shí)間(需要考慮響應(yīng)延遲時(shí)間),,才可以正常通訊。 圖2. 從站響應(yīng)時(shí)間 2.重試次數(shù)RETRIES在初始化功能塊MB_COMM_LOAD的背景數(shù)據(jù)塊中,,可設(shè)置重試次數(shù)RETRIES參數(shù): 主站在返回?zé)o響應(yīng)錯(cuò)誤代碼0x80C8 之前的重試次數(shù),。(默認(rèn)值為2次) 圖3 RETRIES參數(shù)設(shè)置 注意:在更改RETRIES參數(shù)后,,需要重新使能MB_COMM_LOAD功能塊的REQ管腳,,否則更改參數(shù)不生效。 3. 主站定時(shí)參數(shù)Blocked_Proc_Timeout當(dāng)由于某些原因(如已發(fā)出主站請(qǐng)求,,但在徹底完成該請(qǐng)求前停止調(diào)用主站功能塊時(shí)),,造成Done及Error均沒(méi)有置1時(shí),需要提供一個(gè)定時(shí)時(shí)間,,在時(shí)間到達(dá)后置位,,以便執(zhí)行下一個(gè)功能塊或輪詢下一個(gè)站點(diǎn)。 MB_Master的背景數(shù)據(jù)塊中提供了主站定時(shí)參數(shù)Blocked_Proc_Timeout(范圍0S到5.5S,,默認(rèn)3S) 此前的RESP_TO 是針對(duì)從站響應(yīng)時(shí)間的,,而Blocked_Proc_Timeout則是針對(duì)主站的定時(shí)時(shí)間,此功能參數(shù)用于防止單個(gè) MB_Master 指令獨(dú)占或鎖定對(duì)端口的訪問(wèn),。 圖4. Blocked_Proc_Timeout參數(shù)設(shè)置 5 Modbus RTU 主站常問(wèn)問(wèn)題 S7-1200 是否支持 Modbus ASCII 通信模式,? 西門(mén)子不提供支持上述通信模式的的現(xiàn)成指令,需要用戶自己用自由口模式編程,。 Modbus RTU指令V1和V2兩個(gè)版本有什么區(qū)別,? Modbus RTU指令版本 V2 將參數(shù) “REQ” 和 “DONE” 添加到“MB_COMM_LOAD”指令,。而且,“MB_MASTER”和“MB_SLAVE ”指令的“MB_ADDR ”參數(shù)現(xiàn)在允許一個(gè) UInt 值以進(jìn)行擴(kuò)展尋址,。 同一CPU程序中是否可以同時(shí)使用V1和V2兩個(gè)不同版本的Modbus RTU指令,? 不能在同一CPU 程序中同時(shí)使用V1(V1.x)和V2(V2.y)指令版本。用戶程序的 Modbus 指令必須具有相同的主版本號(hào),;主版本組內(nèi)的各個(gè)指令可具有不同的次版本號(hào),。 S7-1200 通信模塊CM1241是否可作為Modbus RTU主站或作為Modbus RTU從站? 對(duì)S7-1200 通信模塊CM1241組態(tài)并編程調(diào)用“MB_COMM_LOAD”指令,,可將其設(shè)置為Modbus RTU通信模式,。通過(guò)編程調(diào)用“MB_MASTER”指令,S7-1200 通信模塊CM1241可作為Modbus RTU主站,,或調(diào)用“MB_SLAVE”指令,,S7-1200 通信模塊CM1241可作為Modbus RTU從站。 注意:無(wú)論S7-1200 通信模塊CM1241作為Modbus RTU主站還是從站,,都需要調(diào)用“MB_COMM_LOAD”指令進(jìn)行編程,。 由于某一個(gè)從站掉站引起的輪詢周期時(shí)間延長(zhǎng),如何減小此影響,? 通常,,S7-1200可同時(shí)調(diào)整兩個(gè)參數(shù):從站響應(yīng)時(shí)間 RESP_TO和重試次數(shù) RETRIES,用于減小Modbus從站掉站或暫時(shí)關(guān)閉而增大的輪詢周期時(shí)間,。 MB_MASTER報(bào)錯(cuò)8200(端口正忙于處理傳送請(qǐng)求),,如何處理,? 此情況是由于MB_MASTER的DONE或ERROR均未置位從而與后續(xù)MB_MASTER沖突導(dǎo)致。確保接通下一個(gè)MB_MASTER的時(shí)間大于Blocked_Proc_Timeout的設(shè)定時(shí)間(默認(rèn)3S),。 如何檢查S7-1200 通信模塊CM1241是否已被成功設(shè)置為Modbus RTU通信模式,? 可在程序或監(jiān)控表中查看“MB_COMM_LOAD”指令的輸出位“DONE”,,“ERROR”以及“STATUS”狀態(tài)來(lái)判斷S7-1200 通信模塊CM1241是否已被成功設(shè)置為Modbus RTU通信模式。
執(zhí)行“MB_MASTER”指令,,總是顯示輸出位“Busy”=1,為什么,? 因?yàn)槎丝谡τ谔幚韨魉驼?qǐng)求,。出現(xiàn)該錯(cuò)誤時(shí)請(qǐng)檢查“MB_MASTER“指令輸入位”REQ“是否為上升沿觸發(fā),或是否有其它的多個(gè)“MB_MASTER”指令在執(zhí)行,。 通過(guò)執(zhí)行“MB_MASTER”指令無(wú)法寫(xiě)入或讀取Modbus RTU叢站地址的數(shù)據(jù),,但程序中監(jiān)視“MB_MASTER”指令錯(cuò)誤位“Error”=0,錯(cuò)誤代碼“STATUS”=16#0,,為什么,? “MB_MASTER”指令上一請(qǐng)求因錯(cuò)誤而終止后,ERROR 位將保持為 TRUE 一個(gè)掃描周期時(shí)間,,并且 STATUS 參數(shù)中的錯(cuò)誤代碼值僅在 ERROR =TRUE 的一個(gè)掃描周期內(nèi)有效,,因此無(wú)法通過(guò)程序或監(jiān)控表查看到??刹捎萌缦滤镜木幊谭绞綄?span style="font-family:"Arial","sans-serif"">ERROR 和 STATUS 參數(shù)讀出,。 圖13 捕捉錯(cuò)誤代碼 S7-1200 作為Modbus RTU 主站,如何對(duì)Modbus RTU從站進(jìn)行0-65535擴(kuò)展尋址,? 通常,,“MB_MASTER”指令的背景數(shù)據(jù)塊“MB_MASTER_DB”中的“EXTENDED_ADDRESSING”默認(rèn)為0,可以對(duì)Modbus RTU從站地址0-247進(jìn)行訪問(wèn),。 將“MB_MASTER”指令的背景數(shù)據(jù)塊“MB_MASTER_DB”中的“EXTENDED_ADDRESSING”設(shè)置為1,,才能對(duì)Modbus RTU從站進(jìn)行0-65535擴(kuò)展尋址??砂凑杖缦虏襟E設(shè)置“EXTENDED_ADDRESSING”: 首先找到“系統(tǒng)塊”→“程序資源”,,雙擊“MB_MASTER_DB”,在“MB_MASTER”指令的背景數(shù)據(jù)塊“MB_MASTER_DB”中查看“EXTENDED_ADDRESSING”,。 圖14 擴(kuò)展地址區(qū) 在“監(jiān)控表”內(nèi)輸入“MB_MASTER_DB.EXTENDED_ADDRESSING”,將該位置1,。 圖15 修改變量 |
|
來(lái)自: 綜科智控 > 《說(shuō)明書(shū)》