一种新型汽车检测控制系统调度算法的制作方法

文档序号:18471461发布日期:2019-08-20 20:20阅读:233来源:国知局
一种新型汽车检测控制系统调度算法的制作方法

本发明属于调度算法技术领域,涉及一种新型汽车检测控制系统调度算法,具体地说,一种结合winsocket与网络数据库的新型车辆检测调度算法。



背景技术:

随着我国经济社会持续快速发展,机动车保有量呈快速增长趋势,据公安部交通管理局统计,截至2017年底,全国机动车保有量达3.10亿辆,其中汽车2.17亿辆,与2016年相比,全年增加2304万辆,增长11.85%。汽车安全性能检测是保证道路交通安全的重要措施之一,国家相关部门高度重视,陆续制定出台了面向机动车安全性能检测与综合性能检测的系列标准。除此之外,还出台相关政策,如机动车检验业务逐步社会化、市场化来缓解车主检车排队、检验时间长等问题。为了检验业务更加公平公正,2015年,公安部要求各交警支队使用全国统一版的机动车检验监督管理系统,各检验机构部署安装机动车安全技术检验业务信息系统,该业务信息系统要满足国家标准gb/t26765-2011《机动车安全技术检验业务信息系统及联网规范》。标准实施后,每个检验项目开始检验前需要向检验监督管理系统申请,申请成功后拍摄检验过程照片并上传,检验完成时需要上传检验结果,再申请检验结束,因此设计合理、稳定、高效的车辆检测调度算法显得尤为重要。另外新标准实施后,现有的检测调度算法存在一些不足,如检验结果上传成功后,该项目则被锁定,不能继续申请检验,也不能再次上传检验结果,因此对检测异常中断的一些项目,如制动,需要断点保存功能,否则会形成本地报告单数据与监管平台数据的不同步。

现有调度算法主要有:

文件共享

该方式的基本思路是在各个工位硬盘上建立共享文件夹,主控机将报检信息以一定格式,如request.ini文件,写入到共享文件夹下,工位机在空闲的时候实时扫描判定是否有新的报检文件生成,如果有新的报检文件,读取报检信息,检测完成后将检测数据写入共享文件result.ini中,并将request.ini文件删除,主控机判定request.ini文件被删除后,读取共享文件result.ini获取检测数据,数据读完后删除result.ini文件。该方法存在诸多问题:1.实际使用过程中,经常出现由于病毒原因或安全策略设置原因导致共享文件夹无法访问的现象,整个系统无法调度,甚至瘫痪;2.工位机或主控机轮询报检信息或结果信息消耗大量cpu资源,尤其是主控机程序,需要处理的任务比较多,降低了系统调度的实时性,工位数量越多,实时性越差,不利于系统扩展。3.系统可靠性差,一旦工位机的报检信息文件被破坏或误操作,系统无法正常运行。

基于winsocket的车辆调度

现有技术介绍了一种基于winsocket的车辆动态调度方法。每个工位机在不发生故障的情况下,有空闲、忙和等待三种状态,当任何一个工位机进入新状态后都必须向主控机及时通报,直到主控机对该状态进行确认为止。与共享文件方式不同,信息是通过winsocket消息发送给工位机,如:第i个工位空闲(i取1,2,3...,maxgwnum),报检队列不为空时,主控机给第i工位发送报检数据帧,延时n秒后,主控机检测是否收到第i工位机回应,若收到则判定报检信息发送成功,否则重发,延时次数增1,若延时次数超过设定阈值,系统报网络错误,第i工位收到报检数据帧后执行检测任务,状态由空闲变为忙,检测完成后,检测数据按照一定帧格式发送给主控机并等待主控机调度,状态由忙变为等待,主控通过第i+1工位发来的winsocket消息判断i+1工位的状态,若第i+1工位状态为忙,第i工位一直等待,若第i+1工位空闲,主控请求第i工位离开,延时n秒后,判断第i工位是否回应,若第i工位没有回应,延时次数增1,若延时次数超过设定阈值,系统报网络错误。若第i工位回应,第i工位状态由忙变为空闲,主控向第i+1工位发送报检信息,依次类推。该调度算法利用tcp握手机制保证了数据发送的可靠性,整体优于文件共享方式,但是也存在如下几点不足:(1).命令帧和数据帧都是通过winsocket实现主控机与工位机之间的交换,命令帧数据量小,数据帧数据量大,尤其是近些年来国家监管部门要求传输制动力曲线、工位检测图片、视频等大容量数据,该数据传送方式容易丢帧,实现复杂,系统可靠性,实时性降低。(2).第i工位机出现掉电、重启等故障时,软件重新运行后,检测信息丢失,需要等待主控机重新发报检信息。(3).机动车安全检验机构连入监管平台后,实现了检测节拍的过程控制,若制动某轴检测完成后,支队网络突然发生异常或检测软件异常中断,只能通过业务退办继续检测,给检验机构带来不便,降低了检验效率。



