庫文件?
在step7-mirco/win smart編程軟件的指令中,可以找MODBUS RTU的通信庫文件:
這裏Smart作為(wei) 主站。
我們(men) 如果采用的是CPU本地的串口,那麽(me) 我們(men) 選擇庫文件為(wei) Modbus RTU Master;若是擴展通訊板,則選擇Modbus RTU Master2。
【2】庫文件的調用
初始化主站:
初始化主站指令是:MBUS_CTRL
“模式”(Mode) 輸入的值用於(yu) 選擇通信協議。輸入值為(wei) 1 時,將 CPU 端口分配給 Modbus 協議並啟用該協議。輸入值為(wei) 0 時,將 CPU 端口分配給 PPI 係統協議並禁用 Modbus 協議。
參數“奇偶校驗”(Parity) 應設置為(wei) 與(yu) Modbus 從(cong) 站設備的奇偶校驗相匹配。所有設置使用一個(ge) 起始位和一個(ge) 停止位。允許的值如下:0(無奇偶校驗)、1(奇校驗)和 2(偶校驗)。
參數“端口”(Port)設置物理通信端口(0 = CPU 中集成的 RS-485,1 = 可選 CM01 信號板上的 RS-485 或 RS-232)。
參數“超時”(Timeout) 設為(wei) 等待從(cong) 站做出響應的毫秒數。“
當 MBUS_CTRL指令完成時,指令將“真”(TRUE) 返回給“完成”(Done) 輸出。“錯誤”(Error) 輸出包含指令執行的結果。
Mode=1將 CPU 端口分配給 Modbus 協議並啟用該協議;
Baud為(wei) 波特率;Parity=0無奇偶校驗;port=0代表使用本體(ti) 通信口。
Timeout=1000ms。
設計循環計數器
因為(wei) 是半雙工,采用的是輪詢方式。為(wei) 此我們(men) 設計一個(ge) 循環計數器。
數據讀
當計數器==1時,此數據塊執行。
Slave=11代表從(cong) 站設備的通訊ID為(wei) 11;RW=0代表隻讀;Addr=432769代表從(cong) 站設備的modbus寄存器地址;count=1代表一個(ge) 字。DataPtr(間接地址指針)=&VB3200代表從(cong) VB3200開始。一個(ge) 字就是VW3200。
數據寫(xie)
與(yu) 數據讀不通的是,RW=1。
當48193=1時,變頻器啟動;當48193=5時,變頻器停止。
對應S7-200smart的地址是VW104。(count=1為(wei) 一個(ge) 字)
【3】通訊的總結
① 輪詢通訊有時間差,比如讀頻率反饋的時候,會(hui) 發現頻率反饋是非連續性的。
②可以用Done還驅動下一個(ge) 數據輪詢。但是若上一條沒有執行,那麽(me) 後麵的不會(hui) 執行?具體(ti) 可以參考庫文件的幫助。
③讀取過來的數據有可能要進行地址偏移或者數據的轉換,比如高低字的轉換,整數轉換為(wei) 浮點數,浮點數轉換為(wei) 整數等。
④首先利用ModScan32.exe或者Modbus Poll可以很好的監測數據地址及數據格式。