欧美成人aaaaa免费视频_亚洲欧美激情小说另类_欧美激情一区二区三区视频_一级在线|欧洲

技術頻道

基于Modbus協議的智能壓力傳感器研發

1 引言

  20世紀90年代以來,在傳感技術基礎上結合微處理器技術發展起來的智能能傳感技術成為國際上研究的熱點。傳感器領域的智能化得到了快速發展,出現了不同種類的智能化傳感器產品。但是,單一智能化傳感器并不能充分發揮智能化的優點,只有將其與計算機聯網才能真正將智能化傳感器的特點全面發揮出來。本文根據 rs-485總線以差分平衡方式傳輸信號,具有抗干擾性好、傳輸距離遠等特點,通過一對雙絞線作為傳輸介質將現場設備與上位機連起來,使系統結構大為簡化,同時這也大大降低了系統安裝、調試以及維護的成本。通過目前國際上普遍采用的modbus通信協議進行編寫,方便操作人員的閱讀及使用。

2 modbus rtu通信協議

  modbus協議是莫迪康公司1978年發明用于電子控制器進行控制和通信的協議。

  modbus協議已經被接受轉化成為中國國家標準gb/t 19582-2008 《基于modbus協議的工業自動化網絡規范》。

  modbus協議采用主從(master-slave)技術,是一種問答方式的通信協議。modbus通訊協議有兩種傳送方式:rtu方式和ascii方式,相對于ascii方式,rtu模式表達相同的信息需要較少的位數,且在相同通訊速率下具有更大的數據流量。因此本文采用的是modbus rtu模式[2]。

  使用rtu模式時,消息發送至少要以3.5個字符時間的停頓間隔開始(如表1中的t1-t2-t3-t4所示)。傳輸的第一個域是設備地址。可以使用的傳輸字符是十六進制的0-9,a-f。功能碼是每幀通訊信息的第二個字節,根據modbus協議規定 ,不同功能碼對應數域格式不盡相同,常用的功能碼有 1、2、3、4、5、6、15 和 16 , 分別表示讀線圈、讀輸入狀態、讀保持寄存器、讀輸入寄存器、寫單個線圈、寫單個輸入狀態、寫多個線圈, 寫多個保持寄存器。本文根據需要主要是用的3、6、16功能碼。網絡設備不斷偵測網絡總線,當第一個域(地址域)接收到,每個設備都進行解碼以判斷是否發給自己。在最后一個傳輸字符之后,一個至少3.5個字符時間的停頓標定了消息的結束。一個新的消息可在此停頓后開始。

  整個消息幀必須作為一連續的流傳輸。如果在幀完成之前有超過3.5個字符時間的停頓時間,接收設備將刷新不完整的消息并假定下一字節是一個新消息的地址域。同樣地,如果一個新消息在小于3.5個字符時間內接著前一消息開始,接收的設備將認為它是前一消息的延續。這將導致一個錯誤,因為在最后的crc 域的值不可能是正確的[3]。一典型的rtu模式的消息結構如表1所示。

3 系統硬件設計

  智能傳感器(intelligent sensor)是具有信息檢測與處理功能的傳感器。智能傳感器帶有微處理機,具有采集、處理、交換信息的能力,是傳感器集成化與微處理機相結合的產物。本設計中智能壓力傳感器的組成如圖1所示。

圖1 基于c8051f350的智能壓力傳感器的方框圖

  整個系統按照各部分功能可分為電源模塊、溫度采集模塊、模擬信號調理模塊、數據通信模塊等部分。本設計使用c8051f350作為數據采集后的微處理器,c8051f350內部有一個全差分24位sigma-delta模/數轉換器(adc),該adc具有在片校準功能。兩個獨立的抽取濾波器可被編程到1khz的采樣率[5]。可以使用內部的2.5v電壓基準,也可以用差分外部基準進行比率測量,其中在本設計中使用的是內部電壓基準。adc0中包含一個可編程增益放大器,有8種增益設置,最大增益可達128倍,增益調節范圍完全符合設計要求。

  設計采用陶瓷材料經特殊工藝精制而成的干式陶瓷壓阻壓力傳感器cps181,陶瓷是一種公認的高彈性、抗腐蝕、抗磨損、抗沖擊和振動的材料。陶瓷的熱穩定特性及它的厚膜電阻可以使它的工作溫度范圍高達-40~135℃,而且具有測量的高精度、高穩定性。電氣絕緣程度>2kv,輸出信號強,長期穩定性好[4]。設計使用ds18b20測量工作環境溫度。ds18b20具有以下特性:

  (1) 獨特的單線接口,只需一個接口引腳即可通信;

  (2) 不需要外部元件;

  (3) 可用數據線供電;

  (4) 不需要備份電源等。

  測量得到的溫度信號經過單線接口送入ds18b20或從ds18b20送出,因此從c8051f350到ds18b20僅需連接一條線。設計的通信通過rs485完成。因為rs-485的數據最高傳輸速率為10mbps;rs-485接口是采用平衡驅動器和差分接收器的組合,抗共模能力強,即抗噪聲干擾性好[6];rs-485接口的最大傳輸距離可達3000米;支持眾多常見的操作系統,易于實現不同網絡之間的通信。