技术实现要素:

本发明的目的在于为提高汽车检测控制系统车辆调度的效率和质量,对现有的基于共享文件、winsocket的调度算法进行了分析比较,提出了一种新型汽车检测控制系统调度算法。

其技术方案如下:

一种新型汽车检测控制系统调度算法,包括主控调度算法和工位调度算法;

主控调度算法步骤:

步骤1:输入参数为有效工位数n,设工位序号为i(i=1,2,......,n),循环读取每个工位的状态,记为status(i),读取每个工位的检测状态,记为jcflag(i),读取每个工位的受控状态,记为ctrlflg(i).记工位i的组合状态为si,令si为工位状态status(i)、工位检测状态jcflag(i)和工位受控状态ctrlflg(i)的组合。

步骤2:输入参数为最后一个有效工位组合状态si,(i=1).如果该组合状态中,工位状态为有任务,即status(i)=9,工位检测状态为完成,即jcflag(1)=9,且工位受控状态为等待,即ctrlflg(1)=1.则合成数据并打印报告单,否则执行步骤3.

步骤3:遍历工位状态,有效工位数n,设工位序号为i(i=1,2,......,n),输入参数为步骤1读取的各工位组合状态为si,根据各工位当前组合状态,更新各工位下一步组合状态。所有执行完成后,转步骤1.

步骤3的输入参数为:第i个工位状态si,第i+1个工位状态si+1。

步骤3的具体步骤为:

步骤3-1:当i=n时,si+1=″″。

步骤3-2:如果工位i的状态si=991且i=1,即工位状态为有检测任务,工位检测状态为完成,工位受控状态为等待。且工位i是最后一个有效工位(i=1),更新工位i的状态为si=999,即更新工位状态为有检测任务,工位检测状态为完成,工位受控状态为前进。否则执行步骤3-3。

步骤3-3:如果工位i的状态si=999,即工位状态为有检测任务,工位检测状态为完成,工位受控状态为前进。则更新工位i的状态为si=100,即更新工位状态为无检测任务,工位检测状态为初始状态,工位受控状态为初始状态。否则执行步骤3-4。

步骤3-4:如果工位i的状态为si=100,即工位状态为无检测任务,工位检测状态为初始状态,工位受控状态为初始状态。根据工位当前组合状态si及前一个有效工位组合状态si+1,更新下一步组合状态。

步骤3-5:工位序号i增1,转到步骤3-1.

步骤3-4的输入参数为工位i的前一个有效工位组合状态si+1.

步骤3-4的具体步骤为:

步骤3-4-1:如果工位i的前一个有效工位组合状态si+1=100,即工位i+1状态也为无检测任务,工位检测状态也为初始状态,工位受控状态也为初始状态,则执行步骤3-4-2.

步骤3-4-2:如果工位i的前一个有效工位组合状态si+1=918,即工位i+1状态为有检测任务,且工位检测状态为检测中,工位受控状态为检测,则执行步骤3-4-3.

