123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793 |
- .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
- }
|