基于串口仿真的地磅模拟系统的研究与应用
基于串口仿真的地磅模拟系统的研究与应用
用Asp.Net(C#)和串口通信仿真系统,根据不同型号地磅的数据协议规则,模拟地磅称重向串口连续发送数据,C#根据接收到的十六进制数据进行截取转化计算,实时显示称重重量,很好地解决了程序开发过程中调试问题,极大缩短了系统开发时间,提高了系统稳定性。
地磅也被称为汽车衡,是大宗货物计量的主要称重设备。串口因具有接线简单、传输距离长、稳定可靠等优点,而被广泛应用于工业控制系统之中,是计算机与地磅等硬件设备进行数据通信的重要方式之一。由于地磅的特殊性及串口独占性,给程序开发调试及系统实施带来了诸多不利因素,因此,本文提出一种基于串口仿真的地磅模拟系统,根据不同型号地磅的数据协议规则,向串口连续发送数据,C#根据接收到的十六进制数据进行截取转化计算,实时显示称重重量,模拟开发系统可直接通过串口连接实物,极大缩短了系统开发时间,提高了系统稳定性。
1.虚拟串口
虚拟串口是用操作系统的虚拟驱动技术产生的串口,相对于计算机本身的硬件串口来说虚拟串口并不对应一个物理上的串口,但是计算机应用软件可以像硬件串口一样地使用虚拟串口,对于串口软件来说虚拟串口和硬件串口并没有区别。本文采用虚拟串口工具( Virtual Serial Port Driver 6.9)添加两个虚拟串口 Com3及 Com4,实现数据的发送与接收,如图 1所示。
2.串口调试
利用虚拟串口 Com3,设置波特率、校验位、数据位及停止位等参数,根据不同型号地磅的数据协议规则,向Com3连续发送十六进制数据。本文采用托利多型号数据规则进行数据模拟,数据输出格式为: 02 72 60 20 30 30 36 36 37 35 30 30 30 30 30 30 0D 4E。托利多输出格式如图 2所示。其中:1.起始符 (02H);2.状态字;3.显示重量,6位不带符号和小数点的数字; 4.皮重值, 6位不带字符和小数点的数字; 5.结束符( 0DH);6.波特率、校验位、数据位、停止位参照实际地磅设置参数。
3.系统开发
3.1串口初始化
采用 C#的 SerialPort类 PortName、BaudRate、DataBits、Parity、StopBits属性分别设置通讯格式中的串口名、波特率、数据位、校验位、停止位,参数配置与图 3设置一致。serialPort.PortName = Com3;
serialPort.BaudRate = 9600
serialPort.DataBits = 8;
serialPort.Parity = Parity.None;
serialPort.StopBits= StopBits.One;
3.2数据接收与处理
采用 C#的 SerialPort类 DataReceived事件接收串口发送的数据,根据获取数据的 ASCII表进行十进制转化。运行程序如下。
f (receivedData[i] > 47 && receivedData [i] < 59) //接收的数据
}
double weight = 0; //定义重量
for (int i = 0; i < data.Length; i++)
{//根据十进制数组按个、十、百、千位进行累加
weight += Convert.ToInt32(data[i] * Math.Pow(10, data.
Length - i - 1));
运行效果如图 4所示.
4.结束语
笔者采用串口仿真技术有效解决了地磅等实物不宜调试的问题,提高了程序开发效率。并且有效解决了系统连续运行稳定性问题,仿真技术可直接应用到实际项目中。