步骤3-4-3:如果工位i的前一个有效工位组合状态si+1=″″.则判定上线车辆队列是否为空,若为空,执行步骤3-4-4。若不为空,按照fifo(firstinfirstout)原则,取第一条已发送上线车辆,更新工位i的有效组合状态为si=918,即更新工位i状态为有检测任务,且工位检测状态为检测中,工位受控状态为检测,此时相应的工位机则按受控指令进行报检项目的检测,检测完成后工位机更新本工位组合状态。该步骤在取完第一条已发送上线车辆后,将该车从上线车辆队列中删除,将报检队列中该车辆状态由“待检”更新为“检测中”。

步骤3-4-4:如果工位i的前一个有效工位组合状态si+1=991,即工位i+1状态为有检测任务,且工位检测状态为完成,工位受控状态为等待,那么更新工位i的有效组合状态为si=918,即更新工位i状态为有检测任务,且工位检测状态为检测中,工位受控状态为检测。同时更新前一个有效工位组合状态si+1=999,即工位i+1状态为有检测任务,且工位检测状态为完成,工位受控状态为前进。步骤3-4结束,转步骤3-5。

工位调度算法步骤:

步骤1:输入参数为本工位序号i(i=1,2,......,n),n为有效工位数。读取工位i的状态,记为status(i),读取工位i的检测状态,记为jcflag(i),读取工位i的受控状态,记为ctrlflg(i).记工位i的组合状态为si,令si为工位状态status(i)、工位检测状态jcflag(i)和工位受控状态ctrlflg(i)的组合。

步骤2:因屏蔽或故障的工位不参与调度,如果本工位被屏蔽或被设置有故障,即status(i)=0,转至步骤1。

步骤3:如果工位i的组合状态为si=100,即工位i无检测任务,检测状态和受控状态都为初始状态,提示屏提示“检测准备就绪”,转至步骤1。

步骤4:如果工位i的组合状态为si=991,即工位i有检测任务,检测状态为完成,且检测受控指令为等待,提示屏提示“请等待”,转至步骤1.

步骤5:如果工位i的组合状态为si=999,即工位i有检测任务,检测状态为完成,且检测受控指令为前进,提示屏提示“请前进”,转至步骤1.

步骤6:如果工位i的组合状态为si=918,即工位i有检测任务,检测状态为检测中,且检测受控指令为检测,提示屏提示“检测即将开始”,工位i即根据报检项目和已完成项目,逐项检测未完成项目,检测完成后工位机更新工位i组合状态,最后转至步骤1.

步骤6的输入参数为工位i的组合状态为si=918,工位i的当前检测车辆的检测流水号strserialno.

步骤6的具体步骤如下:

步骤6-1:根据工位i的当前检测车辆的检测流水号strserialno获取报检信息结构体。报检信息结构体至少包括“报检项目”、“车辆基本信息,如轴数、灯制等”、“检测节拍信息编码”等信息。记“检测节拍信息编码”为task_code.

步骤6-1中说明的报检信息结构体中的车辆基本信息都是指与检测项目相关的信息,如轴数与制动检测相关,前轴数与制动判定相关,双转向轴数与侧滑项目相关,灯制与前照灯项目相关等等。检测节拍信息编码是针对每个项目的原子项目进行编码,本专利提出的调度算法应用于机动车安全技术检验检测线,假设检验项目包括速度、制动、灯光、侧滑四个检验项目,那么原子项目指这些检验项目中的子项,子项无法再继续分解,如速度本身即无法分解,属于原子项目,制动包括每个轴的轮荷、制动、驻车制动原子项,假设待检机动车的轴数为j,那么原子项目即为3×j个。灯光包括左内灯、左外灯、右内灯和右外灯四个原子项目,一般机动车的前照灯有一灯制、二灯制、四灯制三种情况,假设待检机动车的灯制为k,那么原子项目即为k个。侧滑项目包括第一转向轴和第二转向轴,假设待检机动车的转向轴数为m,那么原子项目即为m个,因此,一个车辆的的最多待检车辆的原子检验项目为3×j+k+m+1个。若j=4,k=4,m=2,则原子检验项目数为19。

