123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637 |
- .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<openPressureTimeMax){
- openPressureNumber = pressure_beforeopen.toString()
- var result={}
- result.openPressureNumber = openPressureNumber
- result.sealPressureNumber = ""
- resultSigFun(result)
- console.log("整定压力:",openPressureNumber)
- }
- else{
- if(Number(obj.pressureNumber) < min){
- openPressureNumber=obj.pressureNumber+"<"+min+"kPa"
- }
- else if(Number(obj.pressureNumber) > 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
- //}
|