无纸记录仪是储油罐容积表自动标定系统的主体部分,计算机上层软件通过与无纸一记录仪的串行接口通信,进行系统状态的选择。根据系统工作的需要,要求能够选择的状态有两个,一个是进入工作状态设置菜单,另一个是进入工作状态。工作状态设置菜单包括设置液位上限,设置液位下限,清除液位上下限,上传数据,清空存储器,返回选择5个命令。进入工作状态是进入控制台的油罐液位采集状态,采集需要的数据,并对他们进行存储,以备待用。
计算机上层软件程序要与无纸一记录仪的串行接口进行通信,它们之间要进行选择工作状态的操作,就需要计算机串行口和单片机W77E58串口之间有一个串口通信协议。在硬件设计上,使用W77E58的串口1与计算机串口进行连接,它们之间没有规定的通信协议,所以在这里使用了我们自己设定了通信协议。串口1通信协议如表5-1所示。
表5-1串口1通信协议
当通过计算机上层软件向无纸记录仪送入命令时,无纸记录仪的核心部分单片机判断送来的是什么命令,给标志位赋值,可以通过标志位来判断当前上层软件发送的命令要求。在此,送入的命令首先要判断是进入工作状态设置状态 (55C0AA)还是进入工作 (55C7AA)。如果进入工作状态设置菜单,接下来要判断下一条命令的操作,包括液位上、下限设置,清除液位上、下限,上传数据,返回,清空。命令的传送是通过串口实现的,在进行串口通信之前,我们首先要对串口进行初始化,使用定时器l作为波特率发生器,设置波特率为9600,设置计数器0,初始化为0值,开中断。
按照以上的流程可以看出,每个命令对应着一个操作,我们通过这个菜单的设置来选择需要进入的操作,每个操作对应不同的功能。
1.设置液位上、下限命令。液位上、下限值是通过计算机上层软件输入的,在程序设计中对输入的上、下限值有一个限制,就是输入的上限值不能小于输入的下限制,否则提示出错。满足条件的上下限值,要存入AT
2.上传数据命令。在存储器中存储的数据会通过串口1传送给计算机上层软件的数据库。为了保证传输数据的正确率,我们使用到了CRC校验来检测传送数据的正确性。对要传送的数据计算出CRC校验码,CRC校验码与存储的数据同时传送给上位机,上位机接收到数据后,对接收的数据用相同的规则也计算出CRC校验码,比较接收到的CRC校验码的值和计算得到的CRC校验码值,若相同则说明传输的数据正确,否则说明传输的数据存在错误,发出重传命令。
3.清除液位上、下限命令。通过计算机上层软件设置液位上、下限的值均为零。液位上、下限清零的目的是便于下次重新设置液位的上、下限值。
4.返回命令。当重新选择系统是进入工作状态设置菜单还是进入工作时,需要返回命令返回入口处重新选择。选择该命令的作用是使程序进入判断命令入口重新选择。
5.清空存储器命令。当一次储油罐的数据采集结束后,存储器存储的数据己上传给上层数据库。为了下一次存储,要将存储器中没有用的内容清空,这条命令就起到了清空存储器的作用,在这里使用的是存储器SST29EE020的芯片擦除命令完成的。命令被选择后,相应的命令名称,工作过程中设置的液位上下限值以及采集过程中采集到的液位高度值和它对应的加油机接口的累计脉冲值都要求在液晶屏上显示。需要对液晶控制器编程来显示我们需要的这些信息。液晶显示操作的流程图如图5-3所示。
图5-3液品操作显示流程图