亚洲高清视频网站-亚洲人精品午夜射精日韩-国产日韩第一页-国产婷婷在线观看-av动漫在线播放-欧美丰满艳妇bbwbbw

 
當前位置: 首頁 » 技術中心 » 行業論文
 
行業論文

基與Modbus規約的智能儀表與PC機通信技術實現

字體: 放大字體  縮小字體 發布日期:2007-07-20  瀏覽次數:309

    摘要:本文主要介紹Modbus RTU規約,及在VB6.0編程環境下通過RS-485串口實現主控臺PC機與智能儀表間基與該規約通信的具體實現方法。
    關鍵詞:Modbus RTU;通信協議;RS-485;CRC校驗
1 引言
    隨著時代的進步,越來越多的企業開始向生產和管理自動化轉變。各種智能儀表不斷地應用到生產生活的各個領域。在工業控制方面,RS-485總線由于平衡差分傳輸特性具有的干擾性好、傳輸距離遠 、有較大級連能力等特點,非常適合于組成工業級的多機通信系統。ModBus RTU規約是Modicon公司的注冊商標,是目前國際智能化儀表普遍采用的主流通訊協議之一。在各個工業儀器儀表大量使用的今天,Modbus RTU協議和RS-485總線得到了最為廣泛的應用。本文主要從應用的角度介紹在一個工業控制系統中,實現該技術的具體方案。
2  Modbus  RTU 通訊協議簡介
    (1) Modbus RTU協議簡介 
    ModBus RTU通訊協議是Modicon公司的注冊商標。采用主從問答方式工作,其規范已在國際互聯網上公布,是目前國際智能化儀表普遍采用的主流通訊協議之一。目前,國內許多生產商已在他們的產品和系統中遵循該協議標準。該協議有兩種傳輸模式即RTU模式和ASCII模式。其中RTU模式信息幀中的8位數據包括兩個4位16進制字符,相對于ASCII模式,RTU模式表達相同的信息需要較少的位數,且在相同通訊速率下具有更大的數據流量。因此通常情況下,一般工業智能儀器儀表都是采用RTU模式的Modbus規約。 
   (2) Modbus 通信格式
    當通訊命令由發送設備(上位機)發送至接收設備(下位機)時,符合相應地址碼的下位機就會響應命令,并根據約定的通信協議讀取信息、數據校驗并且執行相應的功能操作。返回的幀結構包含地址碼、功能碼、數據以及CRC校驗碼。 
   (3)上下位機通信幀約定格式       
    其中的儀表地址在使用的電壓表中是為一個字節定義的,所以最多到256個。下位機與上位機的通信波特率一般可自由設定,但必須保證上下機的通信波特率對應匹配。 
 
    3 上位機通信軟件設計方案
    上位機的通信軟件采用VB6.0的開發環境。在VB6.0中對串口進行編程可以使用Mscomm控件加快開發進度。該控件主要是為RS-232的通用串口而設計。所以為了利用PC上現有的RS-232接口,通常是使用RS232/485的轉換器。這些轉換器一般通過邏輯門電路控制RXD、TXD和GND三針信號,從而自動對半雙工或全雙工的485串口進行控制。通過轉換器,我們就可以像開發通用的RS-232串口一樣來快速開發基于RS-485串口的上位機通信軟件。 
   (1)初始化程序設計
    在初始化程序中,主要是設定好整個幀結構的命令數組、傳輸波特率、以及一些必須的串口初始設定。具體的操作如下面代碼說明
Dim Tcommand(7) As Byte      ‘開辟命令幀的幀長度數組
MSComm.CommPort = 1        ‘設定需要使用的串口,當然這里可以用輸入方式靈活設定。暫定為1???
MSComm.Settings=2400,n,8,1  ‘設定傳輸的波特率和校驗方式
MSComm.InBufferSize = 1024     ‘開辟數據緩沖區
MSComm.InputMode =comInputModeBinary    ‘設定為二進制的數據流方式
MSComm.InputLen = 0                      ‘一次全部讀入所需要的數據
……
    上面的代碼一般都是串口初始化必須進行設定的幾個部分。根據個人需要可以在VB6.0中做一個初始化界面,對各個參數(如波特率、使用串口等)進行自由設定和更改,以提高初始化設定的靈活性和通用性。 
   (2)命令字發送 
    命令字發送應該嚴格按照Modbus規約所設計的幀格式和上下位機在該規約基礎上所定義的通信協議。參考表1的通信協議順序,編寫如下的VB代碼來實現命令的發送。
