最佳回答:

MBUS_CTRL 指令
必須在每次掃描時(包括首次掃描)調(diào)用 MBUS_CTRL 指令,以便其監(jiān)視 MBUS_MSG 指令啟動的任何待處理消息的進(jìn)程。 除非每次掃描時都調(diào)用
MBUS_CTRL,否則 Modbus 主站協(xié)議將不能正確工作。
“模式”(Mode) 輸入的值用于選擇通信協(xié)議。 輸入值為 1 時,將 CPU 端口分配給 Modbus 協(xié)議并啟用該協(xié)議。 輸入值為 0
時,將 CPU 端口分配給 PPI 系統(tǒng)協(xié)議并禁用 Modbus 協(xié)議。
參數(shù)“奇偶校驗”(Parity) 應(yīng)設(shè)置為與 Modbus 從站設(shè)備的奇偶校驗相匹配。 所有設(shè)置使用一個起始位和一個停止位。 允許的值如下:
0(無奇偶校驗)、 1(奇校驗)和 2(偶校驗)。
參數(shù)“端口”(Port)設(shè)置物理通信端口(0 = CPU 中集成的 RS-485,1 = 可選 CM01 信號板上的 RS-485 或
RS-232)。
參數(shù)“超時”(Timeout) 設(shè)為等待從站做出響應(yīng)的毫秒數(shù)。 “超時”(Timeout) 值可以設(shè)置為 1 ms 到 32767 ms
之間的任何值。 典型值是 1000 ms (1 s)。 “超時”(Timeout) 參數(shù)應(yīng)設(shè)置得足夠大,以便從站設(shè)備有時間在所選的波特率下做出響應(yīng)。
“超時”(Timeout) 參數(shù)用于確定 Modbus 從站設(shè)備是否對請求做出響應(yīng)。 “超時”(Timeout) 值決定著 Modbus
主站設(shè)備在發(fā)送請求的最后一個字符后等待出現(xiàn)響應(yīng)的第一個字符的時長。 如果在超時時間內(nèi)至少收到一個響應(yīng)字符,則 Modbus 主站將接收 Modbus
從站設(shè)備的整個響應(yīng)。
MBUS_CTRL 指令完成時,“完成”(Done) 輸出接通。
“錯誤”(Error) 輸出包含指令執(zhí)行的結(jié)果。
MBUS_MSG 指令
EN 輸入和“第一個”(First) 輸入同時接通時,MBUS_MSG 指令會向 Modbus 從站發(fā)起主站請求。
發(fā)送請求、等待響應(yīng)和處理響應(yīng)通常需要多個 PLC 掃描時間。 EN 輸入必須接通才能啟用請求的發(fā)送,并且應(yīng)該保持接通狀態(tài),直到“完成”(Done) 位接通。
某一時間只能有一條 MBUS_MSG 指令處于激活狀態(tài)。 如果啟用多條 MBUS_MSG 指令,將處理執(zhí)行的第一條 MBUS_MSG 指令,所有后續(xù)
MBUS_MSG 指令將中止并生成錯誤代碼 6。
有新請求要發(fā)送時,參數(shù)“第一個”(First) 會接通,并僅保持一個掃描周期。
第一個輸入應(yīng)通過沿檢測元素(例如,上升沿)以脈沖方式接通,這將導(dǎo)致請求被發(fā)送一次。 有關(guān)詳細(xì)信息,請參見示例程序。
參數(shù)“從站”(Slave) 是 Modbus 從站設(shè)備的地址。 允許的范圍是 0 至 247。地址 0 是廣播地址,只能用于寫請求。
系統(tǒng)不響應(yīng)對地址 0 的廣播請求。不是所有從站設(shè)備都支持廣播地址。 S7-200 SMART Modbus 從站庫不支持廣播地址。
參數(shù) RW 分配是讀取還是寫入該消息。 “讀寫”(RW) 允許使用以下兩個值: 0(讀?。┖?1(寫入)。
離散量輸出(線圈)和保持寄存器支持讀請求和寫請求。 離散量輸入(觸點)和輸入寄存器僅支持讀請求。
參數(shù)地址 (Addr) 是起始 Modbus 地址。 允許的取值范圍如下:
對于離散量輸出(線圈),為 00001 至 09999
對于離散量輸入(觸點),為 10001 至 19999
對于輸入寄存器,為 30001 至 39999
對于保持寄存器,為 40001 至 49999 和 400001 至 465535
“地址”(Addr) 的實際取值范圍取決于 Modbus 從站設(shè)備所支持的地址。
參數(shù)“計數(shù)”(Count) 用于分配要在該請求中讀取或?qū)懭氲臄?shù)據(jù)元素數(shù)。 “計數(shù)”(Count)
值是位數(shù)(對于位數(shù)據(jù)類型)和字?jǐn)?shù)(對于字?jǐn)?shù)據(jù)類型)。
對于地址 0xxxx,“計數(shù)”(Count) 是要讀取或?qū)懭氲奈粩?shù)
對于地址 1xxxx,“計數(shù)”(Count) 是要讀取的位數(shù)
對于地址 3xxxx,“計數(shù)”(Count) 是要讀取的輸入寄存器字?jǐn)?shù)
對于地址 4xxxx 或 4yyyyy,“計數(shù)”(Count) 是要讀取或?qū)懭氲谋3旨拇嫫髯謹(jǐn)?shù)
MBUS_MSG 指令最多讀取或?qū)懭?120 個字或 1920 個位(240 個字節(jié)的數(shù)據(jù))。 “計數(shù)”(Count) 的實際限值取決于 Modbus
從站設(shè)備的限制。
參數(shù) DataPtr 是間接地址指針,指向 CPU 中與讀/寫請求相關(guān)的數(shù)據(jù)的 V 存儲器。 對于讀請求,DataPtr 應(yīng)指向用于存儲從
Modbus 從站讀取的數(shù)據(jù)的第一個 CPU 存儲單元。 對于寫請求,DataPtr 應(yīng)指向要發(fā)送到 Modbus 從站的數(shù)據(jù)的第一個 CPU
存儲單元。
DataPtr 值以間接地址指針形式傳遞到 MBUS_MSG。 例如,如果要寫入到 Modbus 從站設(shè)備的數(shù)據(jù)始于 CPU 的地址 VW200,則
DataPtr 的值將為 &VB200(地址 VB200)。 指針必須始終是 VB 類型,即使它們指向字?jǐn)?shù)據(jù)。
保持寄存器(地址 4xxxx 或 4yyyyy)和輸入寄存器(地址 3xxxx)是字值(2 個字節(jié)或 16 個位)。 CPU 字的格式與 Modbus
寄存器相同。 編號較小的 V 存儲器地址是寄存器的最高有效字節(jié)。 編號較大的 V 存儲器地址是寄存器的最低有效字節(jié)。 下表顯示了 CPU 字節(jié)和字尋址如何與
Modbus 寄存器格式相對應(yīng)。
其他答案1:
多看例程 論壇上有