123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652 |
- import QtQuick 2.11
- import QtQuick.Controls 1.4
- import "modbus.js" as ModbusJs
- import "sealSelfTest.js" as SealSelfTestJs
- Item {
- Loader{
- id:loader
- anchors.fill: parent
- anchors.margins: 5
- }
- function show(){
- if(loader.sourceComponent === null){
- loader.sourceComponent = componet
- }
- loader.item.show()
- }
- function exit(){
- if(loader.sourceComponent !== null){
- loader.item.exit()
- }
- }
- Component{
- id:componet
- GroupBox{
- id:groupbox
- x:width
- title: "密封自检"
- property bool running:startStopButton.running
- property int pressureCnt:0
- property var dataArray: []
- signal pressureDisplaySigFun(var pressureNumber)
- onPressureDisplaySigFun: {
- pressureDisplayInput(pressureNumber)
- }
- function pressureDisplayInput(number){
- //console.log("pressureDisplayInput")
- pressureCnt++
- if(pressureCnt <= 61){
- dataArray.push(number)
- curveDisplay.spline.append(pressureCnt-1,number)
- }
- else{
- dataArray.push(number)
- dataArray.shift()
- curveDisplay.spline.clear()
- for(var i=0; i<61; i++){
- curveDisplay.spline.append(i,dataArray[i])
- }
- }
- gauge.value = number
- }
- onRunningChanged: {
- SealSelfTestJs.running =running
- if(running === true)
- startTimer.restart()
- else{
- sealSelfTestPstep.running =false
- sealSelfTestNstep.running =false
- choosevalve.menuEnable = true
- }
- }
- Timer{
- id:startTimer
- repeat: false
- interval: 500
- onTriggered: {
- choosevalve.menuEnable = false
- console.log("正在自检....")
- var ret = ModbusJs.checkModebusDevice(controlSerial,sensorSerial,log)
- if(ret === false){
- log.show("通讯自检错误")
- startStopButton.running = false
- return
- }
- else{
- if(testTypeComboBox.currentText === "高压密封测试"){
- console.log(testTypeComboBox.currentText)
- sealSelfTestPstep.running =true
- }
- else{
- console.log(testTypeComboBox.currentText)
- sealSelfTestNstep.running =true
- }
- }
- }
- }
- function recordPressure(sensorType){
- // ModbusJs.pressureSensorCtrl(controlSerial,sensorType)
- // console.log("打开"+sensorType+"传感器阀门")
- var tab = tabview.getTab(0)
- var modelData = tab.item.modelData
- modelData.clear()
- SealSelfTestJs.next = false
- //读取压力值
- var ret = SealSelfTestJs.displayPressure(sensorType,modelData,pressureDisplaySigFun,spy,log)
- return ret
- }
- function pabort(){
- console.log("pabort")
- SealSelfTestJs.next = false
- sealSelfTestPstep.abort()
- SealSelfTestJs.running = true
- SealSelfTestJs.positiveDecompression(controlSerial,sensorSerial,pressureDisplaySigFun,spy,log)
- startStopButton.running = false
- sealSelfTestPstep.running = false
- sealSelfTestPstep.reset()
- ModbusJs.closeAllValve(controlSerial)
- }
- function nabort(){
- console.log("nabort")
- SealSelfTestJs.next = false
- sealSelfTestNstep.abort()
- SealSelfTestJs.running = true
- SealSelfTestJs.negativeDecompression(controlSerial,sensorSerial,pressureDisplaySigFun,spy,log)
- startStopButton.running = false
- sealSelfTestNstep.running = false
- sealSelfTestNstep.reset()
- ModbusJs.closeAllValve(controlSerial)
- }
- Connections{
- target: sealSelfTestNstep
- onUserNext:{
- SealSelfTestJs.next = true
- }
- onUserStepClick:{
- switch (text){
- case "负压罐泄压至0kPa":
- console.log(text)
- //下一步
- SealSelfTestJs.next = false
- var ret = SealSelfTestJs.negativeDecompression(controlSerial,sensorSerial,pressureDisplaySigFun,spy,log)
- if(ret === false){
- groupbox.nabort()
- }
- else{
- ModbusJs.closeAllValve(controlSerial)
- }
- break
- case "真空阀负压阀到负压表管路,进气-30kPa":
- console.log(text)
- //下一步
- SealSelfTestJs.next = false
- //负压吸气
- ret = SealSelfTestJs.setNegativePressure(-30,controlSerial,sensorSerial,pressureDisplaySigFun,spy,log)
- if(ret === true){
- // ModbusJs.negativePressureTankInputCtrl(controlSerial,false)
- // console.log("关闭负压罐进气阀门")
- // ModbusJs.pressureSensorCtrl(controlSerial,"关闭")
- // console.log("关闭传感器阀门")
- ModbusJs.vacuoValveTestIO(controlSerial,false)
- console.log("关闭真空阀检测口 负压传感器接在检测口后面")
- console.log("检测真空阀负压阀到负压表管路是否漏气")
- //记录压力
- ret = groupbox.recordPressure("负压")
- if(ret === false){
- //进入测试退出 泄压步骤
- groupbox.nabort()
- }
- }
- else{//进入测试退出 泄压步骤
- groupbox.nabort()
- }
- break
- case "负压罐体密封测试":
- console.log(text)
- ModbusJs.vacuoValveTestIO(controlSerial,true)
- console.log("打开真空阀检测口,负压传感器接在检测口后面")
- SealSelfTestJs.next = false
- ModbusJs.pressureSensorCtrl(controlSerial,"负压")
- console.log("打开负压传感器阀门")
- ret = groupbox.recordPressure("负压")
- if(ret === false){
- //进入测试退出 泄压步骤
- groupbox.nabort()
- }
- break
- case "负压呼吸阀测试口密封测试":
- console.log(text)
- SealSelfTestJs.next = false
- //ModbusJs.turnOffAllTestIO(controlSerial)
- ModbusJs.vacuoValveTestIO(controlSerial,true)
- console.log("打开真空阀检测口,负压传感器接在检测口后面")
- ModbusJs.nbreathValveTestIo(controlSerial,true)
- console.log("打开负压呼吸阀测试口")
- //打开负压阀门
- ModbusJs.pressureSensorCtrl(controlSerial,"负压")
- console.log("打开负压传感器阀门")
- var tab = tabview.getTab(0)
- var modelData = tab.item.modelData
- modelData.clear()
- ret = SealSelfTestJs.displayPressure("负压",modelData,pressureDisplaySigFun,spy,log)
- if(ret === false){
- //进入测试退出 泄压步骤
- groupbox.nabort()
- }
- break
- // case "真空阀测试口管路":
- // console.log(text)
- // SealSelfTestJs.next = false
- // ModbusJs.turnOffAllTestIO(controlSerial)
- // ModbusJs.vacuoValveTestIO(controlSerial,true)
- // ModbusJs.pressureSensorCtrl(controlSerial,"负压")
- // console.log("打开负压传感器阀门")
- // tab = tabview.getTab(0)
- // modelData = tab.item.modelData
- // modelData.clear()
- // ret = SealSelfTestJs.displayPressure("负压",modelData,pressureDisplaySigFun,spy,log)
- // if(ret === false){
- // //进入测试退出 泄压步骤
- // groupbox.nabort()
- // }
- // break
- case "密封自检结束,请泄压":
- console.log(text)
- SealSelfTestJs.next = false
- SealSelfTestJs.negativeDecompression(controlSerial,sensorSerial,pressureDisplaySigFun,spy,log)
- ModbusJs.closeAllValve(controlSerial)
- startStopButton.running = false
- break;
- }
- }
- }
- Connections{
- target: sealSelfTestPstep
- onUserNext:{
- SealSelfTestJs.next = true
- }
- onUserStepClick:{
- switch (text){
- case "正压罐泄压至0kPa":
- console.log(text)
- SealSelfTestJs.next = false
- var ret = SealSelfTestJs.positiveDecompression(controlSerial,sensorSerial,pressureDisplaySigFun,spy,log)
- if(ret === false){
- groupbox.pabort()
- }
- else{
- ModbusJs.closeAllValve(controlSerial)
- }
- break
- case "低压阀到低压表管路,进气50kPa":
- console.log(text)
- SealSelfTestJs.next = false
- ret = SealSelfTestJs.setPositivePressure("低压",50,controlSerial,sensorSerial,pressureDisplaySigFun,spy,log)
- if(ret === true){
- ModbusJs.positivePressureTankInputCtrl(controlSerial,false)
- console.log("关闭正压罐进气阀门")
- ModbusJs.proportionalControlWrite(controlSerial,0)
- console.log("关闭调节阀")
- ModbusJs.pressureSensorCtrl(controlSerial,"关闭")
- console.log("关闭传感器阀门")
- ret = groupbox.recordPressure("低压")
- if(ret === false){
- //进入测试退出 泄压步骤
- groupbox.pabort()
- }
- }
- else{//进入测试退出 泄压步骤
- groupbox.pabort()
- }
- break
- case "高压阀到高压表管路,进气100kPa":
- console.log(text)
- SealSelfTestJs.next = false
- ret = SealSelfTestJs.setPositivePressure("高压",100,controlSerial,sensorSerial,pressureDisplaySigFun,spy,log)
- if(ret === true){
- ModbusJs.positivePressureTankInputCtrl(controlSerial,false)
- console.log("关闭正压罐进气阀门")
- ModbusJs.proportionalControlWrite(controlSerial,0)
- console.log("关闭调节阀")
- ModbusJs.pressureSensorCtrl(controlSerial,"关闭")
- console.log("关闭传感器阀门")
- ret = groupbox.recordPressure("高压")
- if(ret === false){
- //进入测试退出 泄压步骤
- groupbox.pabort()
- }
- }
- else{//进入测试退出 泄压步骤
- groupbox.pabort()
- }
- break
- case "正压罐体密封测试":
- console.log(text)
- SealSelfTestJs.next = false
- ModbusJs.pressureSensorCtrl(controlSerial,"高压")
- console.log("打开高压传感器阀门")
- ret = groupbox.recordPressure("高压")
- if(ret === false){
- //进入测试退出 泄压步骤
- groupbox.pabort()
- }
- break
- case "安全阀测试口管路":
- console.log(text)
- SealSelfTestJs.next = false
- ModbusJs.turnOffAllTestIO(controlSerial)
- ModbusJs.safeValveTestIo(controlSerial,true)
- ModbusJs.pressureSensorCtrl(controlSerial,"高压")
- console.log("打开高压传感器阀门")
- var tab = tabview.getTab(0)
- var modelData = tab.item.modelData
- modelData.clear()
- ret = SealSelfTestJs.displayPressure("高压",modelData,pressureDisplaySigFun,spy,log)
- if(ret === false){
- //进入测试退出 泄压步骤
- groupbox.pabort()
- }
- break;
- case "泄压至20kPa左右":
- console.log(text)
- SealSelfTestJs.next = false
- ModbusJs.turnOffAllTestIO(controlSerial)
- SealSelfTestJs.positiveDecompression20kPA(controlSerial,sensorSerial,pressureDisplaySigFun,spy,log)
- if(ret === false){
- //进入测试退出 泄压步骤
- groupbox.pabort()
- }
- break;
- case "呼吸阀测试口管路":
- console.log(text)
- SealSelfTestJs.next = false
- ModbusJs.turnOffAllTestIO(controlSerial)
- ModbusJs.pbreathValveTestIo(controlSerial,true)
- ModbusJs.pressureSensorCtrl(controlSerial,"高压")
- console.log("打开高压传感器阀门")
- tab = tabview.getTab(0)
- modelData = tab.item.modelData
- modelData.clear()
- SealSelfTestJs.next = false
- ret = SealSelfTestJs.displayPressure("高压",modelData,pressureDisplaySigFun,spy,log)
- if(ret === false){
- //进入测试退出 泄压步骤
- groupbox.pabort()
- }
- break;
- case "人孔盖测试口管路":
- console.log(text)
- SealSelfTestJs.next = false
- ModbusJs.turnOffAllTestIO(controlSerial)
- ModbusJs.peopleCoverHoleValveTestIO(controlSerial,true)
- ModbusJs.pressureSensorCtrl(controlSerial,"高压")
- console.log("打开高压传感器阀门")
- tab = tabview.getTab(0)
- modelData = tab.item.modelData
- modelData.clear()
- SealSelfTestJs.next = false
- ret = SealSelfTestJs.displayPressure("高压",modelData,pressureDisplaySigFun,spy,log)
- if(ret === false){
- //进入测试退出 泄压步骤
- groupbox.pabort()
- }
- break;
- case "罐体测试口管路":
- console.log(text)
- SealSelfTestJs.next = false
- ModbusJs.turnOffAllTestIO(controlSerial)
- ModbusJs.tankValveTestIO(controlSerial,true)
- ModbusJs.pressureSensorCtrl(controlSerial,"高压")
- console.log("打开高压传感器阀门")
- tab = tabview.getTab(0)
- modelData = tab.item.modelData
- modelData.clear()
- SealSelfTestJs.next = false
- ret = SealSelfTestJs.displayPressure("高压",modelData,pressureDisplaySigFun,spy,log)
- if(ret === false){
- //进入测试退出 泄压步骤
- groupbox.pabort()
- }
- break;
- case "密封自检结束,请泄压":
- console.log(text)
- SealSelfTestJs.next = false
- SealSelfTestJs.positiveDecompression(controlSerial,sensorSerial,pressureDisplaySigFun,spy,log)
- ModbusJs.closeAllValve(controlSerial)
- startStopButton.running = false
- break;
- }
- }
- }
- function show(){
- animationShow.running = true
- }
- function exit(){
- animationExit.running = true
- }
- //加载任务动画效果
- NumberAnimation {
- id: animationShow
- target: groupbox
- property: "x"
- from: groupbox.x
- to: 0
- duration: 500
- }
- NumberAnimation {
- id: animationExit
- target: groupbox
- property: "x"
- from: groupbox.x
- to: 1024
- duration: 500
- }
- Column{
- anchors.left: parent.left
- anchors.leftMargin: 2
- anchors.top: parent.top
- anchors.topMargin: 0
- spacing: 0
- //参数
- // Rectangle{
- // width: 980
- // height: 60
- // color: "white"
- // radius: 6
- // Row{
- // x:50
- // anchors.verticalCenter: parent.verticalCenter
- // spacing: 100
- // UserComboBox{
- // id:testTypeComboBox
- // anchors.verticalCenter: parent.verticalCenter
- // width: 177
- // height:30
- // bgColor:"#D2D5D9"
- // enabled: !groupbox.running
- // model: ["正压罐密封测试","负压罐密封测试"]
- // onCurrentTextChanged: {
- // if(currentText === "正压罐密封测试"){
- // sealSelfTestPstep.visible = true
- // //sealSelfTestNstep.visible = false
- // }
- // else if(currentText === "负压罐密封测试"){
- // sealSelfTestPstep.visible = false
- // //sealSelfTestNstep.visible = true
- // }
- // }
- // }
- // StartStopButton{
- // id:startStopButton
- // width: 45
- // height: 45
- // anchors.verticalCenter: parent.verticalCenter
- // }
- // }
- // }
- //曲线 仪表 结果
- Row{
- x:-10
- // y:-10
- //曲线
- CurveDisplay{
- id:curveDisplay
- anchors.verticalCenter: parent.verticalCenter
- width: 450
- height: 300
- axisxMax:60
- axisxMin:0
- axisyMax:500
- axisyMin:-50
- name:"横轴时间(秒) 纵轴压力(kPa)"
- }
- //仪表
- Rectangle{
- width: (300-18)*0.75
- height: 300-18
- color: "white"
- radius: 6
- anchors.verticalCenter: parent.verticalCenter
- Gauge {
- id:gauge
- width: parent.width
- height: parent.width
- anchors.centerIn: parent
- value: 0
- maximumValue: 500
- minimumValue: -100
- tickmarkStepSize:100
- labelStepSize:100
- Behavior on value { NumberAnimation { duration: 1000 }}
- }
- }
- //试验结果
- Item {
- width: 338
- height: 300
- anchors.verticalCenter: parent.verticalCenter
- Rectangle{
- id:resultWindow
- anchors.fill: parent
- anchors.margins: 10
- color: "white"
- radius: 6
- SealSelfTestPstep{
- id:sealSelfTestPstep
- }
- SealSelfTestNstep{
- id:sealSelfTestNstep
- }
- Row{
- z:sealSelfTestPstep.z+10
- anchors.left: resultWindow.left
- anchors.leftMargin: 50
- anchors.top: resultWindow.top
- anchors.topMargin: 5
- //anchors.horizontalCenter: parent.horizontalCenter
- //anchors.verticalCenter: parent.verticalCenter
- spacing: 50
- UserComboBox{
- id:testTypeComboBox
- anchors.verticalCenter: parent.verticalCenter
- width: 150
- height:30
- bgColor:"#D2D5D9"
- enabled: !groupbox.running
- model: ["高压密封测试","低压密封测试"]
- onCurrentTextChanged: {
- if(currentText === "高压密封测试"){
- sealSelfTestPstep.visible = true
- sealSelfTestNstep.visible = false
- }
- else if(currentText === "低压密封测试"){
- sealSelfTestPstep.visible = false
- sealSelfTestNstep.visible = true
- }
- }
- }
- StartStopButton{
- id:startStopButton
- width: 45
- height: 45
- anchors.verticalCenter: parent.verticalCenter
- }
- }
- }
- }
- }
- //记录
- Row{
- id:record
- spacing: 10
- property int tableWidth:980
- function dataRandomSet(modelData,max){
- for(var i=0;i<max; i++){
- var number= Math.round(Math.random()*100)
- number *= 10
- var obj={}
- obj.pressure=number
- modelData.append(obj)
- }
- }
- TabView {
- id:tabview
- width: record.tableWidth
- height: 265+10+60
- GraphButton{
- id:graphButton
- x:910
- y:-25
- width: 48
- height: 24
- onUserClicked: {
- var tab = tabview.getTab(tabview.currentIndex)
- var axisxMax = tab.item.modelData.count
- generateCurve.show(0,axisxMax,0,50,tab.item.modelData,tab.title,"横轴时间(秒) 纵轴压力(kPa)")
- }
- }
- Tab {
- title: "压力记录"
- active: true
- RecordTable{
- }
- }
- }
- }
- }
- }
- }
- }
|