Tcommand (0) = address               ‘  address為設定的接受地址輸入的變量
Tcommand (1) = Val(&h + 03) 
……(其他的通信協議,并計算CRC校驗代碼)
Tcommand (6) = CRC(1)
Tcommand (7) = CRC(0)
frmcontrol.MSComm.Output = Tcommand
…… 
   (3)上位機接收和數據處理 
    根據表2的回送通信協議,上位機解析所接受的數據,并進行必要的處理。一般而言從下位機發送上來的數據都是有一定的幀長度。特別是對于一些固化好的智能儀表。所以最好的方法是按照通信回送的幀長度,在上位機程序中分別開辟兩個同樣長度的數組。一個作為接受數組,用來一次性接收串口緩沖區中的數據;另一個為安全數組,用來復制接收數組中的數據并進行解析。這樣可以提高整個系統的容錯能力。
LoopUntil frmcontrol.MSComm.InBufferCount = 9
InByte = frmcontrol.MSComm.Input
For i = 0 To (count - 1)
   InSafeArray(i) = InByte(i)
Next i
其代碼中的inbyte()就是接收數組,而InSafeArray()就是我們再開辟的安全數組。
    (4)CRC校驗的實現方法 
    按照Modbus規約的校驗方式,RTU模式的校驗方式為CRC校驗方式;而ASCII模式為LRC校驗。一般的智能儀表多采用RTU的CRC校驗方式。根據生成多項式的不同,CRC校驗通常有以下幾種:CRC-12 (傳6bit);CRC-16(美國標準,傳8bit);CRC-CCITT(歐洲標準,傳8bit);CRC-32(point-to-point同步傳輸中使用) 。目前儀表類比較普遍的是CRC-16的校驗碼。其生成多項式為X16+X15+X2+1。在算法實現上,我們可以先預置一個16位的寄存器FFFF(全1),然后把8位的2進制數據(一個字節)與16位的CRC寄存器低8位異或,并把結果放回CRC寄存器同時寄存器內容右移,MSB補0,并檢查移出的LSB。如果LSB為0則繼續右移動,為1則CRC寄存器與多項式異或。重復上面操作到一個8bit字節完成,再繼續對下一個數據進行相同處理,直到所有數據結束。這個時候CRC寄存器中的數據就是我們所要的CRC碼了。實現代碼如下:
CRC16Lo = &HFF                              ‘CRC16Lo為CRC寄存器低8位
  CRC16Hi = &HFF                              ‘CRC16Hi為CRC寄存器高8位
  CL = &H1
  CH = &HA0                                    ‘A001 H 是CRC-16多項式代碼
  For i = 0 To UBound(Data)
     CRC16Lo = CRC16Lo Xor Data(i)             ‘每一個數據與CRC寄存器異或
      For index = 0 To 7
         UseHi = CRC16Hi
         UseLo = CRC16Lo
         CRC16Hi = CRC16Hi 2
         CRC16Lo = CRC16Lo 2                  ‘右移一位
         If ((UseHi And &H1) = &H1) Then       ‘如果高位字節最后一位是1的話
             CRC16Lo = CRC16Lo Or &H80          ‘低位字節右移后前面補1
         End If
         If ((UseLo And &H1) = &H1) Then        ‘如果LSB 為1,則與多項式進行異或
               CRC16Hi = CRC16Hi Xor CH
               CRC16Lo = CRC16Lo Xor CL
         End If
         Next index
     Next i

    4 下位機工作系統設計簡介
    下位機一般是使用固化好通信協議及工作指令的單片機。因為測控系統多采用的是單發多收的通信機制,所以在下位機要允許用戶預先設定本機的地址碼,并且保證不能重復。此外,要注意通信波特率必須與上位機的波特率相匹配。在下位機軟件開發中,要遵循Modbus規約的通信幀結構對上位機傳輸的命令進行解析:非呼叫對象應能及時重新恢復等待接受狀態;響應呼叫的下位機要解析命令代碼并進行相應的功能處理,對非法的命令操作要能回送報錯信息。
    在具體的工程開發中,下位機多是采用各個廠家出品的基與Modbus規約的智能儀表。這樣雖然簡化了我們開發的工作量,但是下位機的合理安排與設計能降低系統誤碼率、提高可靠性。因此是每個工業系統設計人員所不應該忽略的重要部分。在工業控制中,因為各種干擾源的存在且一般下位機數量較大,要對RS-485芯片選型有很認真的考慮。條件許可的話盡量選用抗電擊和有較大級連驅動能力的芯片。理論上485芯片的級連能力至少32門,目前很多芯片廠家都能使工業級的級連數達到128以上。在實際應用中應該讓系統具有一定的富余度,一般級連數不能超過該器件滿載的70%。在選配RS232到RS485轉換頭的時候也應該盡量選用有源的轉換器,以提高驅動能力和穩定性。此外,工業現場的降噪、隔離、布線、屏蔽等等措施的合理與否也會對最后系統的穩定產生影響。

    5 結束語
    作者在實際的測控系統項目開發中,通過VB6.0結合SQL數據庫編程,開發了基于該通信協議的上位機的測控管理軟件,并利用RS-485總線實現了對基于該規約的各種下位機的監控和數據處理。在生產活動自動化,通信協議規范化,信息交流國際化的今天,充分利用現有的成熟而規范的通信協議能最大限度地節約開發成本,降低開發風險,提高系統的兼容性和可移植性。Modbus RTU規約作為智能儀器儀表領域大量使用的國際化通信協議,必將得到更加普遍的推廣和應用。 

