.import "modbus.js" as ModbusJs var running = false var runningBackup = false var openPressureTimeMax = 10 var sealPressureTimemax = 5 var openPressureMin = 21 var openPressureMax = 35 var threshold_Setzero = 1.0 var delaycount_Setzero = 5 var readPressureInterval = 5 // ms //var maxPressureStableTime = 20 var releasePressureTimeOut = 180 //盲测开启压力 var estimate_Pressure = 0 var exit = false function playStart_Voice(controlSerial){ ModbusJs.voiceplayer_Play(controlSerial, ModbusJs.mhstart_voice) } function playStop_Voice(controlSerial){ ModbusJs.voiceplayer_Play(controlSerial, ModbusJs.teststop_voice) } function testStop(controlSerial,pressureDisplaySigFun,spy,log){ spy.wait(500) //关闭人孔盖进气阀门 ModbusJs.manHoleCover_IntakeCtrl(controlSerial,false) console.log("关闭人孔盖进气阀门") // //关闭低压中速进气阀门 // ModbusJs.lpms_IntakeCtrl(controlSerial,false) // console.log("关闭低压中速进气阀门") // //打开人孔盖测试口 // ModbusJs.manHoleCover_TestIO(controlSerial,true) // console.log("打开人孔盖测试口") // //打开低压高速泄气阀门 // ModbusJs.lphs_ReleaseCtrl(controlSerial,true) // console.log("打开低压高速泄气阀门") //打开人孔盖泄气阀门 ModbusJs.manHoleCover_ReleaseIO1(controlSerial,true) console.log("打开人孔盖泄气阀门1") var timeout=0 var end_count = 0 do{ //重新开始时 停止测试 if(runningBackup === false && running === true){ console.log("停止测试") //ModbusJs.closeAllValve(controlSerial) break } if(exit === true) break //延时 spy.wait(900) var obj = ModbusJs.mhPressureSensorReadReq(sensorSerial) if(obj.ret === false){ log.show("压力传感器通讯错误") break } // signal 压力显示函数 pressureDisplaySigFun(obj.pressureNumber) if(obj.pressureNumber < 12.0){ //关闭人孔盖测试口, 微弱压力由气缸上升释放 ModbusJs.manholecylinderCtrl(controlSerial,false) console.log("人孔盖气缸升") } timeout++ if(obj.pressureNumber < threshold_Setzero ){ end_count++ } }while(end_count < delaycount_Setzero && timeout < releasePressureTimeOut) ModbusJs.closeAllValve(controlSerial) console.log("关闭 关闭所有阀门") } //正压开启压力和密封试验 /* currentIndex 当前第几次试验 * controlSerial 控制串口对象 * sensorSerial 压力传感器串口对象 * pressureDisplaySigFun 压力显示信号函数(回调函数) * resultSigFun 结果显示信号函数(回调函数) * spy 仅用于延时的对象 * log 异常显示对象 * openPressureModel 测试整定压力记录压力的数据模型 * sealPressureModel 测试密封压力记录压力的数据模型 * blindTestpressureSigFun */ function valveStartBlindTest(currentIndex,processWindow,controlSerial,sensorSerial, pressureDisplaySigFun,resultSigFun,blindTestpressureSigFun,spy,log) { runningBackup = running var ret = true //var StablePressureCount = maxPressureStableTime*1000/readPressureInterval var openPressureNumber var sealPressureNumber console.log("安全阀测试开始") //step 1 // 关闭所有气路电磁阀 ModbusJs.relay1CloseAll(controlSerial) console.log("关闭所有气路电磁阀") spy.wait(500) //人孔盖气缸下压 ModbusJs.manholecylinderCtrl(controlSerial, true) //盲测压力 //打开人孔盖进气阀门 ModbusJs.manHoleCover_IntakeCtrl(controlSerial,true) console.log("打开人孔盖进气阀门") processWindow.show("开始盲测压力") estimate_Pressure = 0 var prevTime = Date.now() var keepCnt = 0 var delta = 0 var preDelta = 0 var obj = ModbusJs.mhPressureSensorReadReq(sensorSerial) if(obj.ret === false){ log.show("人孔压力传感器通讯错误") return false } var pre_pressure = obj.pressureNumber var pre_pressure2 = obj.pressureNumber2 ret = true do{ //延时 spy.wait(readPressureInterval) if(running === false){ console.log("人孔盖盲测压力--停止测试") ModbusJs.relay1CloseAll(controlSerial) console.log("关闭所有气路阀门") return false } var curTime = Date.now() var deltaTime = curTime - prevTime if(deltaTime >= 980){ obj = ModbusJs.mhPressureSensorReadReq(sensorSerial) if(obj.ret === false){ log.show("高压传感器通讯错误") ModbusJs.relay1CloseAll(controlSerial) console.log("关闭所有气路阀门") return false } delta = obj.pressureNumber2 - pre_pressure2 if((obj.pressureNumber2 - pre_pressure2) < 0.3){ keepCnt++ if(keepCnt ==1){ estimate_Pressure = obj.pressureNumber //setPressure = estimate_Pressure } }else{ keepCnt=0 } if(keepCnt >= 5){ //console.log("keepCnt > StablePressureCount") break; } prevTime = curTime pre_pressure = obj.pressureNumber pre_pressure2 = obj.pressureNumber2 pressureDisplaySigFun(obj.pressureNumber) // add pressure table // var table={} // table.pressure=obj.pressureNumber // //开启压力模型赋值 // openPressureModel.append(table) } }while(1) //关闭人孔盖进气阀门 ModbusJs.manHoleCover_IntakeCtrl(controlSerial,false) console.log("关闭人孔盖进气阀门") blindTestpressureSigFun(estimate_Pressure) testStop(controlSerial,pressureDisplaySigFun,spy,log) return true } //正压开启压力和密封试验 /* openPressureModel 测试开启压力过程表模型 * sealPressureModel 测试密封压力过程表模型 * pressureDisplaySigFun 压力显示信号函数 * resultSigFun 结果显示信号函数 */ //密封压力测试 function testStart(currentIndex,tabView,processWindow,controlSerial,sensorSerial, openPressureModel,sealPressureModel, pressureDisplaySigFun,resultSigFun,spy,log){ runningBackup = running var ret = true var openPressureNumber var sealPressureNumber //var StablePressureCount = maxPressureStableTime*1000/readPressureInterval console.log("人孔盖测试工装自动检测开始") //setp 1 // 关闭所有气路电磁阀 ModbusJs.relay1CloseAll(controlSerial) console.log("关闭所有气路电磁阀") spy.wait(500) //人孔盖气缸下压 ModbusJs.manholecylinderCtrl(controlSerial, true) //setp 2 //查看压力传感器值 等待压力降到最低值 processWindow.show("等待压力降到小于1.0kPa 以下") // //打开人孔盖测试口 // ModbusJs.manHoleCover_TestIO(controlSerial,true) // console.log("打开人孔盖测试口") // //打开低压高速泄气阀门 // ModbusJs.lphs_ReleaseCtrl(controlSerial,true) // console.log("打开低压高速泄气阀门") //打开人孔盖泄气阀门 ModbusJs.manHoleCover_ReleaseIO1(controlSerial,true) console.log("打开人孔盖泄气阀门1") tabView.currentIndex = currentIndex var timeout = 0 var end_count = 0 do{ if(running === false){ console.log("停止测试") ret = false break } //延时 spy.wait(900) var obj = ModbusJs.mhPressureSensorReadReq(sensorSerial) if(obj.ret === false){ log.show("压力传感器通讯错误") ret = false break } // signal 压力显示函数 pressureDisplaySigFun(obj.pressureNumber) //延时 timeout++ if(obj.pressureNumber < threshold_Setzero){ end_count++ } //spy.wait(900) }while(end_count < 3 && timeout < releasePressureTimeOut) if(timeout === releasePressureTimeOut){ log.show("泄压超时") ModbusJs.closeAllValve(controlSerial) console.log("关闭所有阀门") return false } console.log("压力降压到 %d kPa 以下", threshold_Setzero) // //关闭低压高速泄气阀门 // ModbusJs.lphs_ReleaseCtrl(controlSerial,false) // console.log("关闭低压高速泄气阀门") //关闭人孔盖泄气阀门 ModbusJs.manHoleCover_ReleaseIO1(controlSerial,false) console.log("关闭人孔盖泄气阀门1") if(ret === false){ return false } //setp 3 //打开进气阀门 tabView.currentIndex = currentIndex var pre_pressure = obj.pressureNumber var pre_pressure2 = obj.pressureNumber2 var preDelta = 0 var delta = 0 var releaseCnt = 0 var prevTime = Date.now() // var switch_pressure = 0.8*openPressureMin // var middlespeed_open = true // //打开低压中速进气阀门 // ModbusJs.lpms_IntakeCtrl(controlSerial,true) // console.log("打开低压中速进气阀门") // //打开低压低速进气阀门 // ModbusJs.lpls_IntakeCtrl(controlSerial,true) // console.log("打开低压高速进气阀门") ModbusJs.manHoleCover_IntakeCtrl(controlSerial,true) console.log("打开人孔盖进气阀门") ModbusJs.manHoleCover_lsIntakeCtrl(controlSerial,true) console.log("打开人孔盖低速进气阀门") var open_intake = true var switch_pressure = estimate_Pressure - 10 processWindow.show("开启压力试验开始") var result={} do{ //延时 spy.wait(readPressureInterval) if(running === false){ console.log("停止测试") ret = false break; } var curTime = Date.now() var deltaTime = curTime - prevTime if(deltaTime > 980){ prevTime = curTime obj = ModbusJs.mhPressureSensorReadReq(sensorSerial) if(obj.ret === false){ log.show("压力传感器通讯错误") ret = false break; } // if((obj.pressureNumber > openPressureMax*1.2) ){ // log.show("当前压力超出紧急泄放装置开启上限, 貌似泄放功能丧失") // ret = false // break; // } if((obj.pressureNumber >= switch_pressure) && (open_intake === true)){ var rev = ModbusJs.manHoleCover_IntakeCtrl(controlSerial,false) if(rev === true){ open_intake = false console.log("关闭人孔盖进气阀门") } } delta = obj.pressureNumber2 - pre_pressure2 //if((delta < 0.4) && ((delta < (preDelta-0.03)) || (delta <= 0.2))){ if(delta<0.08){ releaseCnt++ if(releaseCnt === 1){ openPressureNumber = obj.pressureNumber } }else{ releaseCnt=0 } // console.log("current pressure:"+obj.pressureNumber2+", delta:"+delta+", preDelta: "+preDelta) // console.log("releaseCnt:"+ releaseCnt +" ") preDelta = delta pre_pressure = obj.pressureNumber pre_pressure2 = obj.pressureNumber2 if(releaseCnt >= openPressureTimeMax){ break; } pressureDisplaySigFun(obj.pressureNumber) //sealCnt++ // add pressure table var table={} table.pressure=obj.pressureNumber //密封模型赋值 openPressureModel.append(table) //processWindow.text("21kPa压力进气时间"+(sealPressureTimemax-sealCnt)+"s") } }while(1) // //关闭低压中速进气阀门 // ModbusJs.lpms_IntakeCtrl(controlSerial,true) // console.log("关闭低压中速进气阀门") // //关闭低压低速进气阀门 // ModbusJs.lpls_IntakeCtrl(controlSerial,true) // console.log("关闭低压高速进气阀门") //关闭人孔盖进气阀门 ModbusJs.manHoleCover_lsIntakeCtrl(controlSerial,false) console.log("关闭人孔盖进气阀门") if(ret === false){ openPressureNumber = obj.pressureNumber } result.openPressureNumber = openPressureNumber result.sealPressureNumber = "" result.sealPressureNumber2 = "" resultSigFun(result) console.log("泄放压力:",openPressureNumber) // if(obj.pressureNumber < openPressureMin){ // processWindow.show("压力低于开启下限") // return false // } /* //setp 4 开始密封实验 // 压力开始下降 var keepCnt = 0 tabView.currentIndex = currentIndex+3 processWindow.show("密封压力试验开始") console.log("密封压力试验开始") do{ //延时 spy.wait(readPressureInterval) if(running === false){ console.log("停止测试") ret = false break } curTime = Date.now() deltaTime = curTime - prevTime if(deltaTime > 980){ prevTime = curTime obj = ModbusJs.mhPressureSensorReadReq(sensorSerial) if(obj.ret === false){ log.show("压力传感器通讯错误") ret = false break } pressureDisplaySigFun(obj.pressureNumber) keepCnt++ // add pressure table var table2={} table2.pressure=obj.pressureNumber //密封模型赋值 sealPressureModel.append(table2) processWindow.text("密封压力试验时间"+(sealPressureTimemax-keepCnt)+"s") } //延时 spy.wait(readPressureInterval) }while(keepCnt < sealPressureTimemax) console.log("密封压力结束") if(ret === false){ return false } result.sealPressureNumber = obj.pressureNumber result.sealPressureNumber2 = "" resultSigFun(result) console.log("密封压力:",obj.pressureNumber) //setp 4.1 开始密封实验 console.log("泄放压力到 16.8kPa") if(obj.pressureNumber > 16){ processWindow.text("泄放压力到 16.8kPa 以下") ModbusJs.manHoleCover_ReleaseIO1(controlSerial,true) console.log("打开人孔盖泄气阀门") prevTime = Date.now() var prevTime2 = prevTime do{ //延时 spy.wait(readPressureInterval) if(running === false){ console.log("停止测试") return false } //压力数据通知 curTime = Date.now() deltaTime = curTime - prevTime if(deltaTime >= 20){ prevTime = curTime obj = ModbusJs.mhPressureSensorReadReq(sensorSerial) if(obj.ret === false){ log.show("低压传感器通讯错误") return false } if(obj.pressureNumber <= 15){ break; } } curTime = Date.now() deltaTime = curTime - prevTime2 if(deltaTime >= 980){ prevTime2 = curTime pressureDisplaySigFun(obj.pressureNumber) } }while(1) ModbusJs.manHoleCover_ReleaseIO1(controlSerial,false) console.log("关闭人孔盖泄气阀门") processWindow.text("等待压力稳定") pre_pressure = obj.pressureNumber2 releaseCnt = 0 do{ //延时 spy.wait(980) if(running === false){ console.log("停止测试") return false } obj = ModbusJs.mhPressureSensorReadReq(sensorSerial) if(obj.ret === false){ log.show("低压传感器通讯错误") return false } pressureDisplaySigFun(obj.pressureNumber) releaseCnt++ pre_pressure = obj.pressureNumber2 }while(releaseCnt<15) }else{ result.sealPressureNumber2 = obj.pressureNumber resultSigFun(result) return false } if(obj.pressureNumber < 16.8){ processWindow.text("加压到 16.8kPa ") ModbusJs.manHoleCover_lsIntakeCtrl(controlSerial,true) console.log("打开人孔盖低速进气阀门") prevTime = Date.now() prevTime2 = prevTime do{ //延时 spy.wait(readPressureInterval) if(running === false){ console.log("停止测试") return false } //压力数据通知 curTime = Date.now() deltaTime = curTime - prevTime if(deltaTime >= 5){ prevTime = curTime obj = ModbusJs.mhPressureSensorReadReq(sensorSerial) if(obj.ret === false){ log.show("低压传感器通讯错误") return false } if(obj.pressureNumber2 >= 16.6){ break; } } curTime = Date.now() deltaTime = curTime - prevTime2 if(deltaTime >= 980){ prevTime = curTime pressureDisplaySigFun(obj.pressureNumber) } }while(1) ModbusJs.manHoleCover_lsIntakeCtrl(controlSerial,false) console.log("关闭人孔盖低速进气阀门") } //setp 4.2 开始密封实验 // 压力开始下降 //tabView.currentIndex = currentIndex+3 processWindow.show("密封压力试验开始") console.log("密封压力试验开始") keepCnt=0 // table2={} // table2.pressure=obj.pressureNumber // //密封模型赋值 // sealPressureModel.append(table2) do{ //延时 spy.wait(readPressureInterval) if(running === false){ console.log("停止测试") ret = false break } curTime = Date.now() deltaTime = curTime - prevTime if(deltaTime > 980){ prevTime = curTime obj = ModbusJs.mhPressureSensorReadReq(sensorSerial) if(obj.ret === false){ log.show("压力传感器通讯错误") ret = false break } pressureDisplaySigFun(obj.pressureNumber) keepCnt++ // add pressure table table2={} table2.pressure=obj.pressureNumber //密封模型赋值 sealPressureModel.append(table2) processWindow.text("第2次密封压力试验时间"+(sealPressureTimemax-keepCnt)+"s") } //延时 spy.wait(readPressureInterval) }while(keepCnt < sealPressureTimemax) console.log("密封压力结束") if(ret === false){ return false } //result.sealPressureNumber = obj.pressureNumber result.sealPressureNumber2 = obj.pressureNumber resultSigFun(result) console.log("密封压力:",obj.pressureNumber) */ //setp 5 //泄压 //打开人孔盖泄气阀门 ModbusJs.manHoleCover_ReleaseIO1(controlSerial,true) console.log("打开人孔盖泄气阀门1") console.log("等待压力 0kPa") processWindow.show("试验结束,泄压中") timeout = 0 end_count = 0 do{ if(running === false){ console.log("停止测试") return false } obj = ModbusJs.mhPressureSensorReadReq(sensorSerial) if(obj.ret === false){ log.show("压力传感器通讯错误") //airIn_close() return false } // signal 压力显示函数 pressureDisplaySigFun(obj.pressureNumber) if(obj.pressureNumber < 12.0){ //微弱压力由气缸上升释放 ModbusJs.manholecylinderCtrl(controlSerial, false) console.log("人孔盖气缸升") } //延时 spy.wait(900) timeout++ if(obj.pressureNumber < threshold_Setzero){ end_count++ } }while(end_count < delaycount_Setzero && timeout < releasePressureTimeOut ) if(timeout === releasePressureTimeOut) log.show("泄压时间3分钟超时") //setp 6 console.log("压力 0kPa") ModbusJs.closeAllValve(controlSerial) console.log("关闭所有阀门") return true }