车辆在上线时会根据车辆信息和报检项目初始化检测节拍信息编码,编码定义如下:

各个占位符中,0表示该项目未报检,不需要检测,1表示该项目报检,需要检测。

同时,车辆在上线时会在各工位临时表stationresulti中初始化工位检验结果码,记为station_result_code,工位检验结果码初始化为:

各个占位符中,0表示该项目未检测完成,1表示该项目已经检测完成。检测完成指项目按照国标规定的方法检测完成且检测数据成功上传至监管平台。

步骤6-2:生成工位i的“检测节拍信息子码”。记工位i的“检测节拍信息子码”为station_task_code,有:

station_task_code=station_mask_code∩task_code

station_mask_code是工位掩码,若工位一检验速度,工位二检验制动,工位三检验灯光和侧滑,则各工位掩码为:

步骤6-3:如果工位i的“检测节拍信息子码”全为0,步骤6结束。否则执行步骤6-4.

步骤6-4:如果工位i的“检测节拍信息子码”不全为0,从左往右遍历子码,若子码第t位(1≤t≤lengthof(station_task_code))不为零,同时判断工位i的station_result_code第t位是否为零,若不为零,则说明该原子项目已经成功完成检测,可以直接加载该原子项目数据,然后继续遍历子码,若为零,则进行该项目检测,当检测完成且数据上报成功后,置station_result_code第t位为1,循环执行步骤6-4,直到子码遍历完成。步骤6-4结束的条件是:station_task_code与station_result_code相等。步骤6-4若完成,转步骤6-5.

步骤6-5:更新i组合状态si=991,步骤6结束,转步骤1。

本发明的有益效果为:

本发明经过测试使用,算法稳定可靠,满足全程实时联网环境下的调度要求,加快了检验机构的工作效率,减少了车主的等待时间,确保检验机构数据与监管平台数据的一致性。

附图说明

图1是实施例假设的报检车辆队列的检测时序图。

具体实施方式

下面结合附图和具体实施方式对本发明的技术方案作进一步详细地说明。

1核心算法设计

1.1调度表设计

算法设计的调度表包括工位状态表和工位调度状态表,工位状态表命名为gwzt,其数据字典设计如表1所示。

表1工位状态表数据字典

gwiflg设计有3种状态,有检测任务的时候状态为9,无检测任务的时候状态为1,其它状态为无效状态,如被屏蔽状态、存在硬件故障状态等,赋值为0。屏蔽或故障状态的工位不参与调度。

工位调度状态表命名为gwizt,i为工位的序号,工位状态表依次为gw1zt,gw2zt,...gwnzt.若检测线共有3个工位,即n=3,工位调度状态表即有gw1zt,gw2zt,gw3zt。数据字典设计如表2所示:

表2工位调度状态表数据字典

jcflgi设计有4种状态,正在检测的时候状态为1,检测完成的时候状态为9,出现故障时状态为7,其它为初始化状态,值为0.如表3所示:

表3工位检测状态表

ctrlflgi设计有5种状态,有检测任务时,控制状态赋值为8,表示检测命令;本工位所有报检项目检测完成,且下一工位正忙,控制状态赋值为1,表示等待命令;本工位所有报检项目检测完成,且下一工位空闲,控制状态赋值为9,表示前进命令;若检测任务由于某些原因被终止,控制状态赋值为7,表示中断检测命令。如表4所示:

表4工位控制指令表

1.2主控调度算法

利用工位状态表及工位调度状态表,将每个工位的工位状态gwiflg、工位检测状态jcflgi、工位控制指令ctrlflgi组成三个数的组合。由排列组合原理,共有3×4×5=60种组合。其中有很多为无效组合,将有效组合整理出来,如表5所示:

表5工位组合状态表