參考文獻
【1】 Visual Basic 6.0程序員指南;(美)Microsoft公司著;北京希望電子出版社;1999.2;P9-22,P304-394
【2】 實用Visual Basic 6教程;(美)Bob Reselman,Richard Peasley著;清華大學出版社;2001.3; P489-500
【3】 基于MODBUS協議通信的設計與實現  ; 潘洪躍  ;計量技術 ; 2002. No 4 ;P35-36

 
免責聲明:
本站所提供的文章資訊、圖片、音頻、視頻來源于互聯網及公開渠道,僅供學習參考,版權歸原創者所有! 如有侵犯您的版權,請通知我們,我們會遵循相關法律法規采取措施刪除相關內容。


 
[ 技術中心搜索 ]  [ 加入收藏 ]  [ 告訴好友 ]  [ 打印本文 ]  [ 關閉窗口 ]

 
 
熱點資訊
圖文推薦
 
 
 
 
国产片高清在线观看| 2025中文字幕| 日韩a∨精品日韩在线观看| 国产又粗又猛又爽| 6—12呦国产精品| 手机看片久久久| 成人在线免费看视频| 久久国产精品二区| 在线观看天堂av| 一级特黄曰皮片视频| 精品国产国产综合精品| 免费成人美女女在线观看| 51精品免费网站| 强行糟蹋人妻hd中文| 国产一国产二国产三| 精品成人免费视频| 日本五十熟hd丰满| 熟女人妻在线视频| 亚洲欧美日韩网站| 蜜桃福利午夜精品一区| 亚洲天堂国产视频| 久久久久久综合网| 又黄又色的网站| 加勒比精品视频| 欧美日韩在线免费播放| 五月天色婷婷综合| 国产无遮挡又黄又爽在线观看| 日本女人性视频| 亚洲 小说 欧美 激情 另类| 中文字幕免费高清| 妖精视频在线观看免费| 免费无遮挡无码永久在线观看视频 | 宇都宫紫苑在线播放| 日本人妻一区二区三区| 国产人妻黑人一区二区三区| 国产精品揄拍100视频| 欧美性x x x| 一级片在线观看免费| 91在线你懂的| 日日噜噜夜夜狠狠久久丁香五月| 成人三级视频在线播放| 日本护士做爰视频| 久草视频免费在线| a级片在线视频| 国产96在线 | 亚洲| 先锋资源在线视频| 国产精品jizz| 国产探花在线播放| 国产大片免费看| 6080午夜伦理| 风流少妇一区二区三区91| 亚洲国产精品无码观看久久| 日本在线观看视频一区| 天天躁夜夜躁狠狠是什么心态| 欧美日韩乱国产| 艳母动漫在线观看| 曰本三级日本三级日本三级| 波多野结衣家庭教师| 国产裸体永久免费无遮挡| 色欲色香天天天综合网www| 日韩精品xxx| 日本一级一片免费视频| 日韩第一页在线观看| 三上悠亚 电影| 国产毛片aaa| 久久视频这里有精品| 亚洲理论片在线观看| 一级黄色免费片| 97成人在线观看视频| 国产精品揄拍100视频| 香蕉污视频在线观看| 日本精品久久久久久| 国产精品一区二区羞羞答答| 中文字幕一区二区三区四区五区人| 国产熟人av一二三区| 欧美熟妇精品一区二区| 亚洲天堂网av在线| 伊人久久成人网| 成人免费播放器| 国产白嫩美女无套久久| 69国产精品视频免费观看| 色婷婷综合久久久久中文字幕| 亚洲一级黄色录像| 黄色一级大片在线免费看国产一| gogo亚洲国模私拍人体| 国产一区免费看| 欧美成人福利在线观看| 日韩欧美三级在线观看| 国内外免费激情视频| 国产主播在线播放| 免费午夜视频在线观看| 国产亚洲成人av| 亚洲熟妇av一区二区三区| 久操视频免费在线观看| 激情内射人妻1区2区3区| 欧美成人aaaaⅴ片在线看| 黄色一级片av| 美女被爆操网站| 特级西西444www大胆免费看| 五月天婷婷激情视频| 久久精品这里有| 熟妇熟女乱妇乱女网站| 日韩精品一区中文字幕| 成人免费精品动漫网站| 丰满的少妇愉情hd高清果冻传媒 | www.亚洲激情| 免费黄视频在线观看| 成人精品在线播放| 欧美成人短视频| 日韩avxxx| 亚洲视频久久久| 国产精品美女高潮无套| 成人一级生活片| 一级黄色大片视频| 第四色在线视频| 麻豆tv在线播放| 中文字幕在线观看你懂的| 精品无码在线视频| 国产尤物av一区二区三区| 女人十八岁毛片| 中文字幕一区二区人妻在线不卡| av在线播放天堂| 伊人网av在线| 国产黄色三级网站| 丰满少妇xoxoxo视频| 最新中文字幕2018| 亚洲经典一区二区三区| 九九热精品国产| 无码人妻精品一区二| 激情视频综合网| 国产又粗又黄又爽视频| 性生交大片免费全黄| 国产chinasex对白videos麻豆| 一级在线观看视频| 久热在线视频观看| 国产91在线亚洲| 国产精品久久久国产盗摄| 欧美日韩中文字幕在线观看| www.黄色网| 18禁免费无码无遮挡不卡网站| 国产精品无码一区二区三| 国产情侣一区二区| 欧美风情第一页| theporn国产精品| 男人天堂网站在线| 久久久精品视频免费观看| 亚洲美女精品视频| 99久久国产宗和精品1上映| 日本黄色大片视频| 中文字幕无线码一区| 精品国产精品国产精品| 香港三级日本三级| 亚洲免费在线播放视频| 波多野结衣家庭教师在线播放| 国内毛片毛片毛片毛片| 欧美成人一区二区三区四区| 99久久99久久精品国产| 影音先锋制服丝袜| 涩视频在线观看| 四虎成人在线播放| 999久久欧美人妻一区二区| 欧美卡一卡二卡三| 2019男人天堂| 国产综合精品在线| 激情 小说 亚洲 图片: 伦| 天堂成人在线观看| 这里只有久久精品视频| 中文字字幕在线中文乱码| 亚洲AV无码成人精品区东京热| 日韩人妻无码一区二区三区99| 欧美极品aaaaabbbbb| 欧美丰满艳妇bbwbbw| 精品99久久久久成人网站免费| www.xx日本| 国产一级淫片久久久片a级| 波多野结衣片子| 久久精品无码一区| 久久精品—区二区三区舞蹈| 欧美一级小视频| 亚洲精品国产一区二区三区| 奇米视频888| 婷婷中文字幕在线观看| 男男受被啪到高潮自述| 激情小说欧美色图| 亚洲 欧美 日韩在线| 少妇光屁股影院| 欧美性生交大片| www.天天色| 中文字幕在线网站| 日韩一级片免费| 国产一级精品毛片| 国产深喉视频一区二区| 性色av一区二区三区四区| 欧美成人aaaaⅴ片在线看| 自拍偷拍18p| 午夜精品久久久久久久99热黄桃 | 中文字幕一区二区久久人妻网站| 成人精品999| 国产污视频在线看| 一级黄色短视频|