fhy0410
級別: 略有小成
|
圖片:
圖片:
圖片:
[說得對。 不明白的地方多向前輩們請教。 在請教下程序中幾處地方:CRC校驗后,把D291的高低位分另傳入另兩個繼存器的作用是什么? 設定值這步MOV D203 D221------CRCP D200 D291 K9 這段程序的作用。能講解一下嗎?? [ 此帖被fhy0410在2019-06-17 12:31重新編輯 ] |
---|---|
|
anlyl2014
大吉大利
級別: 網絡英雄
|
你還是要看回變頻器手冊 [ 此帖被anlyl2014在2019-06-17 15:27重新編輯 ] |
|
---|---|---|
|
叫我點哥
級別: 探索解密
|
MODBUS通訊你可以簡單理解成這樣的數據格式:站號 功能碼 地址 數據 數據長度 校驗 ,實際上用觸摸屏的話你只需要關心哪個站號,用那個功能碼,對應數據地址是什么,其他的校驗這些不用操心 |
---|---|
|
anlyl2014
大吉大利
級別: 網絡英雄
|
上面手冊的例子為10命令,批量寫入; 01 10 00 11 00 02 04 13 88 0F A0 B2 49 代碼意思是:01站號地址,10批寫入命令;0011從0011H開始寫;0002共2筆;04數據量,這時是要寫入2筆,每筆2個,所以,數據量為4; 13 88 為第一寄存器11H要寫入的數據;0F A0為第二筆要寫入到12H的數據;B2 49為CRC碼 這里要做CRC計算的總數為:11個;為何我的例子為K9呢? [ 此帖被anlyl2014在2019-06-17 16:51重新編輯 ] |
|
---|---|---|
|
大吉大利
級別: 網絡英雄
|
我例子中也是用命令10,批量寫入,但是,我不寫多筆,僅寫1筆數據到2001H而已; 按上面講法, 01 10 00 11 00 02 04 13 88 0F A0 B2 49 發送的東西變成: 01 10 00 11 00 01 02 13 88 后面的0F A0就沒有,CRC碼當然不同,這里暫用XXXX代;看看,前面是不是9個?K9就這樣來的,明白沒? 當然,也可以用單個寫入命令06來寫,你自行看手冊. |
|
---|---|---|
|
anlyl2014
大吉大利
級別: 網絡英雄
|
請教下程序中幾處地方:CRC校驗后,把D291的高低位分另傳入另兩個繼存器的作用是什么? 這里也是要看手冊MODBUS RTU規范,簡單點看13樓示例,算出的CRC碼低位要先放進要發送的D219中,CRC碼的高位要放進D220中,才給RS指令發送; D210===站號 D211===命令 D212===訪問地址 D213===訪問地址 D214===寫入數1 D215===寫入數2 D216===數據量 D217===寫入數據1 D218===寫入數據2 *********共9個******** D219===CRC碼 D220===CRC碼 *********以上才組成一串MODBUS RTU碼****** 這樣說明白了嗎? [ 此帖被anlyl2014在2019-06-17 16:53重新編輯 ] |
|
---|---|---|
|
anlyl2014
大吉大利
級別: 網絡英雄
|
說得對,用HMI做MODBUS RTU通訊,超簡單,這跟三菱沒什么關系,大多數人機界面都可以做. |
|
---|---|---|
|
fhy0410
級別: 略有小成
|
anlyl2014:大師你好,經過你詳細的講解我借鑒你的例子照寫了一個程序。請看一下。有錯的地方嗎? 請指點。謝謝 |
---|---|
|
anlyl2014
大吉大利
級別: 網絡英雄
|
小數點運算那里沒必要,可用HMI來做,可參考我發的例子,臺達HMI的話,直接設顯示小數點位數即可; 行不行,你下到PLC實物驗證一下就明白了。 |
|
---|---|---|
|