版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 一種基于delphi歐陸3504溫控儀表通訊設(shè)計(jì) 李紅飛馬俊陳章龍摘要:該文介紹了歐陸3504溫控儀表基于delphi平臺(tái)的串口通訊設(shè)計(jì),詳細(xì)地介紹了歐陸3504的命令格式和基于delphi的16位循環(huán)冗余算法。軟件設(shè)計(jì)以delphi 2010為開發(fā)平臺(tái),通過mscomm控件實(shí)現(xiàn)了計(jì)算機(jī)對(duì)歐陸3504串口通信。功能包括讀取雙色紅外線溫度計(jì)測(cè)量的溫度、歐陸3504的auto和man功能之間相互轉(zhuǎn)換、預(yù)設(shè)的溫度值和功率百分比輸入。關(guān)鍵詞:歐陸3504溫控儀;delphi;mscomm;crc:tp311 :a :1009-3044(2017)0
2、2-0226-04communication programming based on delphi for eurotherm 3504 temperature controllerli hong-fei, ma jun, chen zhang-long(qinghai normal university,college of computer science, xining 810000, china)abstract: the paper introduces eurotherm 3504 temperature control instrumentals serial port com
3、munication programming based on the delphi platform ,and detail introduces that the eurotherm 3504 typical command form and the 16 bit cyclic redundancy algorithm(crc) based on delphi 2010 .the software design using delphi 2010 as the development platform ,through the mscomm control to achieve the c
4、omputer on the eurotherm 3504 serial communication . the function mainly includes read temperature that the double color infrared thermometer measure、the function transformation between auto and man of the eurotherm 3504 and the input value of the preset temperature and the percentage of power.key w
5、ords: eurotherm 3504; delphi; mscomm; crc1 背景歐陸3504溫控儀表是歐陸公司最新推出的高性能過程溫度控制器,它融合了液晶顯示及微處理器科技之優(yōu)點(diǎn),其以較高的控制精度和良好的適應(yīng)能力,被廣泛應(yīng)用于各種溫度控制過程1。溫度計(jì)采用雙色紅外測(cè)溫計(jì),雙色紅外測(cè)溫是利用鄰近通道兩個(gè)波段紅外輻射能量的比值來決定溫度的大小,能夠消除水汽、灰塵、檢測(cè)目標(biāo)大小變化、部分被遮擋、發(fā)射率變化等的影響,即使檢測(cè)信號(hào)衰減95%,也不會(huì)對(duì)測(cè)溫結(jié)果有任何影響。獨(dú)特的軟件算法,可以克服氧化層的影響。軟硬件設(shè)計(jì),適用于幾十萬倍信號(hào)的處理,可以滿足對(duì)儀器精度、重復(fù)性、等各方面的要求2。本
6、文詳細(xì)介紹了計(jì)算機(jī)與歐陸3504溫控儀的通信過程,并開發(fā)了基于delphi 2010的平臺(tái)的通信測(cè)試軟件。軟件實(shí)現(xiàn)了實(shí)時(shí)溫度采集、溫度顯示、歐陸3504溫控儀的auto模式和man模式轉(zhuǎn)換、以及溫度或者功率百分比輸入。為歐陸表3504溫控儀開發(fā)過程提供了良好的方法。2 通訊協(xié)議和通信控件歐陸3504采用modbus 通訊協(xié)議,在modbus系統(tǒng)中有2種傳輸模式可選擇,一種模式是ascii(美國信息交換碼),另一種模式是rtu(遠(yuǎn)程終端設(shè)備)。在同樣的波特率下,rtu方式可比ascii方式傳送更多的數(shù)據(jù)3。歐陸3504溫控儀采用的是rtu傳輸方式。使用rtu模式,消息發(fā)送至少要以3.5個(gè)字符時(shí)間
7、為停頓間隔開始。如果一個(gè)新消息在小于3.5個(gè)字符時(shí)間內(nèi)開始,接收設(shè)備將認(rèn)為是前一消息的延續(xù),這將導(dǎo)致錯(cuò)誤產(chǎn)生。rtu典型的消息幀如表1所示。本軟件在delphi 2010開發(fā)平臺(tái)中采用了windows通信控件(mscomm)實(shí)現(xiàn)與rs232的串口通信。mscomm控件是與rs232兼容串行接口控件,歐陸3504溫控儀采用485通訊接口,需要由485轉(zhuǎn)232接口與計(jì)算機(jī)連接,在系統(tǒng)中選用了uport 1610-8。uport 1600系列產(chǎn)品可以讓計(jì)算機(jī)可以通過usb ( 通用串行總線) 與8 個(gè)串口rs-232 或rs-232/422/ 485 的外設(shè)進(jìn)行通信。在工控中作為擴(kuò)展口非常實(shí)用。ms
8、comm控件的主要屬性為4:1) commport:設(shè)置和返回串行端口號(hào),缺省為1。mscomm1.commport:=1;2) setting:設(shè)置或者返回串行的波特率、奇偶校驗(yàn)位、數(shù)據(jù)位數(shù)、停止位。mscomm1.settings:='19200,n,8,1'; 歐陸3504波特率采用的是19200而不是常用的9600。3) inputmode:設(shè)置從接受緩沖區(qū)讀取數(shù)據(jù)格式,有文本格式和二進(jìn)制格式。mscomm1.inputmode:=cominputmodebinary;/二進(jìn)制模式4) rthreshold:該屬性為產(chǎn)生代碼為comevreceive的oncomm事件的
9、閾值。 mscomm1.rthreshold:=7;歐陸3504返回?cái)?shù)據(jù)的主要用在對(duì)于溫度的查詢,所以就用溫度最小返回的數(shù)據(jù)個(gè)數(shù)為閾值。5) portopen:打開或關(guān)閉串行端口。mscomm1.portopen:=true;對(duì)于mscomm控件的其他屬性在軟件中采用了默認(rèn)值,沒有另行設(shè)置。3 循環(huán)冗余校驗(yàn)(crc)循環(huán)冗余校驗(yàn)碼(crc)的基本原理是:在k位信息碼后再拼接r位的校驗(yàn)碼,整個(gè)編碼長(zhǎng)度為n位,因此,這種編碼也叫(n,k)碼。對(duì)于一個(gè)給定的(n,k)碼,可以證明存在一個(gè)最高次冪為n-k=r的多項(xiàng)式g(x)。根據(jù)g(x)可以生成k位信息的校驗(yàn)碼,而g(x)叫做這個(gè)crc碼的生成多項(xiàng)式
10、5。由表2可知?dú)W陸3504發(fā)送數(shù)據(jù)總長(zhǎng)度為64位(n),數(shù)據(jù)校驗(yàn)位為16位(r). 需要對(duì)48(k)位信息碼進(jìn)行校驗(yàn)function qhcrc16(adata:array of byte):word;本程序選用多項(xiàng)式g(x) =x16+x15+x2+1即const genp=$a001;如發(fā)送數(shù)據(jù)定義為sbuf:array1.8 of byte;對(duì)于數(shù)組前6位按照發(fā)送數(shù)據(jù)格式和要求填寫,然后調(diào)用校驗(yàn)函數(shù)進(jìn)行校驗(yàn)。因?yàn)楹瘮?shù)返回?cái)?shù)據(jù)類型為word,應(yīng)對(duì)返回?cái)?shù)據(jù)進(jìn)行數(shù)據(jù)分割校驗(yàn)高低位并轉(zhuǎn)換為16進(jìn)制。分別對(duì)sbuf6, sbuf7賦值,然后調(diào)用mscomm1的output函數(shù)進(jìn)行發(fā)送。crc校驗(yàn)函
11、數(shù)如下。function qhcrc16(adata:array of byte;astart,aend:integer):word;constgenp=$a001; /多項(xiàng)式公式x16+x15+x2+1(1100 0000 0000 0101)varcrc:word;i:integer;tmp:byte;procedure calonebyte(abyte:byte); /計(jì)算1個(gè)字節(jié)的校驗(yàn)碼varj:integer;begincrc:=crc xor abyte; /將數(shù)據(jù)與crc寄存器的低8位進(jìn)行異或for j:=0 to 7 do /對(duì)每一位進(jìn)行校驗(yàn)begintmp:=crc and
12、1; /取出最低位crc:=crc shr 1; /寄存器向右移一位crc:=crc and $7fff; /將最高位置0if tmp=1 then /檢測(cè)移出的位,如果為1,那么與多項(xiàng)式異或crc:=crc xor genp;crc:=crc and $ffff;end;end;begincrc:=$ffff; /將余數(shù)設(shè)定為fffffor i:=astart to aend do /對(duì)每一個(gè)字節(jié)進(jìn)行校驗(yàn)calonebyte(adatai); result:=crc;end;4 功能碼和寄存器地址使用modbus通訊協(xié)議,需要對(duì)modbus功能碼進(jìn)行一定的了解。在本程序中主要用到功能碼兩個(gè)$
13、03、$06。$03讀取保持寄存器主要用于讀取由雙色紅外線溫度計(jì)傳給歐陸3504溫控儀的溫度。$06預(yù)置單寄存器,主要用于對(duì)auto(0)、man(1)相互轉(zhuǎn)換和溫度或者功率百分比輸入。寄存器地址,對(duì)歐陸3504溫控儀進(jìn)行操作需要預(yù)先知道其各個(gè)寄存器的地址,比如要讀取溫度,需要知道存放溫度的寄存器地址($01);對(duì)于查詢寄存器地址可以用歐陸3504配套軟件itools engineering studio連接之后可以查詢各個(gè)寄存器地址。再結(jié)合本軟件的對(duì)于寄存器的操作方法,就可以實(shí)現(xiàn)對(duì)于歐陸3504的全部操作。5 軟件整體設(shè)計(jì)在工業(yè)控制設(shè)備中串口一般是統(tǒng)一分配的,以便安裝操作方便。所以在工業(yè)控制
14、軟件可以直接給mscomm控件進(jìn)行串口號(hào)賦值,但是需要先檢測(cè)串口號(hào)是否存在。利用注冊(cè)表(registry),檢測(cè)所有串口號(hào),再用pos函數(shù)檢查是否有所需串口。避免串口不存在時(shí)發(fā)生的錯(cuò)誤警告。也可以用combobox控件、button控件和注冊(cè)表組合使用。用注冊(cè)表檢測(cè)所有串口,賦值給combobox控件的items屬性。button按鈕作為連接按鈕,同時(shí)也是設(shè)備開始按鈕。本程序選用第二種方法,另加了一個(gè)刷新按鈕,當(dāng)串口改變時(shí)需重新刷新,對(duì)combobox重新賦值。軟件流程圖如圖1。在軟件流程圖中,設(shè)定的為檢測(cè)到溫度大于預(yù)定上限值時(shí),由手動(dòng)轉(zhuǎn)換為自動(dòng)模式。在手動(dòng)模式中輸出為功率百分比,在自動(dòng)模式中
15、輸出的是預(yù)設(shè)溫度。歐陸3504在自動(dòng)模式下預(yù)設(shè)溫度可以根據(jù)反饋信號(hào)自動(dòng)調(diào)節(jié)輸出功率百分比,這樣使得對(duì)于溫度的控制更加精確。本軟件為測(cè)試軟件事先添加了自動(dòng)和手動(dòng)按鈕,以便模式的轉(zhuǎn)換。由于溫度是由雙色紅外線溫度計(jì)傳給歐陸3504,雙色紅外線溫度計(jì)檢測(cè)范圍為1000-3200,所以之前的升溫階段只能輸入功率百分比。設(shè)立溫度上限,來保證當(dāng)溫度達(dá)到上限值時(shí)的自動(dòng)轉(zhuǎn)換。轉(zhuǎn)換程序在mscomm空間oncomm事件中,將歐陸3504返回的溫度數(shù)據(jù)轉(zhuǎn)換十進(jìn)制數(shù)后進(jìn)行判斷。為避免每次都進(jìn)行同一種模式寫入,可以加入兩個(gè)標(biāo)志位來保證在不同模式下才進(jìn)行模式轉(zhuǎn)換。測(cè)試軟件工作流程為先設(shè)置串口號(hào),將combobox.tex
16、t刪除com之后的數(shù)字賦值給mscomm控件作為串口號(hào)。因?yàn)闅W陸3504波特率為19200,所以波特率在不選擇的條件下將默認(rèn)為19200,也可以對(duì)波特率改動(dòng)進(jìn)行驗(yàn)證,檢測(cè)是否有數(shù)據(jù)返回。添加了兩個(gè)memo控件,一個(gè)是顯示發(fā)送的數(shù)據(jù),一個(gè)顯示歐陸3504返回的數(shù)據(jù)。在面板中添加了timer控件,timer控件在檢測(cè)到串口打開后,就會(huì)啟動(dòng)發(fā)送查詢溫度程序。timer默認(rèn)為1000ms發(fā)送一次。 if mscomm1.portopen thenbeginsbuf1:=byte($01); /幀頭sbuf2:=byte($03); /命令號(hào)查詢sbuf3:=byte($00);sbuf4:=byte(
17、$01);sbuf5:=byte($00);sbuf6:=byte($01);sbuf7:=byte($d5); /數(shù)據(jù)校驗(yàn)位sbuf8:=byte($ca); /數(shù)據(jù)校驗(yàn)位sendcommend; /發(fā)送數(shù)據(jù)給歐陸3504readtsign:=true;/查詢溫度的標(biāo)志當(dāng)為真時(shí)對(duì)歐陸3504返回?cái)?shù)據(jù)進(jìn)行處理轉(zhuǎn)換為溫度end;在本程序中crc算法程序的調(diào)用主要用于對(duì)功率百分比和預(yù)設(shè)溫度值輸入。對(duì)于timer控件下的讀取溫度、手動(dòng)和自動(dòng)模式轉(zhuǎn)換,因?yàn)橐l(fā)送的數(shù)據(jù)固定不變或者頻率較大,所以直接先算出該查詢數(shù)據(jù)的crc校驗(yàn)位進(jìn)行賦值。避免每次發(fā)送都需要進(jìn)行校驗(yàn),減小程序的運(yùn)行負(fù)擔(dān)。設(shè)置mscomm1
18、.rthreshold:=7; 當(dāng)接收緩沖區(qū)內(nèi)的字節(jié)個(gè)數(shù)大于等于7個(gè)后就產(chǎn)生代碼為comevreceive的oncomm事件。只有查詢溫度的時(shí)歐陸3504返回的數(shù)據(jù)需要進(jìn)行,處理得出溫度值。其他數(shù)據(jù)只是為判斷歐陸3504是否得到數(shù)據(jù)。所以在查詢溫度時(shí)增加了一個(gè)標(biāo)志符號(hào)(readtsign)。標(biāo)志符號(hào)初始化為假,在查詢溫度時(shí)將其賦值為真。在oncomm事件中檢測(cè)readtsign,如果為真,將返回?cái)?shù)據(jù)的rbuf3和rbuf4進(jìn)行處理得到設(shè)備溫度的值,其他返回?cái)?shù)據(jù)不做處理。對(duì)于歐陸3504溫控儀返回的溫度是由雙色紅外測(cè)溫儀檢測(cè)出來返回給歐陸表的。雙色紅外測(cè)溫儀為高溫計(jì),檢測(cè)范圍為1000-3200
19、。所以當(dāng)雙色紅外測(cè)溫儀檢測(cè)的溫度不在這個(gè)范圍時(shí)歐陸3504溫控儀返回的溫度始終為3314.0,恒定不變。procedure tform1.mscomm1comm(sender: tobject);vari: integer;beginrbuf := mscomm1.input;sendstr:='';if readtsign thenbeginreadtsign:=false;/標(biāo)志賦值為假,等待下一次查詢t:=(rbuf3*256+rbuf4)/10;/輸出溫度為小點(diǎn)后一位t為real類型sendstr:=floattostr(t) ;label1.caption:= sen
20、dstr+'';/程序窗口顯示溫度sendstr:='';end;end;預(yù)設(shè)溫度值或者功率百分比輸入,需要先將要輸入的值擴(kuò)大10倍,因?yàn)檩斎氲臄?shù)據(jù)在歐陸3504中會(huì)自動(dòng)將最后一位設(shè)為小數(shù),所以要將要輸入的值增加10倍。而且需要判斷歐陸3504工作在men模式還是auto模式。因?yàn)椴坏珒蓚€(gè)要操作的地址不同,而且兩個(gè)模式下輸入值得范圍也不同。在men模式下要輸入的值范圍為0-40,auto模式下要輸入的值范圍為1000-2500,有效數(shù)字均為小數(shù)點(diǎn)后一位。在范圍外的值輸入時(shí),設(shè)備對(duì)于輸入的值是不予識(shí)別的。要發(fā)送的數(shù)據(jù)選用了edit控件的onkeydown事件,當(dāng)e
21、nter按鍵按下時(shí)進(jìn)行數(shù)據(jù)傳送。vardata:array0.255 of byte;i,j:integer;res:word;tsdata,szdata:string;beginif key=13 then /當(dāng)enter按鍵按下時(shí)beginszdata:=inttohex(round(strtofloat(form1.senddata.text)*10),4);/將edit的內(nèi)容擴(kuò)大10倍四舍五入后/轉(zhuǎn)換為4位16進(jìn)制,來保證輸入框的數(shù)字與歐陸3504表要顯示的數(shù)字相同。i:=1;j:=0;for j:=0 to 1 dobeginif (i mod 2)=0 then /每2個(gè)字符放入一
22、個(gè)字節(jié)中i:=i+1;if i>=length(szdata) thenexit;dataj:=strtoint('$'+copy(szdata,i,2); /取出字符并轉(zhuǎn)換為16進(jìn)制數(shù)i:=i+1;end;sbuf1:=byte($01); /幀頭sbuf2:=byte($06); /命令號(hào) 預(yù)置單寄存器功能碼sbuf3:=byte($00);if commflg=true then/在auto模式下beginsbuf4:=byte($02);endelse/在man模式下beginsbuf4:=byte($03);end;sbuf5:=data0;sbuf6:=data1; /數(shù)據(jù)校驗(yàn)位 res:= qhcrc16(sbuf,0,5);/crc檢驗(yàn)szdata:=inttohex(res,4) ;i:=1;j:=0;for j:=0 to 1 dobeginif (i mod 2)=0 then /每2個(gè)字符放入一個(gè)字節(jié)中i:=i+1;if i>=length(szdata) thenexit;dataj:=strtoint('$'+copy(szdata,i,2);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廢棄項(xiàng)目合同模板
- 醫(yī)院聘用醫(yī)生合同范例
- 建筑垃圾粉碎合同范例
- 單位學(xué)校用工合同范例
- 出售沙合同范例
- 養(yǎng)殖水蛇供貨合同范例
- 家居招標(biāo)合同范例
- 成華區(qū)租房合同模板
- 太子龍?zhí)卦S經(jīng)營合同范例
- 兼職會(huì)計(jì)聘用合同模板
- 會(huì)計(jì)師事務(wù)所驗(yàn)資工作底稿模板
- 頭顱CT最全讀片-課件
- 電解車間技術(shù)、安全及設(shè)備維護(hù)保養(yǎng)手冊(cè)
- 中醫(yī)西醫(yī)的比較之我見中西結(jié)合
- 中國航天發(fā)展史模板
- 骨科學(xué)研究生復(fù)試真題匯總版
- 小學(xué)綜合實(shí)踐六年級(jí)上冊(cè)第4單元《主題活動(dòng)三:校園文化活動(dòng)我參與》教案
- 人教PEP小學(xué)三年級(jí)英語下冊(cè)教學(xué)計(jì)劃及進(jìn)度表
- 鐵路產(chǎn)品認(rèn)證中心(CRCC)認(rèn)證的鐵路產(chǎn)品目錄及標(biāo)準(zhǔn)
- 《新疆維吾爾自治區(qū)建筑安裝工程費(fèi)用定額》2010年
- 《職業(yè)發(fā)展與就業(yè)指導(dǎo)》全書教案全套教學(xué)單元設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論