.import "modbus.js" as ModbusJs //试验运行标志 var running = false var runningBackup = false //开启压力测试计时时间 var openPressureTimeMax = 120 //密封压力测试计时时间 var sealPressureTimemax = 60 //安全阀默认整定压力 var setPressure = 100 //次参数不用 var exit = false //罐体压力检查 用于液压升降时 压力检查 function valvePressureCheckStop(controlSerial,processWindow,pressureDisplaySigFun,spy,log) { ModbusJs.pressureSensorCtrl(controlSerial,"高压") console.log("打开高压传感器阀门") //打开正压罐头泄气阀门 var loseFlag = true ModbusJs.bigTuningValveControl(controlSerial,false) ModbusJs.bigTuningValveControl(controlSerial,false) //关闭正压罐进气阀门 ModbusJs.positivePressureTankInputCtrl(controlSerial,false) console.log("关闭正压罐进气阀门") //查看高压传感器值 等待正压罐头压力降到最低值 do{ if(runningBackup === false && running === true){ console.log("停止检查") ModbusJs.closeAllValve(controlSerial) return false } var obj = ModbusJs.highPressureSensorReadReq(sensorSerial) if(obj.ret === false){ log.show("高传感器通讯错误") return false } // signal 压力显示函数 pressureDisplaySigFun(obj.pressureNumber) if(obj.pressureNumber > 0.1 && loseFlag === true ){ loseFlag = false ModbusJs.positivePressureTankOutputCtrl(controlSerial,true) console.log("打开正压罐头泄气阀门") processWindow.text("检查压力,泄气中") } else if(obj.pressureNumber > 0.1){ //延时 spy.wait(900) } }while(obj.pressureNumber > 0.1 ) // ModbusJs.closeAllValve(controlSerial) ModbusJs.positivePressureTankOutputCtrl(controlSerial,false) console.log("关闭正压罐头泄气阀门") ModbusJs.pressureSensorCtrl(controlSerial,"关闭") console.log("关闭正压仪表阀门") return true } //试验异常中止退出 泄压操作 /* controlSerial 控制串口对象 * pressureDisplaySigFun 压力显示信号函数(回调函数) * resultSigFun 结果显示信号函数(回调函数) * spy 仅用于延时的对象 * log 异常显示对象 */ function valveStop(controlSerial,pressureDisplaySigFun,spy,log){ //打开正压罐头泄气阀门 var loseFlag = true ModbusJs.bigTuningValveControl(controlSerial,false) ModbusJs.bigTuningValveControl(controlSerial,false) //关闭正压罐进气阀门 ModbusJs.positivePressureTankInputCtrl(controlSerial,false) console.log("关闭正压罐进气阀门") //查看高压传感器值 等待正压罐头压力降到最低值 do{ if(runningBackup === false && running === true){ console.log("停止测试") ModbusJs.closeAllValve(controlSerial) return } if(exit === true) return var obj = ModbusJs.highPressureSensorReadReq(sensorSerial) if(obj.ret === false){ log.show("高传感器通讯错误") return false } // signal 压力显示函数 pressureDisplaySigFun(obj.pressureNumber) //延时 spy.wait(900) if(obj.pressureNumber > 0.1 && loseFlag === true ){ loseFlag = false ModbusJs.positivePressureTankOutputCtrl(controlSerial,true) console.log("打开正压罐头泄气阀门") } }while(obj.pressureNumber > 0.1 ) // ModbusJs.closeAllValve(controlSerial) ModbusJs.closeSingalValve(controlSerial) console.log("关闭 关闭所有阀门") } //正压开启压力和密封试验 /* currentIndex 当前第几次试验 * controlSerial 控制串口对象 * sensorSerial 压力传感器串口对象 * pressureDisplaySigFun 压力显示信号函数(回调函数) * resultSigFun 结果显示信号函数(回调函数) * spy 仅用于延时的对象 * log 异常显示对象 * openPressureModel 测试整定压力记录压力的数据模型 * sealPressureModel 测试密封压力记录压力的数据模型 */ function valveStart(currentIndex,tabView,processWindow,controlSerial,sensorSerial, openPressureModel,sealPressureModel, pressureDisplaySigFun,resultSigFun,spy,log) { runningBackup = running var openPressureNumber var sealPressureNumber var pressure_beforeopen = 0 // 关闭所有测试口 ModbusJs.turnOffAllTestIO(controlSerial) console.log("关闭所有测试口") ModbusJs.pressureSensorCtrl(controlSerial,"高压") console.log("打开高压传感器阀门") //关闭正压罐进气阀门 ModbusJs.positivePressureTankInputCtrl(controlSerial,false) console.log("关闭正压罐进气阀门") //查看高压传感器值 等待压力罐压力为0 var checkPressure = true do{ if(running === false){ console.log("停止测试") return false } var obj = ModbusJs.highPressureSensorReadReq(sensorSerial) if(obj.ret === false){ log.show("高压传感器通讯错误") return false } if(checkPressure === true){ checkPressure = false processWindow.show("等待压力降到0") //打开正压罐头泄气阀门 ModbusJs.positivePressureTankOutputCtrl(controlSerial,true) console.log("打开正压罐头泄气阀门") } // signal 压力显示函数 pressureDisplaySigFun(obj.pressureNumber) //延时 spy.wait(900) }while(Number(obj.pressureNumber) > 0.1 ) console.log("压力降压到 0 kPa") obj = ModbusJs.testFixedPressure(controlSerial,setPressure+30) if(obj.ret === true){ ModbusJs.proportionalControlWrite(controlSerial,obj.voltage) console.log("比例调压阀压力值:",obj.voltage) } /*********测试整定压力*************/ //打开正压安全阀测试口阀门 ModbusJs.safeValveTestIo(controlSerial,true) console.log("打开安全阀测试口阀门") //关闭正压罐头泄气阀门 ModbusJs.positivePressureTankOutputCtrl(controlSerial,false) console.log("关闭正压罐头泄气阀门") //打开进气阀门 ModbusJs.positivePressureTankInputCtrl(controlSerial,true) console.log("打开进气阀门") tabView.currentIndex = currentIndex ////切换当前tab页面 var min = 0 var max = setPressure*1.5 //高压最大范围 //if(max > 450) // max = 450 // console.log("setPressure:",setPressure) // console.log("min:",min) // console.log("max:",max) var prevTime = Date.now() var openCnt = 0 var bigAcive = true ModbusJs.bigTuningValveControl(controlSerial,true) console.log("打开 粗调开关") /********粗调压力*************/ processWindow.show("调整压力中") var bitCnt = 0 do{ if(running === false){ console.log("停止测试") return false } obj = ModbusJs.highPressureSensorReadReq(sensorSerial) if(obj.ret === false){ log.show("高压传感器通讯错误") return false } spy.wait(10) var curTime = Date.now() var deltaTime = curTime - prevTime if(deltaTime > 900){ prevTime = curTime pressureDisplaySigFun(obj.pressureNumber) bitCnt++ } //粗调压力值 //控制逻辑改动 先这样修改 var bigLevel = setPressure*0.8 if(Number(obj.pressureNumber) > bigLevel && bigAcive === true){ bigAcive = false ModbusJs.bigTuningValveControl(controlSerial,false) ModbusJs.bigTuningValveControl(controlSerial,false) console.log("关闭 粗调开关") //打开正压安全阀测试口阀门 //ModbusJs.safeValveTestIo(controlSerial,true) //console.log("打开安全阀测试口阀门") break } }while(Number(obj.pressureNumber) < max && bitCnt < 120) if(bitCnt === 120){ processWindow.show("调整压力失败") return false } processWindow.show("整定试验开始") pressure_beforeopen=Number(obj.pressureNumber) do{ if(running === false){ console.log("停止测试") return false } spy.wait(900) obj = ModbusJs.highPressureSensorReadReq(sensorSerial) if(obj.ret === false){ log.show("高压传感器通讯错误") return false } pressureDisplaySigFun(obj.pressureNumber) // add pressure table var table={} table.pressure=obj.pressureNumber //开启压力模型赋值 openPressureModel.append(table) if(Number(obj.pressureNumber) >= pressure_beforeopen ){ pressure_beforeopen=Number(obj.pressureNumber) }else{ break } openCnt++ processWindow.text("整定压力试验时间"+(openPressureTimeMax-openCnt)+"s") }while(Number(obj.pressureNumber) <=max && openCnt < openPressureTimeMax) if(Number(obj.pressureNumber) <= max && openCnt max){ openPressureNumber=obj.pressureNumber+">"+max+"kPa" } result={} result.openPressureNumber = openPressureNumber result.sealPressureNumber = "" resultSigFun(result) //关闭正压罐进气阀门 ModbusJs.positivePressureTankInputCtrl(controlSerial,false) console.log("关闭正压罐进气阀门") console.log("整定压力:",openPressureNumber) processWindow.text("整定压力试验超时") return false } console.log("整定压力测试结束") //console.log("当前压力:",obj.pressureNumber.toString()) //console.log("前一次压力:",pressure_beforeopen) /*判断整定压力是否合格*/ if(setPressure <= 500 ){ if(Math.abs(setPressure-pressure_beforeopen) > 15){ console.log("整定压力不合格") processWindow.show("整定压力不合格, 试验结束") return false } }else{ if(Math.abs(setPressure-pressure_beforeopen)>setPressure*0.3) { console.log("整定压力不合格") processWindow.show("整定压力不合格, 试验结束") return false } } /*********测试密封压力*************/ console.log("密封压力开始") processWindow.show("密封压力试验开始") //关闭正压罐进气阀门 ModbusJs.positivePressureTankInputCtrl(controlSerial,false) console.log("关闭正压罐进气阀门") //先泄压到整定压力的50% //打开正压罐头泄气阀门 ModbusJs.positivePressureTankOutputCtrl(controlSerial,true) console.log("打开正压罐头泄气阀门,等待压力值达到整定压力值的 50%") //查看低压传感器值 等待正压罐头压力降到最低值 processWindow.show("泄气中,即将开启密封测试") var use_pressure = pressure_beforeopen var _target=0; if(use_pressure < 300){ _target= use_pressure-50 }else{ _target= use_pressure*0.9-20 } do{ if(running === false){ console.log("停止测试") return } obj = ModbusJs.highPressureSensorReadReq(sensorSerial) if(obj.ret === false){ log.show("高压传感器通讯错误") return false } // signal 压力显示函数 pressureDisplaySigFun(obj.pressureNumber) //延时 spy.wait(450) }while(Number(obj.pressureNumber) > _target) //关闭正压罐头泄气阀门 ModbusJs.positivePressureTankOutputCtrl(controlSerial,false) spy.wait(3000) //缓慢加压开始 var seal_target = 0 if(use_pressure <= 300){ seal_target = use_pressure-30 }else{ seal_target = use_pressure*0.9 } processWindow.text("加压到:"+(seal_target)+"kPa") //打开正压罐头进气阀门 ModbusJs.positivePressureTankInputCtrl(controlSerial,true) do{ if(running === false){ console.log("停止测试") return } obj = ModbusJs.highPressureSensorReadReq(sensorSerial) if(obj.ret === false){ log.show("高压传感器通讯错误") return false } // signal 压力显示函数 pressureDisplaySigFun(obj.pressureNumber) //延时 spy.wait(900) }while(Number(obj.pressureNumber) <= seal_target) //关闭正压罐进气阀门 ModbusJs.positivePressureTankInputCtrl(controlSerial,false) console.log("关闭正压罐进气阀门") var holdTimeCnt=0 tabView.currentIndex = currentIndex+3 //切换当前tab页面 var pressure_afterclose = Number(obj.pressureNumber) var equal_count = 0 do{ if(running === false){ console.log("停止测试") return false } spy.wait(900) obj = ModbusJs.highPressureSensorReadReq(sensorSerial) if(obj.ret === false){ log.show("高压传感器通讯错误") return false } //密封压力模型赋值 table={} table.pressure=obj.pressureNumber sealPressureModel.append(table) //压力实时显示 pressureDisplaySigFun(obj.pressureNumber) if(Math.abs(Number(obj.pressureNumber)-pressure_afterclose) < 0.1){ equal_count++ if(equal_count >= 10) break; }else{ equal_count=0 } pressure_afterclose = obj.pressureNumber holdTimeCnt++ processWindow.text("密封压力试验时间"+(sealPressureTimemax-holdTimeCnt)+"s") }while(holdTimeCnt < sealPressureTimemax ) sealPressureNumber = obj.pressureNumber+"" result={} result.openPressureNumber = openPressureNumber result.sealPressureNumber = sealPressureNumber resultSigFun(result) console.log("密封压力结束") //打开正压罐头泄气阀门 ModbusJs.positivePressureTankOutputCtrl(controlSerial,true) console.log("打开正压罐头泄气阀门") console.log("等待压力 0kPa") //查看低压传感器值 等待正压罐头压力降到最低值 processWindow.show("试验结束,泄气中") do{ if(running === false){ console.log("停止测试") return } obj = ModbusJs.highPressureSensorReadReq(sensorSerial) if(obj.ret === false){ log.show("高压传感器通讯错误") return false } // signal 压力显示函数 pressureDisplaySigFun(obj.pressureNumber) //延时 spy.wait(900) }while(Number(obj.pressureNumber) > 0.1 ) //关闭正压罐头泄气阀门 console.log("压力 0kPa") //ModbusJs.closeAllValve(controlSerial) ModbusJs.closeSingalValve(controlSerial) console.log("关闭所有阀门") return true } ////调用之前 先自检 ///* openPressureModel 测试开启压力过程表模型 // * sealPressureModel 测试密封压力过程表模型 // * pressureDisplaySigFun 压力显示信号函数 // * resultSigFun 结果显示信号函数 // */ //function testStart(controlSerial,sensorSerial,openPressureModel,sealPressureModel,pressureDisplaySigFun,resultSigFun,spy,log,fixedPressure){ // var openPressureNumber // var sealPressureNumber // // 关闭所有测试口 // ModbusJs.turnOffAllTestIO(controlSerial) // //打开 高压传感器阀门 // ModbusJs.highPressureSensorCtrl(controlSerial,true ) // //关闭 低压传感器阀门 // ModbusJs.lowPressureSensorCtrl(controlSerial,false) // //关闭正压罐进气阀门 // ModbusJs.positivePressureTankInputCtrl(controlSerial,false) // //打开正压罐头泄气阀门 // ModbusJs.positivePressureTankOutputCtrl(controlSerial,true) // //查看传感器值 等待正压罐头压力降到最低值 // do{ // var obj = ModbusJs.highPressureSensorReadReq(sensorSerial) // if(obj.ret === false){ // log.show("低压传感器通讯错误") // return false // } // //压力显示函数 // pressureDisplaySigFun(obj.pressureNumber) // //延时 // spy.wait(950) // }while(obj.pressureNumber > 2 ) // /*********测试整定压力*************/ // //打开安全阀测试口 // ModbusJs.safeValveTestIo(controlSerial,true) // //关闭正压罐头泄气阀门 // ModbusJs.positivePressureTankOutputCtrl(controlSerial,false) // //打开进气阀门 // ModbusJs.positivePressureTankInputCtrl(controlSerial,true) // //等待20s 根据介质需求(开启范围在±0.015MPa内) // var openCnt = 0 // var min = fixedPressure-15 // var max = fixedPressure+15 // var timeout = 20 // do{ // obj = ModbusJs.highPressureSensorReadReq(sensorSerial) // if(obj.ret === false){ // log.show("高压传感器通讯错误") // return false // } // //压力显示 // pressureDisplaySigFun(obj.pressureNumber) // // add pressure table // var table={} // table.pressure=obj.pressureNumber // //整定压力测试表模型赋值 // openPressureModel.append(table) // spy.wait(950) // openCnt++ // }while(obj.pressureNumber >=min && obj.pressureNumber <=max && openCnt < timeout) // openPressureNumber = obj.pressureNumber.toString() // //根据介质需求(开启范围在±0.015MPa内) 得到整定压力测试值 // if(obj.pressureNumber >=min && obj.pressureNumber <= max && openCnt ===timeout){ // var result={} // result.openPressureNumber = openPressureNumber // result.sealPressureNumber = "" // //结果显示整定压力值 // resultSigFun(result) // } // else{ // if(obj.pressureNumber < min){ // openPressureNumber=obj.pressureNumber+"<"+min+"kPa" // } // else if(obj.pressureNumber > max){ // openPressureNumber=obj.pressureNumber+">"+max+"kPa" // } // result={} // result.openPressureNumber = openPressureNumber // result.sealPressureNumber = "" // //结果显示整定压力值 // resultSigFun(result) // log.show(openPressureNumber) // return false // } // /*********测试密封压力*************/ // //关闭安全阀测试口 // ModbusJs.safeValveTestIo(controlSerial,false) // //整定压力<0.3MPa时取(整定压力-0.03)MPa,整定压力≥0.3MPa时,取整定压力*0.9倍。 // if(fixedPressure < 300) // var targetPressure = fixedPressure - 30 // else // targetPressure = 0.9*fixedPressure // targetPressure = targetPressure.toFixed(0) //小数点 四舍五入 // //调节压力=targetPressure 具体步骤 现场确定 // var prevTime = Date.now() // do{ // obj = ModbusJs.highPressureSensorReadReq(sensorSerial) // if(obj.ret === false){ // log.show("高压传感器通讯错误") // return false // } // var curTime = Date.now() // var deltaTime = curTime - prevTime // if(deltaTime > 950){ // prevTime = curTime // pressureDisplaySigFun(obj.pressureNumber) // } // }while(obj.pressureNumber !== targetPressure ) // //得到targetPressure 压力值后 // //打开 安全阀测试口 // ModbusJs.safeValveTestIo(controlSerial,true) // var holdTimeCnt=0 // timeout = 600 // do{ // obj = ModbusJs.highPressureSensorReadReq(sensorSerial) // if(obj.ret === false){ // log.show("高压传感器通讯错误") // return false // } // //密封压力模型赋值 // table={} // table.pressure=obj.pressureNumber // sealPressureModel.append(table) // //压力实时显示 // pressureDisplaySigFun(obj.pressureNumber) // spy.wait(950) // holdTimeCnt++ // }while(holdTimeCnt < timeout ) // sealPressureNumber = obj.pressureNumber.toString() // result={} // result.openPressureNumber = openPressureNumber // result.sealPressureNumber = sealPressureNumber // resultSigFun(result) // return true //}