假设工位i没有故障,也没有被屏蔽,则该工位为有效工位(以下所述工位指有效工位)。若工位数为n,系统初始时,各工位组合状态都为″100″(以下所述状态指组合状态)。如果是第1个工位(i=n),从报检队列中按报检先后顺序选择一辆待检车,将第1个工位状态更新为″918″,此时其它工位的状态是″100″。如果第1个工位检测任务完成,其状态为″991″,表示第1个工位任务检测完成,需要等待。如果第2(i=n-1)个工位有检测任务,则保持第1个工位的状态为″991″,点阵屏提示引车员“请等待”;否则将第2个工位状态更新为″918″,同时将第1个工位状态更新为″999″,点阵屏提示引车员“请前进”,在随后调度过程中,第1个工位的状态会更新为初始状态″100″,此时第1个工位的检测任务调度到了第2个工位,依次类推。当调度到第n个工位时(i=1),需要对每个工位的数据进行合成处理。具体算法细节见算法1。

算法1:主控调度算法

主控调度算法步骤:

步骤1:输入参数为有效工位数n,设工位序号为i(i=1,2,......,n),循环读取每个工位的状态,记为status(i),读取每个工位的检测状态,记为jcflag(i),读取每个工位的受控状态,记为ctrlflg(i).记工位i的组合状态为si,令si为工位状态status(i)、工位检测状态jcflag(i)和工位受控状态ctrlflg(i)的组合。

步骤2:输入参数为最后一个有效工位组合状态si,(i=1).如果该组合状态中,工位状态为有任务,即status(i)=9,工位检测状态为完成,即jcflag(1)=9,且工位受控状态为等待,即ctrlflg(1)=1.则合成数据并打印报告单,否则执行步骤3.

步骤3:遍历工位状态,有效工位数n,设工位序号为i(i=1,2,......,n),输入参数为步骤1读取的各工位组合状态为si,根据各工位当前组合状态,更新各工位下一步组合状态。所有执行完成后,转步骤1.

步骤3的输入参数为:第i个工位状态si,第i+1个工位状态si+1。

步骤3的具体步骤为:

步骤3-1:当i=n时,si+1=″″。

步骤3-2:如果工位i的状态si=991且i=1,即工位状态为有检测任务,工位检测状态为完成,工位受控状态为等待。且工位i是最后一个有效工位(i=1),更新工位i的状态为si=999,即更新工位状态为有检测任务,工位检测状态为完成,工位受控状态为前进。否则执行步骤3-3。

步骤3-3:如果工位i的状态si=999,即工位状态为有检测任务,工位检测状态为完成,工位受控状态为前进。则更新工位i的状态为si=100,即更新工位状态为无检测任务,工位检测状态为初始状态,工位受控状态为初始状态。否则执行步骤3-4。

步骤3-4:如果工位i的状态为si=100,即工位状态为无检测任务,工位检测状态为初始状态,工位受控状态为初始状态。根据工位当前组合状态si及前一个有效工位组合状态si+1,更新下一步组合状态。

步骤3-5:工位序号i增1,转到步骤3-1.

步骤3-4的输入参数为工位i的前一个有效工位组合状态si+1.

步骤3-4的具体步骤为:

步骤3-4-1:如果工位i的前一个有效工位组合状态si+1=100,即工位i+1状态也为无检测任务,工位检测状态也为初始状态,工位受控状态也为初始状态,则执行步骤3-4-2.

步骤3-4-2:如果工位i的前一个有效工位组合状态si+1=918,即工位i+1状态为有检测任务,且工位检测状态为检测中,工位受控状态为检测,则执行步骤3-4-3.

步骤3-4-3:如果工位i的前一个有效工位组合状态si+1=″″.则判定上线车辆队列是否为空,若为空,执行步骤3-4-4。若不为空,按照fifo(firstinfirstout)原则,取第一条已发送上线车辆,更新工位i的有效组合状态为si=918,即更新工位i状态为有检测任务,且工位检测状态为检测中,工位受控状态为检测,此时相应的工位机则按受控指令进行报检项目的检测,检测完成后工位机更新本工位组合状态。该步骤在取完第一条已发送上线车辆后,将该车从上线车辆队列中删除,将报检队列中该车辆状态由“待检”更新为“检测中”。

