咨询电话
ENGLISH0755-88840386发布时间:2021-06-25 14:57:00 |来源:网络转载
—、前言
现代电子衡器是由专用称重仪表、称重传感器、秤体三部分组成的。通常,这三部分都藕影响整个电子秤系统的准确性、稳定性和可靠性。然而,除去硬件的因素,依靠软頌来确保系统高精度高计量功能,则完全是由专用称重仪表来提供的,这就是电子衡器为专用称重功能。
电子衡器的专用称事功能,是以软件形式表现出新的。在研制过程也尽可能空发挥微处理机的优点,力亲硬件功能模块化的同时实现矗功能模块化,能够用软件卖现的功能都尽量采用软件去实现,做到一次开发,长期受益,有利于功能铲展和降低成本。如图1所示为该称重仪表的系统程序流程图。为了提髙实时能方,缩短软件的处理时间,该软件全部采用Z80汇编语言设计而成。
二、系统软件的变体实现及特点
和硬件研制相比,软件设计具有更多的灵活性。但是,研制软件所需的时间和费用,往往是一个不易估计的问题。对于一个比较简单,规模较小的应用程序,通常只须用程序流程图就足以说明所有的问题。如果程序比较复杂、规模很大,则程序设计将面临一些其它问题。例如,如何把整个程序划分成模块,如何把程序编得清楚明了,便于査错和测试等。实践证明,一个好的应用软件,不仅要能够执行规定的任务,而且在开始獲计时,就应该考虑到维护和再设计的方便,使它具有足够的灵活性、可扩充性和可移植性。
由于系统软件比较复杂,规模较大。因此,在具体程序设计中采用了程序流程图、模决化程序设计、结构化程片设计这三种方法同时并川的方式,比较好地解决了以上两个问题,满足了用户提出的性能指标及功能要求,从而得到-•个可靠性高,可读性强且效率较优的系统程序。
1,系统软件的总体布局及功能
从整个软件系统来说,采用的方法是绘制流程图并配以详尽的文件编制。从图1可以看出,它以直观、易于理解的方式对所要求的任务作出了详细描述.这样,一方面有利于在程序设计时很容易地从流程图转变成程序;另一方面,若有较大的问题出现,也便于以此作为依据,重新进行软、硬件的协调工作。同时,为今后的软件维护和再设计提供了很大方便。
适当的文件编制是软件设计的重要内容。它以对用户和维护人员最为合适的形式来描述程序,不仅有助于进行査错和测试,而且对程序的使用和扩充,也是必不可少的。
该系统软件的完整文件,涉及如下一些内容'
•总流程图及各功能键、各模块流程图
•程序的功能说明
•所有参量的定义清单
•存贮单元的分配图 /
•完整的程序清单和注释
•测试计划和测试结果说明
在整个系统设汁中,由软件来实现的功能主要有以下几点:
①开机自动进入检査笔划程序,检査4个指示灯,显示出仪器型号并自动清零。
②多种货物设定功能。
③重量显示功能。校验状态为30000码,使用状态下为3000码。
④量程及功能自动选择。由三组8位微型拨动开关来改变最程及功能选择。
⑤自动追零功能,具有长期的稳定性。
⑥去皮功能(重新校零)。
⑦可作金额、体积、含水率、固定皮重差这四种附加运算。
⑧具有日报、月报的累计打印功能,并可进行日报统计。
⑨制作车辆登记一览表。
⑩次数累计。将一天或一个月货物的次数累计。
⑪互锁禁止功能。如日报、月报统计键与消除开关的连锁,并有蜂鸣器报警,从而避免了因操作错误将统计数据冲掉。
⑫操作错误自诊断功能。具有Errl〜Errl3显示。
⑬超载显示报警功能。
⑭蜂鸣器用于指示键接触是否良好。
此外,还有打印票据的修正,累计值的修正等功能。
2,系统软件的模块化设计
由于模块比程序小,采用模块化程序设计便于设计、測试,从而大大提高了软件的可靠性。如果模块间的耦合强度大,那么,尽管单个模块的可靠性高,但所组成的程序的可靠性仍然很低。而耦合强度的强弱取决于模块间共享与互相引用(或调用)数据的多少与频率。因此,应尽量减少使用公共数据,减少模块间的相互作用,从而提高软件的可靠性。实际中,模块是按以下两种原则进行分割的,即按功能分割与,以数据为中心分割,前者把功能相似或相关的操作集中于一个模块中,后者把对一个或一类数据所作
的操作集中在同一模块中。
本系统软件中,大量采用模块化程序设计方法,冇以下优点:
①作为一个具有某种功能、相对独立的模块比起一个完整的程序要相对容易编写、査错、修改和测试。
②模块可以共享,一个模块可能被多个任务在不同的条件下调用。这样,一方面减少了不必要的程序段,提高软件的可靠性,另一方面,增强了程序的可读性,为程序的维护和再设计提供了方便,使它具有足够的灵活性、可扩充性和可移植性。
③模块化程序设计方法允许将任务进行分割,并为利用一些已有的程序提供了很大的方便,从而进一步加快了软件研制速度,缩短了硏制周期。
3.A/D中断实时数据处理程序
如上所述,采用模块化程序设计方法的优点是很突出的。但是在该称重仪表应用软件的编制过程中,某些程序(如A/D中断数据处理程序及其它功能键程序)难以模块化,因此采用了结构化程序设计方法。釆用这种方法的优点主要在于能够编写出操作顺序分明、便于査错和纠正错误的程序,使其保持简明性,尽可能提高软件的可维护性及可舞性。
如图2所示为非结构化程序流程图。可以看出,如果在模块B中发生一个错误,则该错误可能有5个来源。为了纠正这一错误,不仅要检査每个可能的序列,而且还必须保证所作的任何变更,不会对其它的序列产生影响。这就往往使测试工作顾此失彼,给阅读和査错带来了很大困难。
解决这一问题的方法就是采用结构化的程序设计。如图3所示。显然,它具有以下几个优点,
①由于每个结构只有一个入口和一个出口,因此,操作顺序易于跟踪,便于査错和测试。
②每个模块的错误来源是单一的。
③程序本身容易用程序框图来描述。结构化的程序已经接近文件编制,因而阅读比较容易。
④理论上已经证明,利用上述基本结构,可以构成所有的程序。实践也证明,这种设计方法对于提高软件设计的工作效率是有益的。
基于上述优点,在A/D中断数据处理程序中采用了结构化程序设计方法。其它功能健的具体程序中也广泛采用了这种方法。
在软件设计过程中,本文不仅要考虑系统程序的可靠性、可读性,还要考虑到它的效率问题。一般来说,服务于不同目标的程序有不同的效率要求。一些使用频繁的软件,在不牺牲可靠性的情况下,效率成为主要目标。在本系统软件中,A./D中断数据处理程序是使用最为频繁的。但是,即使对程序的时间或空间要求很严格,也不应在程序设计技巧上下太大功夫,而应在选择设计算普时就应该选择能满足或接近于满足给定时空要求的算法。一个好的算法所节省的时间或空间往往是无法通过对程序进合优化所能节省出来的。
在这里,量程转换倍率X1,x2,x5,X10,x20,X50就是通过加法来实现的,也就是把速度慢的运算用速度快的算法代替。举例如下:
而在A/D中断数据处理程序中R*10,R/10是由左移、右移指令来实现的。它们都是以枷牲可读性及空间为代价来提高软件的效率的,这比调用一个乘法子程序和除法子程序其执行速度相对地要快得多。
A/D中断处理程序还包括自动零点追踪功能。自动零点追踪是指每次采样零跟踪范围,太大将影响计量准确性,太小将不能保证仪表的零点。本系统软件中控制在l/4d左右。
称重仪表的零点值是随环境因素、工作条件的变化而变化的。过去,仪器用硬件来消除零漂,但精度一高,时间一长,零点值就很难稳定在零。使用微处理机以后,即使采样到视为零的基数值,也可能是随机的。为解决这个问题,在微处理机每次处理A/D数据的过程中,测试零点值,以修正原存储的零点值(取而代之)。需注意两个问题:①正在测量时不能将测量值误认为零点值(即只对写点进行自动追踪),此时要保存原有的零点值,只有在测量间隙才继续自动校正,②零点值的自动校正,可能要影响分辨力,但仪表的分辨力不应降低。釆用的方法是将每次测得的数据与原存零点值求相对差,当差值大于n即认为非零点并建立标志;反之则取代原存零点值,储存该次测试结果。n必须根据精度要求来确定。选n=3。如图4所示为自动零点追踪的框图。由于采用了软件调蓼,因而零点具有长期的稳定性。不仅克服了由于电路自身,传感器及现场等引起的漂移,而且为保证系统的稳定可靠创造了很好的条件。
4.打印程序的设计
在汽车衡等智能仪表及单机自动控制系统中,越来越迫切需要具有较为理想的汉字打印机作为外部输出设备。
从1986年开始汽车衡的研制工作,就对打印输出的格式提出了要求,即为要打印成表格式的清单。格式如下:
1987年10月23日11时25分
序号:157车号:51928
货号:105皮重:6720kg
代号:24净重:14880kg
洁单要以汉字的形式输出,而汉字的笔划很复杂。因此,字符轮式的打印机不能采用。现有的各种点阵式微型打印机有些只能与单一型号的单板机配套,有些虽然通用,但硬件结构过于复杂而且要占用主机的I/。通道作为数据通讯线;有些价格很昂贵,不利于今后民品的开发。它们最大的弱点就是不能方便地打印出较为理想的汉字,因为其字符组成一般均为5x7点阵,而能用5x7点阵组成的汉字为数极少。
本文在TP801P打印机的基础上,在其硬件线路基本不改的情况下,对其软件进行了重新设计(TP801P打印机最大的弱点就是无法象打印字母及ASCII代码那样实现复杂汉字的打印输出)。提出在微型针式打印机中釆用9X16点阵(汉字采用该点阵)来组成字库的设想,并于1987年2月调试完毕。由于本文对软件进行了重新编制,使釆用TP801P硬件线路的可能得以实现,从而大大缩短了整个系统的研制周期,降低了整个系统的研制成本,提高了可靠性(TP801P的硬件线路极少,只有必要的接口和打印驱动电路,打印功能儿乎完全靠软件来实现)。该打印程序具有以下几个特点:
①点阵大,字迹清晰美观,用户可根据实际需要任意定义。
②整个字库分为汉字库和非汉字库。汉字点阵为9x16,非汉字(英文字母、ASCII代码及字符等)的点阵为5X16。这样既有利于调用,又节省了内存空间。
③打印功能分三种方式实现,全部采用子程序调用方式。分为汉字打印、非汉字打印及汉字非汉字混合打印这三种方式,从而方便了各种不同需求的打印完成,增强了通用性,使它可以广泛地应用于各种智能仪器仪表的汉字打印输出。
④由于打印工作几乎完全依靠软件来实现,因此硬件线路极少,降低了研制成本,且整个打印机系统的可靠性得以大大提高;又由于打印软件采用的是调子程序方式,从而使系统软件的灵活性、可移植性大大增强。
本程序只需改动两个位置的参数,就可实现更为复杂的汉字输出(字的高度为16点阵,宽度不限)。
结论
本文从提高系统软件的可靠性、可维护性及效率的考虑出发,结合实际雳要采用了程序流程图等三种方法同时并用的方式,完成了该称重仪表应用软件的研制。XK3101型称重显示控制器主要用于SCS-30/50型电子汽车衡,对各种车辆装载的整车物资进行计量。还可根据不同需要组合成电子料斗秤、配料秤、起重吊秤等,作精密计量及控制使用。该称量仪表自1987年完成设计后,已大批量交付用户使用。
本文源于网络转载,如有侵权,请联系删除