leonhuang
級別: 略有小成
|
描述:通訊讀寫格式
圖片:
描述:儀表設定
圖片:
描述:儀表通訊方式設定
圖片:
描述:儀表數據存取地址
圖片:
描述:編寫的程序1
圖片:
描述:編寫的程序2
圖片: 不懂通訊的菜鳥,請各位大佬教教我。 通訊格式我看了些資料,有基本的認識。但是在編寫程序的過程中有一些不懂。 一、就編寫程序是用8位還是16位即M8161的選擇。因為我T3儀表(圖片:儀表數據存取地址,功能地址40005,毛重;占兩個寄存器、32位,4字節有符號只讀)的寄存器是否影響位數與RS指令的編寫? 二:編寫數據格式,{RS D0 Kn D30 Kn},Kn的個數如何確定。如[MOV H1 D0] [MOV H3 D1] [MOV H5 D2] [MOV H2 D3] [MOV H核驗碼? D4] 那這樣是不是就5個。8位與16位數據格式,地址碼到校驗碼個數是否不一樣? 三、8位和16位的格式,D0(b15 b14 b13 b12 b11 b10 b9 b8 b7 b6 b5 b4 b3 b2 b1 b0),8位是處理b0-b7;16位是處理b0-b15。 8位的編寫:[MOV H1 D0] [MOV H3 D1] [MOV H5 D2] [MOV H2 D3] 在第一點中說的功能地址0005占兩個寄存器、共4個字節、32位;那數據個數這樣編寫是不是就有問題了? 16位的編寫:[MOV H1 D0] [MOV H3 D1] [MOV H5 D2] [MOV H2 D3] 三、CRC校驗如何編寫,我這個程序的CRC校驗碼是什么? 四、回傳數據的處理。回傳回來的數據是放在D33、D34中,還是D33、D34、D35、D36中?[MOV D30 D50 K10 ] 如果是16位處理,那數據是放在D53與D54,那程序:[MOV D54 K4M10] [MOV D53 K4M26] [MOV K4M10 D100]最終數據存在D100、D101中? 這樣的理解是不是有問題? [ 此帖被leonhuang在2019-07-04 14:06重新編輯 ] |
---|---|
|
anlyl2014
大吉大利
級別: 網絡英雄
|
你可以參考我發的例子, 你有PDF格式的壓力表手冊的話,就傳上來看看,貼圖看不清楚 |
|
---|---|---|
|
anlyl2014
大吉大利
級別: 網絡英雄
|
如果你用的是FX3U就照著我的例子做,FX3U有CRC指令,程序相對簡單 http://rob-thebuilder.com/job-gkaction-download-pid-tpc-tid-1666109-aid-232721.html |
|
---|---|---|
|
anlyl2014
大吉大利
級別: 網絡英雄
|
注意一項: 1.通訊方式設為12;跟例子一模一樣了; 2.看你的手冊,40001和40002是凈重;在PLC程序的地址是:H0/H1;可以讀連續2個數的形式讀出再合并成32位數; 3.同理,40005和40006是毛重;在PLC程序的地址是:H4/H5 4.你先用MODSCAN32軟件,驗證你的變送器設置的通訊格式、接線對不對,是否能讀出數據,這步很重要,如能讀出,說明設定沒問題,MODSCAN32軟件網站 有人發過可下; 5.例子是與4個從站通訊,若只讀一個站,程序修改一下,只掃描1個站即可。 |
|
---|---|---|
|
anlyl2014
大吉大利
級別: 網絡英雄
|
1、站號,讀命令這都好理解。讀存儲器40005+40006=4個字節32位;按您說的是讀05和06存儲器,M0V H5 D212高位、MOV H6 D213低位,而不是只寫一個存儲器0005?(MOV H0 D212;MOV H5 D213) =====你這里有問題,我沒實物,你必須動手驗證;通常,40005,在軟件里是4+40001的,你要自己驗證,樓上說的沒錯,每一家商廠都不一定相同;還有,讀命令03,可以讀連續多個寄存器,例如,要讀H4和H5這2個的數值,就這樣寫:01 03 00 04 00 02后面是CRC |
|
---|---|---|
|
anlyl2014
大吉大利
級別: 網絡英雄
|
是的,你還要一個RS232轉RS485的東東,淘寶有賣的,幾十塊一個;然后,用電腦MOSDCAN32直接與儀表通訊 如果這邊都可以了,再寫PLC程序,就簡單得多了,就不有考濾儀表這邊的事情. |
|
---|---|---|
|
anlyl2014
大吉大利
級別: 網絡英雄
|
選03,不是04; 通訊格式設定要與儀表相同,建議你設為MODBUS RTU 8N2;儀表設模式12, |
|
---|---|---|
|
anlyl2014
大吉大利
級別: 網絡英雄
|
除了通訊速率格式要完全相同之外,還要注意接線,正負不可接錯,錯的話不可以通訊;儀表地址不可設為0,要設成0以外的地址,通常,0地址為上位機 軟件中的Device ID就是儀表地址 [ 此帖被anlyl2014在2019-07-11 12:47重新編輯 ] |
|
---|---|---|
|
anlyl2014
大吉大利
級別: 網絡英雄
|
看14樓;軟件設為03, [ 此帖被anlyl2014在2019-07-11 13:22重新編輯 ] |
|
---|---|---|
|
anlyl2014
大吉大利
級別: 網絡英雄
|
看你第二張圖,沒連線,如果通訊OK,不會有紅字出現 通訊OK的話,40005.40006就是你要讀出的數, |
|
---|---|---|
|
anlyl2014
大吉大利
級別: 網絡英雄
|
要注意電腦COM口是否正確 軟件設置要跟儀表相同 連線正確,對應的地址會出現數值 [ 此帖被anlyl2014在2019-07-13 10:12重新編輯 ] |
|
---|---|---|
|
anlyl2014
大吉大利
級別: 網絡英雄
|
通訊端口的設置已經改為,RTU,8位數據,無校驗,2位停止;地址01,9600波特率======指的軟件還是儀表?這兩個要相同, 你儀表F06=12;MODBUS RTU;8N2 F07=1;地址為1; F08=9600;通訊速率 發送的信息;回傳信息先不管,連線,通訊OK的話,就不會有紅字警報 還有,看你之前發的圖,你儀表485A 485B接有兩條線,還接到哪里? 單獨接到RS232轉RS485,不要接到別處 [ 此帖被anlyl2014在2019-07-12 23:16重新編輯 ] |
|
---|---|---|
|