步骤3-4-4:如果工位i的前一个有效工位组合状态si+1=991,即工位i+1状态为有检测任务,且工位检测状态为完成,工位受控状态为等待,那么更新工位i的有效组合状态为si=918,即更新工位i状态为有检测任务,且工位检测状态为检测中,工位受控状态为检测。同时更新前一个有效工位组合状态si+1=999,即工位i+1状态为有检测任务,且工位检测状态为完成,工位受控状态为前进。步骤3-4结束,转步骤3-5。

1.3工位调度算法

工位调度算法在工位调度线程中运行,第i个工位机轮询gwizt表,执行主控调度算法赋予的检测指令,具体算法细节见算法2。

算法2:工位调度算法

工位调度算法步骤:

步骤1:输入参数为本工位序号i(i=1,2,......,n),n为有效工位数。读取工位i的状态,记为status(i),读取工位i的检测状态,记为jcflag(i),读取工位i的受控状态,记为ctrlflg(i).记工位i的组合状态为si,令si为工位状态status(i)、工位检测状态jcflag(i)和工位受控状态ctrlflg(i)的组合。

步骤2:因屏蔽或故障的工位不参与调度,如果本工位被屏蔽或被设置有故障,即status(i)=0,转至步骤1。

步骤3:如果工位i的组合状态为si=100,即工位i无检测任务,检测状态和受控状态都为初始状态,提示屏提示“检测准备就绪”,转至步骤1。

步骤4:如果工位i的组合状态为si=991,即工位i有检测任务,检测状态为完成,且检测受控指令为等待,提示屏提示“请等待”,转至步骤1.

步骤5:如果工位i的组合状态为si=999,即工位i有检测任务,检测状态为完成,且检测受控指令为前进,提示屏提示“请前进”,转至步骤1.

步骤6:如果工位i的组合状态为si=918,即工位i有检测任务,检测状态为检测中,且检测受控指令为检测,提示屏提示“检测即将开始”,工位i即根据报检项目和已完成项目,逐项检测未完成项目,检测完成后工位机更新工位i组合状态,最后转至步骤1.

步骤6的输入参数为工位i的组合状态为si=918,工位i的当前检测车辆的检测流水号strserialno.

步骤6的具体步骤如下:

步骤6-1:根据工位i的当前检测车辆的检测流水号strserialno获取报检信息结构体。报检信息结构体至少包括“报检项目”、“车辆基本信息,如轴数、灯制等”、“检测节拍信息编码”等信息。记“检测节拍信息编码”为task_code.

步骤6-1中说明的报检信息结构体中的车辆基本信息都是指与检测项目相关的信息,如轴数与制动检测相关,前轴数与制动判定相关,双转向轴数与侧滑项目相关,灯制与前照灯项目相关等等。检测节拍信息编码是针对每个项目的原子项目进行编码,本专利提出的调度算法应用于机动车安全技术检验检测线,假设检验项目包括速度、制动、灯光、侧滑四个检验项目,那么原子项目指这些检验项目中的子项,子项无法再继续分解,如速度本身即无法分解,属于原子项目,制动包括每个轴的轮荷、制动、驻车制动原子项,假设待检机动车的轴数为j,那么原子项目即为3×j个。灯光包括左内灯、左外灯、右内灯和右外灯四个原子项目,一般机动车的前照灯有一灯制、二灯制、四灯制三种情况,假设待检机动车的灯制为k,那么原子项目即为k个。侧滑项目包括第一转向轴和第二转向轴,假设待检机动车的转向轴数为m,那么原子项目即为m个,因此,一个车辆的的最多待检车辆的原子检验项目为3×j+k+m+1个。若j=4,k=4,m=2,则原子检验项目数为19。