4 系統軟件設計

  4.1下位機通信程序的創新性設計


  系統的下位機程序主要是運用了大家熟悉的c語言進行編程,程序采用了模塊化思想,結構清晰易讀。主要包括系統初始化、更新傳感器溫度值、更新傳感器供電電壓值、更新傳感器零漂值、更新傳感器壓力值、由modbus協議對上位機發來的報文進行解釋形成任務標志、執行modbus協議的相應功能代碼任務、向上位機發送應答報文、故障診斷、電源管理等模塊。

  設計的創新點:自定義了一個寄存器數組,數組里包括地址、量程、增益、波特率、零漂、版本號、溫度、供電電壓、故障信息、壓力值等,并對他們進行了編號。寄存器分配一覽表如表2所示。

  (1)每一寄存器由兩個字節構成,高字節在前,低字節在后,高字節存放數值的高位,低字節存放數值的低位。例如:量程代碼存放于編號為01h的寄存器中,所占的兩個字節規定如下(其中xx為以16進制形式存放的量程代碼):

寄存器編號 字節 高半字節 低半字節
01h 高字節 0 0
低字節 x x

  定義:傳感器地址、量程、增益、波特率分別占用一個寄存器(即兩個字節),它們的寄存器號分別為00h、01h、02h、03h,在modbus協議功能碼03中,起始地址高位、低位可以分別對應傳感器地址、量程、增益、波特率的高位、低位。

(2) 在具體編寫程序時,把寄存器數組的所有只寫屬性放入flash

  然后初始化讀出。上位機發信息,下位機解釋相應命令,讀出或寫入相應數據。在編寫執行03、06、16任務模塊時我們把要讀取的寄存器數組的起始下標和要讀取的數據個數分別根據modbus功能碼中的起始地址高、低位和寄存器數高、低位設定成一個變量,這樣簡化了程序,可讀性強。

  (3)modbus協議規定,當設備使用rtu模式通信時,整個報文幀必須以連續的字符流發送。報文幀由時長至少為3.5個字符時間的空閑間隔區分。如果兩個字符之間的空閑間隔大于1.5個字符時間,則報文幀被認為不完整應該被接收節點丟棄。而在實際通信過程中由于每幀消息不定長,所以程序中最主要的問題是如何找到modbus消息幀的開始和結束時間點,并且要滿足兩個字符之間的空閑間隔和兩個報文幀之間的空閑間隔。程序的解決方法:接收采用中斷方式并采用了可重復觸發的可編程單穩方式進行處理,在利用modbus協議通信時保證了實時性接收。

  (4)對于報文發錯問題(即不符合要發送的報文),已用crc校驗程序對其處理。對于發送不符合要求的傳感器地址、功能代碼、數據、從機設備故障、從機設備忙碌、超時等問題,通過發送不正常響應信息來進行處理。而且上位機也編寫了相應的程序代碼。

  (5) 對于零漂、溫漂的補償以及線性化的問題,通過軟件進行補償處理的。實驗證明,系統精度可以控制在千分之五之內。

4.2上位機通信程序的編寫

圖2 modbus串口協議通信界面

  上位機串口通信是采用 visual basic語言編寫,visual basic提供了面向對象的可視化編程工具。開發人員只需按設計要求在屏幕上“畫”出所需的用戶界面來,并設置這些對象的屬性,不必為用戶界面設計而編寫大量的程序代碼[7]。相對于傳統編程語言,visual basic最突出的特點是事件驅動編程機制。每個事件都能驅動一段程序的運行。程序員只需編寫響應用戶動作的代碼,各個動作之間不一定有聯系,這樣的程序一般較短,且易于編寫和維護。在visual basic中為了完成串行通信,使用了mscomm控件,它可實現對串口的數據發送和接收。為了實現自動發送功能,還用到了timer控件。這兩個控件在程序運行時都是不可見的[8][9],在設計時把它們放在窗體的右上角即可。圖3為modbus串口協議通信界面。此串口通信主要完成的功能:

  (1)搜索傳感器配置信息:當用戶在用此傳感器時,可能不清楚掛接傳感器地址位置以及串口所使用的波特率,為此編寫了相應的程序方便用戶查詢。

  (2)讀傳感器配置信息,包括地址、量程、增益、波特率、程序代碼、修正系數、功能代碼等。此部分根據modbus功能碼03編寫,嚴格按照rtu幀格式編寫。

  (3)寫傳感器配置信息。用戶可以根據自己的要求,更改地址、量程、增益、波特率、程序代碼、修正系數、功能代碼等。此部分是根據根據modbus功能碼06或16編寫。

  (4) 采集傳感器工作狀態。包括傳感器壓力、供電電壓、環境溫度、零漂、故障信息等。
