討論區快速選單
知識庫快速選單
程式設計俱樂部Facebook粉絲團 掌握Salesforce雲端管理秘訣
[ 回上頁 ] [ 討論區發言規則 ]
VB 寫modbus rtu
更改我的閱讀文章字型大小
作者 : vbiceman(ice)
[ 貼文 61 | 人氣 8915 | 評價 0 | 評價/貼文 0 | 送出評價 8 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/8/25 上午 09:27:47
這個問題好難阿
又不知道從何著手了
老師都一直換題目

快瘋掉了

有人可以跟我講方向嗎??
作者 : w100(Jones) Visual Basic曠世奇才貼文超過500則
[ 貼文 927 | 人氣 906 | 評價 5860 | 評價/貼文 6.32 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/8/25 上午 11:10:55
1.首先你要了解MODBUS通訊協定!
2.這個網站有一個VB的範例,你下載看看有沒有用:
   http://www.modbus.pl/vb.htm

作者 : 57805137(水瓶天賞) Visual Basic卓越專家貼文超過500則
[ 貼文 698 | 人氣 4505 | 評價 2720 | 評價/貼文 3.9 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/8/25 下午 03:46:48
http://vbctr119.myweb.hinet.net/
技術文件區...第一格modbus,如果這樣你還不會寫,也沒人可以幫你了
至少我沒用任何查表法,一個單純的計算公式
作者 : vbiceman(ice)
[ 貼文 61 | 人氣 8915 | 評價 0 | 評價/貼文 0 | 送出評價 8 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/8/25 下午 05:11:48
水瓶:

     我去看過你的技術區 問題你裡面有一個modbustest 我不懂
 為什麼你會這樣寫
 
 modbus到底是什麼??
我們老師怎麼會要我去收尋模組呢??(一塊module)

我真的不懂他的意思
作者 : vbiceman(ice)
[ 貼文 61 | 人氣 8915 | 評價 0 | 評價/貼文 0 | 送出評價 8 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/8/25 下午 05:14:09
我去看你的程式的時候
你表單下面
有3個按鈕
還有很多的何取方塊
我不了解
為什麼你要放那個


當我打開.exe檔的時候
原本的表單下半段怎麼都不見了

還有RETURN的部分
都沒有任何的訊息

我不了解那是什麼意思
作者 : 57805137(水瓶天賞) Visual Basic卓越專家貼文超過500則
[ 貼文 698 | 人氣 4505 | 評價 2720 | 評價/貼文 3.9 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人vbiceman註記此篇回應為最佳解答 2008/8/25 下午 09:17:02
MODBUS的核心就只是網頁上那段程式,其他都是變化
沒什麼特殊
就只是組合 解碼
你要湊成一個模組的話
Dim C_byttrs(7) As Byte
上面是全預變數
Private Sub check_MOD_crc()
 Dim lonCRC As Long
 Dim intCnt As Integer
 Dim intBit As Integer
 Dim intLeng As Integer
 Dim intTemp As Integer
lonCRC = &HFFFF&

    For intCnt = 0 To 5
     lonCRC = lonCRC Xor C_byttrs(intCnt)
     For intBit = 0 To 7
     intTemp = lonCRC Mod 2
     lonCRC = lonCRC \ 2
     If intTemp = 1 Then
     lonCRC = lonCRC Xor &HA001&
     End If
     Next intBit
    Next intCnt

    C_byttrs(6) = lonCRC Mod 256
    C_byttrs(7) = lonCRC \ 256
    
End Sub
重點是算出 crc
作者 : vbiceman(ice)
[ 貼文 61 | 人氣 8915 | 評價 0 | 評價/貼文 0 | 送出評價 8 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/9/3 上午 10:27:43
水瓶大大

Private Sub check_MOD_crc()

這個你是使用什麼元件??
作者 : 57805137(水瓶天賞) Visual Basic卓越專家貼文超過500則
[ 貼文 698 | 人氣 4505 | 評價 2720 | 評價/貼文 3.9 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/9/3 上午 11:09:41
function是什麼元件?就只是一個副程式
懶的用傳直的方式去寫了,所以用全域變數去寫
你也可以改成sub
作者 : buwa(BuwaSoft)
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2009/5/11 上午 11:24:29
小弟剛完成一個ModBus 程式,可以測試參考看看!!

http://sites.google.com/site/buwasoft/modbus-rtu-viewer-1
作者 : triode(破咖啡)
[ 貼文 7 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/7/20 上午 08:40:54
to 水瓶:
     可以請問你技術文區第一格的MODBUS範例如果要用Function code 16該如何設定?
     一主一從 想存入的位址為Pr.535&Pr.534 存入的值為99999999
     是否為
   Dim byttrs(12) As Byte

    byttrs(0) = 1
    byttrs(1) = 16
    byttrs(2) = 2
    byttrs(3) = 22
    byttrs(4) = 0
    byttrs(5) = 2
    byttrs(6) = 4
    byttrs(7) = 39
    byttrs(8) = 15
    byttrs(9) = 39
    byttrs(10)=15
   ~~~~~~~~~~~
   ~~~~~~~~~~~
   byttrs(11) = lonCRC Mod 256
   byttrs(12) = lonCRC \ 256

     我試過Function Code4 &6 是沒有問題的,但Function Code 16經過測試後似乎無法傳遞,所以才想問說byttrs設定為何?
     還有有其他地方的設定需要修改?
作者 : 57805137(水瓶天賞) Visual Basic卓越專家貼文超過500則
[ 貼文 698 | 人氣 4505 | 評價 2720 | 評價/貼文 3.9 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/7/22 上午 08:05:48
多比傳輸的寫法
ID +16 +起始位置(XXXX)+傳輸筆數N(XXXX)+資料數(XX)=傳輸筆數NX2+資料N....+CRC
這樣應該很清楚了吧...
CRC的公式要修改...因為這邊的傳輸筆數不同
為了省方便都會固定
依照你的狀況
啟始位置=534
傳輸筆數N=2
資料數 4
作者 : triode(破咖啡)
[ 貼文 7 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/7/22 上午 09:24:16
所以說我在byttrs設定的值是正確的
有必要改的是CRC校驗的地方?
那如果需要修正CRC校驗又該如何下手呢?
因為VB也是這幾個月才自學的
通訊的部分我還沒有能力自己轉換成VB的語言
所以CRC校驗的部份才參考你的程式
可以請你告訴我該如何更改CRC嗎?
謝謝
作者 : triode(破咖啡)
[ 貼文 7 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/7/22 上午 09:24:58
所以說我在byttrs設定的值是正確的
有必要改的是CRC校驗的地方?
那如果需要修正CRC校驗又該如何下手呢?
因為VB也是這幾個月才自學的
通訊的部分我還沒有能力自己轉換成VB的語言
所以CRC校驗的部份才參考你的程式
可以請你告訴我該如何更改CRC嗎?
謝謝
作者 : triode(破咖啡)
[ 貼文 7 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/7/22 上午 09:42:31
lonCRC = &HFFFF&

     For intCnt = 0 To 10
     lonCRC = lonCRC Xor byttrs(intCnt)
     For intBit = 0 To 12

     intTemp = lonCRC Mod 2
     lonCRC = lonCRC \ 2
     If intTemp = 1 Then
     lonCRC = lonCRC Xor &HA001&
     End If
     Next intBit
     Next intCnt

請問水瓶是這樣改嗎? 還是??

剛剛不是故意發兩篇同樣的,而是因為網路lag了一下...
想刪除又不知如何刪除,所以很抱歉
作者 : 57805137(水瓶天賞) Visual Basic卓越專家貼文超過500則
[ 貼文 698 | 人氣 4505 | 評價 2720 | 評價/貼文 3.9 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/7/22 下午 11:50:59
For intCnt = 0 To 10....只需要改這邊
作者 : triode(破咖啡)
[ 貼文 7 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/7/23 上午 08:36:46
謝謝水瓶的熱心指點~

現在我把修改後的CRC-16放上來供後來有需要的人參考

lonCRC = &HFFFF&

     For intCnt = 0 To UBound(byttrs)
     lonCRC = lonCRC Xor byttrs(intCnt)
     For intBit = 0 To 7

     intTemp = lonCRC Mod 2
     lonCRC = lonCRC \ 2
     If intTemp = 1 Then
     lonCRC = lonCRC Xor &HA001&
     End If
     Next intBit
     Next intCnt
作者 : triode(破咖啡)
[ 貼文 7 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/7/23 上午 11:01:22
For intCnt = 0 To UBound(byttrs-2)

忘了減2,補字
作者 : triode(破咖啡)
[ 貼文 7 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/7/24 下午 05:34:31
For intCnt = 0 To UBound(byttrs)-2
 板主 : 小樓
 > Visual Basic 6.0/VBA - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Visual Basic 6.0/VBA - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Visual Basic 6.0/VBA
1 阿戊 10670 
2 小樓 8650 
3 Jones 5270 
4 水瓶天賞 2340 
5 joe 2230 
6 史努比 1950 
7 阿呆紅 1440 
8 tt's 1250 
9 青衫 1150 
10 羅啟章 1020 
Visual Basic 6.0/VBA
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.171875