车辆在上线时会根据车辆信息和报检项目初始化检测节拍信息编码,编码定义如下:

各个占位符中,0表示该项目未报检,不需要检测,1表示该项目报检,需要检测。

同时,车辆在上线时会在各工位临时表stationresulti中初始化工位检验结果码,记为station_result_code,工位检验结果码初始化为:

各个占位符中,0表示该项目未检测完成,1表示该项目已经检测完成。检测完成指项目按照国标规定的方法检测完成且检测数据成功上传至监管平台。

步骤6-2:生成工位i的“检测节拍信息子码”。记工位i的“检测节拍信息子码”为station_task_code,有:

station_task_code=station_mask_code∩task_code

station_mask_code是工位掩码,若工位一检验速度,工位二检验制动,工位三检验灯光和侧滑,则各工位掩码为:

步骤6-3:如果工位i的“检测节拍信息子码”全为0,步骤6结束。否则执行步骤6-4.

步骤6-4:如果工位i的“检测节拍信息子码”不全为0,从左往右遍历子码,若子码第t位(1≤t≤lengthof(station_task_code))不为零,同时判断工位i的station_result_code第t位是否为零,若不为零,则说明该原子项目已经成功完成检测,可以直接加载该原子项目数据,然后继续遍历子码,若为零,则进行该项目检测,当检测完成且数据上报成功后,置station_result_code第t位为1,循环执行步骤6-4,直到子码遍历完成。步骤6-4结束的条件是:station_task_code与station_result_code相等。步骤6-4若完成,转步骤6-5.

步骤6-5:更新i组合状态si=991,步骤6结束,转步骤1。

本发明设计的算法,当工位组合状态为″918″时,每完成一项检测节拍,将检验数据更新到数据库中,新的联网监管系统实现了检测车辆的过程控制和过程监管,以制动为例,制动的每个轴检验前需要申请、检验完成后需要上传检验结果及项目结束信息,一旦检验结果信息成功上传,不可重新上传覆盖。为此,在结果表中增加检验项目上传成功标志信息,如b1表示一轴制动、b2表示二轴制动等。b1=1表示一轴检测完成且成功上传,b2=0表示二轴检测未完成等,当工位检测软件因网络故障、硬件故障等原因需要重新运行的时候,工位状态仍为″918″,只有检测完成的时候状态才会被更新为″991″,基于网络数据库的状态调度算法在软件重新运行的时候通过读取相应的工位状态表和工位调度状态表即可重新获取报检信息,继续检测,而基于winsocket通信方式的算法必须等待主控重发报检信息。而且,本发明设计的算法在软件异常重启的时候根据标志位即可判定哪些项目已经检验完成且成功上传,自动加载已检测完成且上传成功的车辆检测数据,继续未检测项目。这样既避免了重复检测,节省了时间,也确保了监管中心的数据与本地检测数据一致。

2、算法测试

为了验证本发明中提出的新型调度算法,本文采用实例分析对算法的可行性和合理性进行测试。假设有3个工位,选取5辆待检车辆。为5辆车辆在3个工位上分配检测任务,车辆检测耗时如表6所示:

表6车辆检测项目耗时表(min)

图1是本发明提出的调度算法按照表6所示的检测项目耗时表的调度gantt图。gantt图中展示了5辆待检车辆在3个检测工位上的消耗时间。通过实例分析,本发明提出的调度算法可以实现汽车检测控制系统的调度功能。

本发明设计的算法目前在榆林、咸阳、商洛等多个地区的10多个机动车安全性能检验系统中进行了测试使用,算法稳定可靠,满足全程实时联网环境下的调度要求,加快了检验机构的工作效率,减少了车主的等待时间,确保检验机构数据与监管平台数据的一致性。

以上所述,仅为本发明较佳的具体实施方式,本发明的保护范围不限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,可显而易见地得到的技术方案的简单变化或等效替换均落入本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1