MODBUS-RTU通訊問題
劉玉蓉
發(fā)布于2014-10-09 15:30
74
0
標(biāo)簽:
MB_MASTER中DATA_PTR之DB如何定義,為何出現(xiàn)16#818C錯誤;如改為MW200則出現(xiàn)16#818B錯誤;請問錯誤在那里?
問題補(bǔ)充:
1.首先感謝左傳及l(fā)ee nd2009之協(xié)助,原16#818C或16#818B錯誤已解決;但新問題如下:連接外設(shè)儀表是一個PID溫控器,F(xiàn)C03范圍為0~138,用RS485直接電腦測試顯示都沒問題;經(jīng)由S7-1200讀不到資料,圖片如附加3張,煩請?jiān)僦刚x謝!
圖片說明: 1,MB_Master ONLINE 2,MB_master 3,MB_MASTER_DB 4,MB_DB
佳答案
1、錯誤信息:818B 指向本地?cái)?shù)據(jù)源/目標(biāo)的指針無效: 大小不正確
818C DATA_PTR 的指針無效或 Blocked_Proc_Timeout 無效。必須是 DB(允許符號訪問和直接訪問)或 M 存儲器。
2、 MB_MASTER中DATA_PTR之DB如何定義?
DATA_PTR 參數(shù)指向要寫入或讀取的 DB 或 M 地址。 如果使用數(shù)據(jù)塊,則必須創(chuàng)建一個全局?jǐn)?shù)據(jù)塊為讀寫 Modbus 從站提供數(shù)據(jù)存儲位置。
說明
DATA_PTR 數(shù)據(jù)塊類型必須允許直接尋址
該數(shù)據(jù)塊必須允許直接(絕對)尋址和符號尋址。 創(chuàng)建該數(shù)據(jù)塊時(shí),必須選擇“標(biāo)
準(zhǔn)”(Standard) 訪問屬性。
DATA_PTR 參數(shù)的數(shù)據(jù)塊結(jié)構(gòu)
● 這些數(shù)據(jù)類型對 Modbus 地址 30001 到 39999、40001 到 49999 和 400001 到
465536 的字讀取有效,對 Modbus 地址 40001 到 49999 和 400001 到 465536 的字
寫入也有效。
– WORD、UINT 或 INT 數(shù)據(jù)類型的標(biāo)準(zhǔn)數(shù)組
– 指定的 WORD、UINT 或 INT 結(jié)構(gòu),其中每個元素都具有唯一的名稱和 16 位數(shù)據(jù)
類型。
– 指定的復(fù)雜結(jié)構(gòu),其中每個元素都具有唯一的名稱以及 16 或 32 位數(shù)據(jù)類型。
● 用于 Modbus 地址 00001 到 09999 的位讀取和寫入和 10001 到 19999 的位讀取。
– 布爾數(shù)據(jù)類型的標(biāo)準(zhǔn)數(shù)組。
– 具有唯一名稱的布爾變量的指定布爾結(jié)構(gòu)。
3、你的錯誤之處在于:(1)MODE 和 Modbus 地址一起確定實(shí)際 Modbus 消息中使用的功能代碼。根據(jù)你的程序選擇的MODE 為0,Modbus地址是:1,兩者確定的功能是:每個請求 ,讀取輸出位:1 到 1992 或 2000 個位
(2)你在DATA_PTR程序輸入MW200 ,顯然數(shù)據(jù)的長度不能滿足,它只有16位,而你讀1-2000個位,所以出現(xiàn)16#818B錯誤。
(3)你在DATA_PTR程序輸入“MB_DB"塊指針無效,可能的原因:A、數(shù)據(jù)長度不夠,B、你引用的數(shù)據(jù)塊沒有選擇必須選擇“標(biāo)準(zhǔn)”(Standard) 訪問屬性。
導(dǎo)致你程序出現(xiàn)的錯誤16#818C錯誤。
可以參考:《S71200的說明書》
https://www2.ad.siemens.com.cn/download/Upload/AS/manual/39710145[1].pdf
例子可以參考:《如何通過Modbus RTU協(xié)議實(shí)現(xiàn)S7-1200 與PAC3200的通信》
https://www2.ad.siemens.com.cn/download/Upload/AS/application/A0403.pdf