modbus串口協議通信界面如圖2所示。

  部分程序如下:

private sub timer1_timer()
if star_find = true then `如果有啟動搜索命令標志
area_num = area_num + 1
mscomm1.outbuffercount = 0
if area_num >= 248 then `如果現波特率下超出下位機地址范圍,則地址清零,重新換波特率搜索
area_num = 0
timer1.enabled = false
ll= msgbox("該波特率下無法搜索到下位機地址,請改變波特率!", vbok, "提示")
end if
call start_find `開端口,將搜索命令發給下位機,并確定mscomm1.rthreshold屬性
end if
if star_read = true then `如果有啟動讀命令標志
call start_read `開端口,將讀命令發給下位機,并確定mscomm1.rthreshold屬性
end if
if star_write = true then `如果有啟動寫命令標志
call start_write
`開端口,將配置信息強置給下位機,并確定mscomm1.sthreshold屬性
end if
if star_acq = true then `如果有啟動采集命令標志
if acq_end = true then `如果有結束采集命令標志
timer1.enabled = false `關閉時鐘
acq_end = false `清除結束采集命令標志
end if
call start_read `開端口,將讀命令發給下位機,并確定mscomm1.rthreshold屬性
end if
end sub

  4.3 編程時應注意以下幾個問題

  (1) 下位機從應答到發送數據并返回回應消息有一定的時間間隔,程序已根據不同波特率對其進行設定。保證對下位機的信息正確讀取。

  (2) 在搜索傳感器配置信息時,若搜索不到,要有提示通信出錯信息,不能無限時間搜索。

  (3) 每一次的傳輸是0-255之間的數據,必須把inputmode屬性設置為1(默認為0),表示以二進制格式取回數據。否則當設置為0時,超過128的部分會被當成雙字節文字處理,結果出現錯誤。

5 結束語

  利用上述的軟硬件設計方法,通過 vb6.0的mscomm控件可以做到基于modbus通信協議的上位機與下位機的相互通信。該方法編程簡單、實用,運行穩定可靠,操作簡便易行,通用性強,同時降低了開發成本,很好的滿足了工業現場的要求。

文章版權歸西部工控xbgk所有,未經許可不得轉載。

