来源:网络转载更新时间:2020-01-14 09:40:50点击次数:5329次
目前, 大多数汽车衡和轨道衡由以下三部分构成: 称体机械部分、称重传感器、称重显示仪表。称重显示仪表的主要功能是将从称重传感器出来的称重信号( mV 级模拟信号) 进行 A/D 转换, 并进行显示、打印等 。但这些功能往往不能满足实际要求 ,一般情况下 ,要将称重数据传递到计算机 , 由计算机对计量信息( 包括称重数据、物品名称 、来源、去向等) 进行统计分析 。因此将称重显示仪表的数据采集到计算机,即称重显示仪表与计算机进行通讯,显得十分重要。
1. AD-4322A 称重显示仪表的参数设置
AD- 4322A 是日本产称重显示仪表 , 性能稳定 ,A/D 转换精度高、速度快,在我公司的应用十分广泛。其串行接口附件 OP -4 提供标准RS-232C 口 ,采用半双工异步传输方式进行串行通讯。
1. 1 AD- 4322A 功能键的设置
1. 2 AD-4322A 发送数据时的数据格式
AD -4322A 发送的数据共 18位 ,其含义如下:
说明:
标志 1: 超最大量程/低于最小分度值/静止/不稳定之一
标志 2: 净重/毛重/皮重之一
单 位: kg/t/1b 之一
定义符 : CR 为回车符, LF 为换行符, LF 是数据发送结束的标志 。
例如 : 某一静止物体的净重约为 350. 7kg ,那么其数据格式为:
1. 3 AD-4322A 中有关通讯参数
本程序中,有关的通讯参数共 4个 :
波特率 : 2400bps
数据位 : 7 位
停止位 : 1 位
奇偶性 : 偶校验方式
2. 通讯软件的编制
通讯软件采用 Turbo C 设计 , 是一个内存驻留程序 , 当通讯条件( AD-4322A 显示的数据稳定) 满足时,通讯结果以中断方式采集到计算机 , 存放于内存 0000: 0200H 处。驻留程序在内存中占 200 节( 每节16 个字节) , 约 3K 。位置由系统自动分配。程序清单如下 :
/ *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) ;
/ *通讯数据在内存中的起始位置* /
main( )
{ disable( ) ; / *关闭低级到中断* /
setvect( 0x0c, seri) ; / *设置中断程序入口地址* /
outportb( 0x21, 0x24) ; / *向 COMI 发送通讯参数* /
outportb( 0x3fb, 0x80) ;
outportb( 0x3f8, 0x30) ;
outportb( 0x3f9, 0x00) ;
outportb( 0x3fb, 0x0a) ;
outportb( 0x3fc, 0x08) ;
outportb( 0x3f9, 0x01) ;
enable( ) ; / *开放低级别中断* /
tar( 200) ;
}
void tsr ( unsigned int size)
/ *内存驻留子程序* /
/ *功能: 结束主程序并将主程序驻留在内存中* /
{ union REGS r;
r. h. ah =0x31; / * INF 2IH 中的入口参数, 使用 31# 子功能* /
r. h. al=0;
r. x . dx =size; / *编绎, 连接后驻留内存程序的长度* /
int86( 0x21. &r. & r) ; / *系统功能调用* /
}
void interrupt seri ( void)
/ *中断子程序* /
/ *功能: 将 AD-4422A 的数据采集过来,存放于内存 0000: 0200H 处* /
{ char far *recl =( char far *)MK FP( 0x0000, 0x0200) ;
( *rec) =inportb( 0x3f8) ; / *从 COMI 口取回一个字节* /
if ( ( *rec) ==0x0a
rec=rec1;
else
rec ++ ;
outporbt( 0x20, 0x20) ; }
3. “软件接口—数据处理程序
通讯的结果数据存放于内存0000: 0200H 处 , 但 FOXPRO 没有这种数据的处理能力 ,为此 ,必须制作一个“软件接口” , 将存放于内存中的数据转换成 FOXPRO 处理的数据形式 。
在这里, 用 C 语言开发了一个小程序,将内存 0000: 0200H 处的数据输出到一个文本文件 ,以便利用。程序清单如下 :
# include”dos. h”
# include”stdio . h”
char far * rec =( char far *)MK_FP( 0x0000, 0x0200) ;
/ *定义要处理的数据在内存中的位置* /
main( )
{ FILE *f. *fopen( ) ;
int i;
f=fopen( ”data . dat” ,”w”) ;
/ *data . dat 是存放通讯结果数据的文本文件* /
for( i=0; i<16; i ++ )
fpute( rec[ i] , f) ;
fclose( f) ;
exit( 0) ; }
4.结束语
上述程序在 AST4/66d 上调试通过 。实现了计算机与 AD - 4322A的通讯, 并对通讯数据进行和必要的处理。这种方法还可以推广应用到其他类型的称重显示仪表。有兴趣的同行不妨一试 。
称重显示仪表与计算机的通讯是一项基础的技术工作, 为采用计算机管理计量信息奠定了非常坚实的技术基础。
本文源于网络转载,如有侵权,请联系删除
×