咨詢電話
ENGLISH0755-88840386發(fā)布時(shí)間:2020-01-14 09:40:50 |來(lái)源:網(wǎng)絡(luò)轉(zhuǎn)載
目前, 大多數(shù)汽車衡和軌道衡由以下三部分構(gòu)成: 稱體機(jī)械部分、稱重傳感器、稱重顯示儀表。稱重顯示儀表的主要功能是將從稱重傳感器出來(lái)的稱重信號(hào)( mV 級(jí)模擬信號(hào)) 進(jìn)行 A/D 轉(zhuǎn)換, 并進(jìn)行顯示、打印等 。但這些功能往往不能滿足實(shí)際要求 ,一般情況下 ,要將稱重?cái)?shù)據(jù)傳遞到計(jì)算機(jī) , 由計(jì)算機(jī)對(duì)計(jì)量信息( 包括稱重?cái)?shù)據(jù)、物品名稱 、來(lái)源、去向等) 進(jìn)行統(tǒng)計(jì)分析 。因此將稱重顯示儀表的數(shù)據(jù)采集到計(jì)算機(jī),即稱重顯示儀表與計(jì)算機(jī)進(jìn)行通訊,顯得十分重要。
1. AD-4322A 稱重顯示儀表的參數(shù)設(shè)置
AD- 4322A 是日本產(chǎn)稱重顯示儀表 , 性能穩(wěn)定 ,A/D 轉(zhuǎn)換精度高、速度快,在我公司的應(yīng)用十分廣泛。其串行接口附件 OP -4 提供標(biāo)準(zhǔn)RS-232C 口 ,采用半雙工異步傳輸方式進(jìn)行串行通訊。
1. 1 AD- 4322A 功能鍵的設(shè)置
1. 2 AD-4322A 發(fā)送數(shù)據(jù)時(shí)的數(shù)據(jù)格式
AD -4322A 發(fā)送的數(shù)據(jù)共 18位 ,其含義如下:
說(shuō)明:
標(biāo)志 1: 超最大量程/低于最小分度值/靜止/不穩(wěn)定之一
標(biāo)志 2: 凈重/毛重/皮重之一
單 位: kg/t/1b 之一
定義符 : CR 為回車符, LF 為換行符, LF 是數(shù)據(jù)發(fā)送結(jié)束的標(biāo)志 。
例如 : 某一靜止物體的凈重約為 350. 7kg ,那么其數(shù)據(jù)格式為:
1. 3 AD-4322A 中有關(guān)通訊參數(shù)
本程序中,有關(guān)的通訊參數(shù)共 4個(gè) :
波特率 : 2400bps
數(shù)據(jù)位 : 7 位
停止位 : 1 位
奇偶性 : 偶校驗(yàn)方式
2. 通訊軟件的編制
通訊軟件采用 Turbo C 設(shè)計(jì) , 是一個(gè)內(nèi)存駐留程序 , 當(dāng)通訊條件( AD-4322A 顯示的數(shù)據(jù)穩(wěn)定) 滿足時(shí),通訊結(jié)果以中斷方式采集到計(jì)算機(jī) , 存放于內(nèi)存 0000: 0200H 處。駐留程序在內(nèi)存中占 200 節(jié)( 每節(jié)16 個(gè)字節(jié)) , 約 3K 。位置由系統(tǒng)自動(dòng)分配。程序清單如下 :
/ *a. c: 主程序* /
# include”dos. h”
# include”stdio . h' ”
void tsr ( unsigned int) ;
void interrupt seri( void) ;
char far * rec =( char far *)MK_FP( 0x0000, 0x0200) ;
/ *通訊數(shù)據(jù)在內(nèi)存中的起始位置* /
main( )
{ disable( ) ; / *關(guān)閉低級(jí)到中斷* /
setvect( 0x0c, seri) ; / *設(shè)置中斷程序入口地址* /
outportb( 0x21, 0x24) ; / *向 COMI 發(fā)送通訊參數(shù)* /
outportb( 0x3fb, 0x80) ;
outportb( 0x3f8, 0x30) ;
outportb( 0x3f9, 0x00) ;
outportb( 0x3fb, 0x0a) ;
outportb( 0x3fc, 0x08) ;
outportb( 0x3f9, 0x01) ;
enable( ) ; / *開(kāi)放低級(jí)別中斷* /
tar( 200) ;
}
void tsr ( unsigned int size)
/ *內(nèi)存駐留子程序* /
/ *功能: 結(jié)束主程序并將主程序駐留在內(nèi)存中* /
{ union REGS r;
r. h. ah =0x31; / * INF 2IH 中的入口參數(shù), 使用 31# 子功能* /
r. h. al=0;
r. x . dx =size; / *編繹, 連接后駐留內(nèi)存程序的長(zhǎng)度* /
int86( 0x21. &r. & r) ; / *系統(tǒng)功能調(diào)用* /
}
void interrupt seri ( void)
/ *中斷子程序* /
/ *功能: 將 AD-4422A 的數(shù)據(jù)采集過(guò)來(lái),存放于內(nèi)存 0000: 0200H 處* /
{ char far *recl =( char far *)MK FP( 0x0000, 0x0200) ;
( *rec) =inportb( 0x3f8) ; / *從 COMI 口取回一個(gè)字節(jié)* /
if ( ( *rec) ==0x0a
rec=rec1;
else
rec ++ ;
outporbt( 0x20, 0x20) ; }
3. “軟件接口—數(shù)據(jù)處理程序
通訊的結(jié)果數(shù)據(jù)存放于內(nèi)存0000: 0200H 處 , 但 FOXPRO 沒(méi)有這種數(shù)據(jù)的處理能力 ,為此 ,必須制作一個(gè)“軟件接口” , 將存放于內(nèi)存中的數(shù)據(jù)轉(zhuǎn)換成 FOXPRO 處理的數(shù)據(jù)形式 。
在這里, 用 C 語(yǔ)言開(kāi)發(fā)了一個(gè)小程序,將內(nèi)存 0000: 0200H 處的數(shù)據(jù)輸出到一個(gè)文本文件 ,以便利用。程序清單如下 :
# include”dos. h”
# include”stdio . h”
char far * rec =( char far *)MK_FP( 0x0000, 0x0200) ;
/ *定義要處理的數(shù)據(jù)在內(nèi)存中的位置* /
main( )
{ FILE *f. *fopen( ) ;
int i;
f=fopen( ”data . dat” ,”w”) ;
/ *data . dat 是存放通訊結(jié)果數(shù)據(jù)的文本文件* /
for( i=0; i<16; i ++ )
fpute( rec[ i] , f) ;
fclose( f) ;
exit( 0) ; }
4.結(jié)束語(yǔ)
上述程序在 AST4/66d 上調(diào)試通過(guò) 。實(shí)現(xiàn)了計(jì)算機(jī)與 AD - 4322A的通訊, 并對(duì)通訊數(shù)據(jù)進(jìn)行和必要的處理。這種方法還可以推廣應(yīng)用到其他類型的稱重顯示儀表。有興趣的同行不妨一試 。
稱重顯示儀表與計(jì)算機(jī)的通訊是一項(xiàng)基礎(chǔ)的技術(shù)工作, 為采用計(jì)算機(jī)管理計(jì)量信息奠定了非常堅(jiān)實(shí)的技術(shù)基礎(chǔ)。
本文源于網(wǎng)絡(luò)轉(zhuǎn)載,如有侵權(quán),請(qǐng)聯(lián)系刪除