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