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原则,取第一条已发送上线车辆,更新工位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_CodeStation_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。