当前位置:首页 > EDA > 电子设计自动化
[导读]本文针对自动抄表系统结构,通过一系列方法来提高上位机软件的可靠性,从而协调和下位机(硬件)数据及命令的交互。上位机采用Visual Basic 6.0编程工具,采用MSComm控件实现与通讯控制器的通讯。1帧格式的设计要保证数

本文针对自动抄表系统结构,通过一系列方法来提高上位机软件的可靠性,从而协调和下位机(硬件)数据及命令的交互。上位机采用Visual Basic 6.0编程工具,采用MSComm控件实现与通讯控制器的通讯。

1帧格式的设计

要保证数据的正确性和可靠性,必须设计一种尽可能避免错误出现的帧格式,我们以01H作为帧起始码(SOH),以04H作为帧结束码(EOT)。在帧内的数据中也有可能出现01H和04H,必须加以替换以区别帧头和帧尾。文中以DLE+‘x’来代替SOH(01H),以DLE+‘y’来代替EOT(04H)。此时会出现一个问题,即如何区分数据区中的DLE与替换后出现的DL E;这就必须对数据DLE(10H)再进行替换,以DEL+‘z’来替换DLE,此时所有情况的替换结束。这既能很容易识别出一帧数据,又避免了因数据区中出现特殊字符而导致错误数据的出现,再结合奇偶校验,从而进一步保证了传输数据的可靠性。

对上位机发送的数据,要先替换后校验;而对于下位机传上来的数据,要先校验再反替换,这是为了保证上位机和下位机在通讯线路中都不出现特殊字符SOH、EOT和DLE而设计的规定。反替换流程相当于替换流程的逆,在此就不再累述了。

2串口问题

因为本系统的上位机是通过RS232转RS485与下位机进行通讯的。所以,串口通讯的可靠性直接关系到整个系统的可靠性。而串口的使用借助于Visual Basic 6.0中的MSComm控件。MSComm控件是通过OnComm事件来触发的,触发的时机由CommEvent的属性Rthreshold决定。当设定Rthreshold=1时,即缓冲区每接受到1个字符就引发一次OnComm事件;当设定Rthreshold=10时,即缓冲区每接收到10个字符就引发一次OnComm事件。因考虑到前面的替换问题,每一帧的长度是无法预测的,但根据通讯规程可以知道最短帧的长度。我们采用最少数据长度(没有任何替换)作为Rthreshold的值。这虽然可以保证对上传数据的及时响应但无法保证获得一个完整的帧。当使用此语句读串口时若接收的数据没经过任何替换则可接收到完整一帧,否则数据帧不全。解决的方法是在读串口前加延时以保证读入数据完全,至于延时的处理不建议用循环语句来实现,这将增加调试的难度,最好的方法是调用API函数Sleep:

Sleep()中时间以毫秒作为最小时间单位,a值的选取必须通过多次调试才能获得最佳效果。另外,为了防止MSComm控件串行通讯问题,在发送读串口命令时通过启用定时器处理程序来捕获串口通讯异常。这些方法可以最大程度的减少因通讯方面的问题而引发的错误。

3整体抄表问题

自动抄表系统的优点在于它既可以对单一用户又可以对所有用户的水、电、气三表进行读数而不需人工干预。单一抄表比较简单;但在整体抄表过程中会出现因连续、快速的读数导致硬件的采集速度与上位机的读数速度不匹配,或因串口事件处理函数未结束而又有事件触发,或线路干扰等一系列问题,这些因素都会影响到整体抄表的稳定性和正确率。由于整体读数的复杂性,仅通过增加错误处理程序往往无法达到预期效果。对于本系统,笔者通过不断实践发现,在整体读数程序中引入第二个延时和重复读数功能可以大大提高整体读数的正确率。

在发出读数命令并正确读到数据后,必须进行短暂的延时,然后再读下一户,再延时,以此类推直到全部读完。当对一户读数出错时,要重复对其读数几次,若正确再读下一户,否则先调错误处理函数,再读下一户。注意:错误数据不能写入数据库,以防结算时产生问题。延时的引入尽管会对整体抄表的速度造成一定影响,但考虑到系统的整体性能,以损失一定速度来换取准确性这在绝大多数自动抄表系统中是可以接受的。在整体抄表过程中,“延时”具有关键的作用,它不但协调了软件和硬件之间的问题,也协调了软件自身的问题。

通过上述方法,使得整个系统从细节到整体上都加强了抄表系统的可靠性和对 大多数错误情况的避免和处理,从而保证了自动抄表系统高性能和高可靠性的要求,这种方 法在实际应用中收到了良好的效果。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

央视《今日说法》栏目近期报道了一名90后程序员通过开发非法视频搬运软件在不到一年的时间里获利超700万,最终获刑的案例。

关键字: 程序员 软件

上海2024年4月22日 /美通社/ -- 恶性的攻击和意外事件总是防不胜防,提前部署灾备方案可以在遭遇意外时尽可能减少企业损失。那么面对无处不在的勒索病毒和潜在风险,为什么依然有很多企业还会遭遇数据丢失?

关键字: 勒索病毒 软件 电脑 群晖数据

SAP(思爱普)近日发出的裁员计划,不仅涉及全球范围内约8000个职位,更是在中国区造成了近1500名正式员工和合同工不续的情况。

关键字: 软件 互联网

上海2024年4月17日 /美通社/ -- 每年4月17日是世界血友病日。今年,世界血友病日以"认识出血性疾病,积极预防和治疗"为主题,呼吁关注所有出血性疾病,提升科学认知,提高规范化诊疗水平,让每一位出血性疾病患者享有...

关键字: VII 动力学 软件 BSP

自 ChatGPT 出现以来,生成式人工智能 (GenAI) 在亚洲和大洋洲的开发和部署势头强劲,Omdia 的最新《亚洲和大洋洲的生成式人工智能 - 2024 年:通过本地化实现民主化》报告表明,到 2024 年底,G...

关键字: 人工智能 软件 AI

德国埃朗根2024年4月16日 /美通社/ -- Elektrobit 今日宣布推出 EB zoneo GatewayCore——首款支持、配置和集成现代微控制器新一代硬件加速器的软件产品,可应用于先进的汽车电子/电气架...

关键字: 汽车 软件 硬件加速 通信网络

Windows Embedded Compact 7(简称WinCE)是一种专为嵌入式系统设计的操作系统,具有体积小、效率高、可定制性强的特点。在WinCE中设置自动运行软件,通常是为了满足设备在启动后自动执行特定任务的...

关键字: 嵌入式系统 软件 操作系统

业内消息,日前欧洲软件巨头SAP宣布了一项重组计划推动人工智能增长,该计划将涉及大约8000名员工的岗位调整,这些员工将被纳入自愿休假计划和内部再培训措施,即鼓励员工自愿离职或进行内部转岗。

关键字: AI 重组 软件 裁员 SAP

上位机串口通信是指在上位机(通常是计算机或微控制器)与外部设备之间通过串行通信协议进行数据传输和通信的过程。在串口通信中,数据以位为单位按顺序传送,通常使用一个或两个物理线路(通常是两条线)来实现数据的发送和接收。

关键字: 上位机 串口通信

业内消息,国家工信部近日公布了今年前三季度我国软件和信息技术服务业的具体情况,整体运行态势平稳,软件业务收入两位数增长,利润总额保持较快增长,软件业务出口降幅收窄。

关键字: 工信部 软件
关闭
关闭