欧美成人aaaaa免费视频_亚洲欧美激情小说另类_欧美激情一区二区三区视频_一级在线|欧洲

      久久五月婷婷丁香社区| 日韩一级免费| 欧美日韩亚洲不卡| 久久精品中文字幕一区| 亚洲精品网址在线观看| 国产一级一区二区| 国产精品电影观看| 欧美高清一区| 美国成人直播| 久久精品国产欧美激情| 亚洲免费人成在线视频观看| 亚洲精品乱码久久久久久| 国产在线播精品第三| 国产精品乱码久久久久久| 欧美国产先锋| 欧美黄色日本| 欧美岛国在线观看| 欧美高清不卡在线| 免费日韩av| 老鸭窝毛片一区二区三区| 久久免费视频观看| 久久免费观看视频| 久久久久久久999| 小嫩嫩精品导航| 亚洲欧美中日韩| 午夜精品一区二区三区在线播放 | 国产一区二区三区在线观看网站| 国产精品久久久久久久久久尿| 欧美日韩高清免费| 国产精品v片在线观看不卡| 欧美日韩美女在线观看| 欧美日韩一区二| 国产精品黄页免费高清在线观看| 欧美日韩国产成人在线免费| 欧美黄色免费网站| 欧美日韩在线免费| 国产精品视频一区二区三区| 国产乱肥老妇国产一区二 | 小嫩嫩精品导航| 欧美专区在线| 牛牛国产精品| 欧美三级网址| 国产有码一区二区| 91久久在线播放| 亚洲视频第一页| 欧美综合第一页| 欧美久久婷婷综合色| 欧美三级视频| 国语精品一区| 亚洲乱码国产乱码精品精 | 亚洲欧美99| 久久aⅴ国产欧美74aaa| 免费不卡欧美自拍视频| 欧美三级乱码| 娇妻被交换粗又大又硬视频欧美| 亚洲国内高清视频| 亚洲欧美bt| 欧美91大片| 国产精品一区三区| 亚洲国产专区校园欧美| 亚洲制服少妇| 欧美国产在线电影| 国产在线国偷精品产拍免费yy| 亚洲精品一区二区三区婷婷月| 亚洲免费在线播放| 你懂的国产精品| 国产日韩一区欧美| 一区二区欧美视频| 美女性感视频久久久| 国产精品在线看| 亚洲免费精彩视频| 老司机aⅴ在线精品导航| 国产精品福利久久久| 亚洲国产欧美日韩| 欧美在线视频一区| 欧美视频免费在线| 日韩视频一区二区在线观看 | 久久免费99精品久久久久久| 国产精品日韩| 一本色道久久精品| 欧美精品网站| 亚洲国产视频一区二区| 久久女同精品一区二区| 国产欧美大片| 亚洲一区二区三区四区在线观看| 欧美成年人在线观看| 激情婷婷久久| 米奇777在线欧美播放| 狠狠色丁香婷婷综合| 欧美一区二视频在线免费观看| 国产精品久久久久久久久久妞妞| 亚洲欧洲中文日韩久久av乱码| 久久躁狠狠躁夜夜爽| 伊人久久噜噜噜躁狠狠躁 | 一区二区亚洲| 久久免费的精品国产v∧| 国产亚洲一区二区三区在线播放| 新狼窝色av性久久久久久| 欧美午夜理伦三级在线观看| 99这里有精品| 国产精品成人一区二区网站软件| 一区二区精品| 国产精品一区2区| 午夜日韩av| 国内成人在线| 欧美激情精品久久久久久黑人 | 欧美日韩直播| 亚洲欧美精品在线| 国产午夜精品在线观看| 久久午夜精品一区二区| 亚洲黄色在线| 欧美日韩专区| 香蕉久久久久久久av网站| 国产色视频一区| 麻豆久久久9性大片| 亚洲精品乱码久久久久久蜜桃91 | 国产精品日韩久久久久| 欧美在线亚洲综合一区| 伊人影院久久| 欧美美女bbbb| 久久精品国产综合精品| 在线日韩一区二区| 国产精品成人在线| 久久久精品国产一区二区三区| 亚洲国产成人精品女人久久久| 欧美日韩中文字幕综合视频| 欧美一区二区日韩一区二区| 在线观看欧美黄色| 国产精品成人一区二区| 久久久久久穴| 亚洲欧美日韩在线一区| 亚洲国产一区二区在线| 国产精品入口福利| 欧美激情国产精品| 久久国产精品高清| 亚洲一区激情| 亚洲娇小video精品| 国产欧美亚洲一区| 欧美日韩亚洲一区三区| 久久久夜色精品亚洲| 亚洲一区二区毛片| 亚洲精品久久嫩草网站秘色| 国产日韩欧美高清| 欧美午夜精品久久久久免费视 | 欧美日韩国产经典色站一区二区三区| 亚洲欧美一区二区视频| 一本色道久久99精品综合| 1769国产精品| 黄色亚洲免费| 国产日韩欧美在线播放| 国产精品伦子伦免费视频| 欧美精品aa| 欧美激情视频网站| 美女诱惑黄网站一区| 欧美在线黄色| 午夜视频久久久| 国产精品99久久久久久人| 91久久久久久久久| 亚洲激情小视频| 亚洲国产三级网| 激情久久久久久久| 国内精品免费在线观看| 国产日产精品一区二区三区四区的观看方式 | 欧美黄免费看| 欧美精品aa| 欧美区一区二| 欧美日韩午夜精品| 国产精品v亚洲精品v日韩精品| 欧美午夜欧美| 国产乱码精品一区二区三区av| 国产精品久久久一区麻豆最新章节 | 亚洲欧美日韩成人高清在线一区| 一本色道精品久久一区二区三区| 亚洲三级影院| 亚洲视频一区二区在线观看| 在线视频免费在线观看一区二区| 一区二区三区产品免费精品久久75 | 美女精品在线观看| 欧美aaaaaaaa牛牛影院| 欧美—级高清免费播放| 欧美激情在线观看| 欧美三级不卡| 国产亚洲欧美日韩一区二区| 精品av久久久久电影| 亚洲福利视频免费观看| 亚洲理论在线观看| 亚洲一区二区三区精品视频 | 国产视频一区免费看| 狠狠狠色丁香婷婷综合久久五月| 国外视频精品毛片| 亚洲精品影院| 午夜精品在线| 欧美成人高清视频| 国产精品视屏| 永久免费视频成人| 亚洲午夜精品17c| 狂野欧美激情性xxxx欧美| 欧美午夜精品久久久| 国产原创一区二区| 99re热这里只有精品视频|