
03 讀保持寄存器
40001-49999
字操作
單個或多個
不應該是只能讀的嗎?
在使用Modbus協議的時候,經常會遇到諸如40001、30001,10001之類的地址,這些數字代表什么含義呢?這其實是Modbus協議的數據模型和地址模型。
通常授權如五軸轉換或主從功能只需勾選相應的授權進行就可以,但有些特殊功能如RDCC(冗余分布式笛卡爾坐標系)屬于編譯循環(.ELF),除了必須勾選相應的授權,還需要進行其他的操作。
一般購買了相應的編譯循環后,西門子家會提供一個專門的文件夾里面裝有編譯循環的說明文件,對應的報警文件和***重要的編譯循環。
1.首先需要將對應編譯循環(xxx.ELF)拷入到調試-系統數據-NC數據-編譯循環目錄下
2.N26授權(RDCC)
3.重啟PO
4.重啟完成后通用機床數據會出現60900的新參數,勾選60900[0] $MN_CC_ACTIVE_IN_CHAN_RDCC bit0 ,即1H
5.再次重啟后就會在通道機床數據中出現新的6開頭的變量了
這樣就可以按照相應的功能說明設置參數,使用了。
注:
裝了編譯循環時,備份除標準的MMC/PCLC/NC/補償外,會多一項編譯循環選項,若選擇備份,可以用記事本打開查詢到CCOEM目錄及ELF文件。故備份的時候須勾選編譯循環,保留所有的參數設置,才可用sinutrain完整仿真。
Modbus協議的數據模型
數據模型是對從站設備可訪問的數據進行抽象,Modbus協議的數據模型定義了四種可訪問的數據:
數據區塊 數據類型 訪問類型 線圈(Coils) 布爾 讀/寫 離散量輸入(Discrete Input) 布爾 只讀 輸入寄存器(Input registers) 無符號2字節整型 只讀 保持寄存器(Holding registers) 無符號2字節整型 讀/寫 其中,離散量輸入和線圈數據類型是布爾量,因此只支持以位(bit)的方式進行訪問,輸入寄存器和保持寄存器數據類型是無符號2字節整型,因此支持以字的方式進行訪問。當主設備訪問從設備的這些數據模型時,離散量輸入和輸入寄存器只支持以只讀的方式進行訪問,而線圈和保持寄存器既可以讀也可以寫。
地址前綴編號 編號范圍
(1~65536)編號范圍
(1~9999)數據區塊 數據類型 訪問類型 0 000001~065536 00001~09999 線圈(Coils) 布爾 讀/寫 1 100001~165536 10001~19999 離散量輸入
(Discrete Input)布爾 只讀 3 300001~365536 30001~39999 輸入寄存器(Input registers) 無符號2字節整型 只讀 4 400001~465536 40001~49999 保持寄存器(Holding registers) 無符號2字節整型 讀/寫 數據模型中的每一種數據區塊都較多允許有65536(2^16)個元素,Modbus定義了每個數據元素的地址,范圍從0到65,535。但是每個數據元素的編號從1開始,范圍從1到65,536。
需要說明的是:65536只是協議允許的較大元素范圍,并不要求全部實現。Modbus協議允許設備根據自己的實際情況實現部分元素,甚至不要求實現模型中全部四種數據模型。譬如設備可能會選擇不執行線圈、離散輸入或輸入寄存器,而只使用保持寄存器150至175和200至225。這是完全可以接受的,并且通過異常來處理無效的訪問。