參考鏈接中第 5 個(gè)常問問題
1.S7-200 SMART 是否支持 Modbus ASCII 通信模式?
STEP 7-Micro/WIN SMART 軟件未提供Modbus ASCII 通信模式指令庫。S7-200 SMART CPU若用于Modbus ASCII 通信時(shí),則需要用戶使用自由口通信模式進(jìn)行編程。
2.S7-200 SMART CPU 集成的RS485 端口(端口 0 )以及SB CM01 信號(hào)板(端口 1 )兩個(gè)通信端口能否同時(shí)作為 Modbus RTU 主站或者同時(shí)作為 Modbus RTU從站?
S7-200 SMART V2.2版本支持兩個(gè)通信端口同時(shí)做MODBUS RTU主站,不支持同時(shí)做MODBUS RTU從站。
3.S7-200 SMART CPU作為 Modbus RTU 主站如何訪問 Modbus 地址范圍大于49999 的保持寄存器?
通常 Modbus 協(xié)議的保持寄存器范圍在 40001 到 49999 之間,這個(gè)范圍對(duì)于多數(shù)應(yīng)用來說已經(jīng)足夠了,但有些 Modbus 從站保持寄存器區(qū)的地址會(huì)超出該范圍。Modbus RTU 主站協(xié)議庫支持保持寄存器地址范圍為(40001 到 49999) 或者(400001 到 465536)。如果 Modbus 從站地址范圍為 400001 – 465536,只需在調(diào)用 MBUS_MSG 子程序時(shí)給 Addr 參數(shù)賦相應(yīng)的值即可,如 416768。
4.S7-200 SMART CPU作為 Modbus RTU 主站,多次調(diào)用 MBUS_MSG 指令時(shí),為什么該指令會(huì)出現(xiàn) 6# 錯(cuò)誤代碼?
1.同一時(shí)間只能有一條 MBUS_MSG 指令處于激活狀態(tài),如果激活多條 MBUS_MSG 指令,將執(zhí)行第一條 MBUS_MSG 指令,所有后續(xù) MBUS_MSG 指令將中止執(zhí)行并出現(xiàn) 6# 錯(cuò)誤代碼。多條 MBUS_MSG 指令的執(zhí)行需要采用輪詢方式 。
2. Modbus庫存儲(chǔ)區(qū)中分配的建議地址區(qū)與編程中已使用的V存儲(chǔ)區(qū)有重疊。
5.S7-200 SMART CPU作為 Modbus RTU 主站,從站故障或者通信線路斷開時(shí),主站會(huì)嘗試發(fā)送多次請(qǐng)求報(bào)文,從而導(dǎo)致通信時(shí)間過長。如何減少主站的重發(fā)次數(shù),以提高通信效率?
MBUS_MSG 指令被激活時(shí)將發(fā)送 Modbus 請(qǐng)求報(bào)文幀,如果在Timeout 參數(shù)定義的時(shí)間間隔內(nèi)主站未接收到從站應(yīng)答,Modbus RTU 主站協(xié)議庫默認(rèn)的情況下還會(huì)再發(fā)送 2 次 Modbus 請(qǐng)求報(bào)文幀;在最后一次請(qǐng)求報(bào)文幀發(fā)送后,經(jīng)過 Timeout 參數(shù)定義的時(shí)間間隔后還未收到應(yīng)答時(shí), MBUS_MSG 指令的 Done 完成位才被設(shè)置為 1 。將 mModbusRetries 變量的數(shù)值由 2 改為 0 ,即可取消 Modbus 請(qǐng)求報(bào)文幀的重試次數(shù)。mModbusRetries 變量的絕對(duì)地址可通過查詢Modbus RTU 主站協(xié)議庫的符號(hào)表獲取,如圖 1. Modbus RTU 主站指令符號(hào)表所示。
圖 1. Modbus RTU 主站指令符號(hào)表
6.為什么有的 HMI 軟件使用 Modbus RTU 協(xié)議可以讀取作為 Modbus RTU 從站 S7-200 SMART CPU 的數(shù)據(jù),但是不能寫入數(shù)據(jù)?
可能此軟件使用Modbus功能15寫多個(gè)開關(guān)量輸出功能到S7-200 SMART CPU時(shí),沒有遵守從站協(xié)議中“以整字節(jié)地址邊界(如Q0.0、Q2.0)開始、以8的整數(shù)倍為位個(gè)數(shù)”的規(guī)約。定義HMI 軟件嚴(yán)格執(zhí)行此規(guī)律可以避免發(fā)生寫入錯(cuò)誤的情況
7.為什么有的 HMI 軟件使用 Modbus RTU 協(xié)議讀取作為 Modbus RTU 從站 S7-200 SMART CPU 的浮點(diǎn)型數(shù)據(jù)時(shí)會(huì)出現(xiàn)錯(cuò)誤?
可能此HMI軟件使用Modbus RTU通信協(xié)議時(shí),處理保持寄存器中浮點(diǎn)數(shù)的存儲(chǔ)格式與西門子的浮點(diǎn)數(shù)存儲(chǔ)格式不同。西門子的PLC遵循“高字節(jié)低地址、低字節(jié)高地址”的規(guī)約。
8.S7-200 SMART緊湊型CPU作為 Modbus RTU 從站時(shí),已經(jīng)將 MBUS_INIT 指令的Mode 輸入?yún)?shù)設(shè)置為“1”了,但是 MBUS_SLAVE 指令還是會(huì)出現(xiàn) 10 號(hào)錯(cuò)誤(從站功能未啟用)?
S7-200 SMART緊湊型CPU 不能擴(kuò)展信號(hào)模塊,不具有模擬量輸入通道,如果MBUS_INIT 指令的MaxAI 輸入?yún)?shù)設(shè)置不為“0”,則MBUS_SLAVE 指令會(huì)出現(xiàn) 10 號(hào)錯(cuò)誤。
9.S7-200 SMART 使用S7-200的Modbus slave庫無法初始化成功?
如下圖所示,使用STEP 7-Micro/WIN SMART 直接打開S7-200 MODBUS 通信程序并做相關(guān)設(shè)置后測(cè)試,
首先,圖中的MBUS_INIT的相關(guān)參數(shù)針對(duì)200smart來說,設(shè)置均正常,但是從測(cè)試結(jié)果可以看出,初始化MBUS_INIT報(bào)錯(cuò)1:存儲(chǔ)器范圍出錯(cuò),而且MBUS_SLAVE報(bào)錯(cuò)10:從站功能未啟用
圖2. MODBUS Slave報(bào)錯(cuò)
這是因?yàn)?00的庫程序里針對(duì)過程映像區(qū)MaxIQ(0-128),AaxAI(0-32)做的報(bào)警判斷,如下圖Modbus Slave程序所示,S7-200的過程映像區(qū)最大0-31,所以超過31會(huì)報(bào)錯(cuò),【但S7-200smart的AI過程映像區(qū)最大255】
圖3. MODBUS Slave報(bào)警判斷
所以當(dāng)S7-200 SMART需要設(shè)計(jì)AI大于31的地址時(shí),考慮還是使用STEP 7-Micro/WIN SMART自己的庫。
10.S7-200 SMART CPU作為 Modbus RTU 從站時(shí),是否支持 Modbus RTU 主站發(fā)送的廣播命令?
S7-200 SMART CPU 作為 Modbus RTU 從站時(shí),不支持廣播命令。
常見問題
Modbus RTU的保持寄存器以“字”為單位,1個(gè)浮點(diǎn)型數(shù)據(jù)則由2個(gè)“字”構(gòu)成。HMI軟件在處理時(shí)可能會(huì)將保持寄存器的兩個(gè)“字”互換位置,造成不能識(shí)別以西門子格式表示的浮點(diǎn)數(shù)。如果HMI軟件一方無法處理這種浮點(diǎn)數(shù),則可在S7-200 SMART CPU中編程將存入保持寄存器區(qū)的浮點(diǎn)數(shù)的高“字”和低“字”互換。
電話:13818569113 15721373211
郵箱:fushidianji@139.com
網(wǎng)址:http://m.xiangtai88.cn
地址:上海青浦區(qū)北青公路7171號(hào)111-112室