breatheTest.js 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964
  1. .import "modbus.js" as ModbusJs
  2. var running = false
  3. var runningBackup = false
  4. var openPressureTimeMax = 10
  5. var sealPressureTimemax = 15
  6. var exit = false
  7. var capsizeOpenPresure = 10
  8. var capsizeSetPressure = 32
  9. var pthreshold_Setzero = 0.2
  10. var nthreshold_Setzero = -0.2
  11. var delaycount_Setzero = 3
  12. var readPressureInterval = 200 // ms
  13. var maxPressureStableTime = 20
  14. var releasePressureTimeOut = 180
  15. function positiveTestStop(controlSerial,pressureDisplaySigFun,spy,log){
  16. ModbusJs.pressureSensorCtrl(controlSerial,"高压")
  17. console.log("打开高压传感器阀门")
  18. //关闭正压罐进气阀门
  19. ModbusJs.positivePressureTankInputCtrl(controlSerial,false)
  20. console.log("关闭正压罐进气阀门")
  21. //打开正压罐头泄气阀门
  22. ModbusJs.positivePressureTankOutputCtrl(controlSerial,true)
  23. console.log("打开正压罐头泄气阀门")
  24. //查看高压传感器值 等待正压罐头压力降到最低值
  25. var timeout = 0
  26. var end_count = 0
  27. do{
  28. //重新开始时 停止测试
  29. if(runningBackup === false && running === true){
  30. console.log("停止测试")
  31. ModbusJs.closeAllValve(controlSerial)
  32. return
  33. }
  34. if(exit === true)
  35. return
  36. var obj = ModbusJs.highPressureSensorReadReq(sensorSerial)
  37. if(obj.ret === false){
  38. log.show("高压传感器通讯错误")
  39. return false
  40. }
  41. // signal 压力显示函数
  42. pressureDisplaySigFun(obj.pressureNumber)
  43. //延时
  44. spy.wait(900)
  45. timeout++
  46. if(obj.pressureNumber <= pthreshold_Setzero){
  47. end_count++;
  48. //console.log("111: pressure:"+ obj.pressureNumber +", pthreshold_setzero:"+pthreshold_Setzero)
  49. }else{
  50. //console.log("222: pressure:"+ obj.pressureNumber +", pthreshold_setzero:"+pthreshold_Setzero)
  51. }
  52. }while(end_count < delaycount_Setzero && timeout < 180)
  53. ModbusJs.closeAllValve(controlSerial)
  54. console.log("关闭 关闭所有阀门")
  55. }
  56. function negativeTestStop(controlSerial,pressureDisplaySigFun,spy,log){
  57. //打开负压呼吸阀测试口阀门 逻辑有改变 从一开始就打开 不然无法泄压
  58. ModbusJs.nbreathValveTestIo(controlSerial,true)
  59. console.log("打开负压呼吸阀测试口阀门")
  60. //关闭负压罐进气阀门
  61. ModbusJs.negativePressureTankInputCtrl(controlSerial,false)
  62. console.log("关闭负压罐进气阀门")
  63. //关闭 负压泵
  64. ModbusJs.negativePumpPowerCtrl(controlSerial,false)
  65. console.log("关闭 负压泵")
  66. //打开负压罐头泄气阀门
  67. ModbusJs.negativePressureTankOutputCtrl(controlSerial,true)
  68. console.log("打开负压罐头泄气阀门")
  69. //查看负压传感器值 等待负压罐头压力降到最低值
  70. var timeout = 0
  71. var end_count =0
  72. do{
  73. //重新开始时 停止测试
  74. if(runningBackup === false && running === true){
  75. console.log("停止测试")
  76. ModbusJs.closeAllValve(controlSerial)
  77. return
  78. }
  79. if(exit === true)
  80. return
  81. //var obj = ModbusJs.negativePressureSensorReadReq(sensorSerial)
  82. var obj =ModbusJs.lowPressureSensorReadReq(sensorSerial)
  83. if(obj.ret === false){
  84. log.show("低压传感器通讯错误")
  85. return false
  86. }
  87. // signal 压力显示函数
  88. pressureDisplaySigFun(obj.pressureNumber)
  89. //延时
  90. spy.wait(900)
  91. timeout++
  92. if(obj.pressureNumber >= nthreshold_Setzero){
  93. end_count++;
  94. }
  95. }while(end_count < delaycount_Setzero && timeout < 180)
  96. ModbusJs.closeAllValve(controlSerial)
  97. console.log("关闭 关闭所有阀门")
  98. }
  99. //正压开启压力和密封试验
  100. /* openPressureModel 测试开启压力过程表模型
  101. * sealPressureModel 测试密封压力过程表模型
  102. * pressureDisplaySigFun 压力显示信号函数
  103. * resultSigFun 结果显示信号函数
  104. */
  105. function positiveTestStart(currentIndex,tabView,processWindow,controlSerial,sensorSerial,openPressureModel,sealPressureModel,pressureDisplaySigFun,resultSigFun,spy,log){
  106. var setPressure = 12
  107. //自检
  108. runningBackup = running
  109. var openPressureNumber
  110. var sealPressureNumber
  111. var ret = true
  112. var StablePressureCount = maxPressureStableTime*1000/readPressureInterval
  113. //setp 1
  114. // 关闭所有测试口
  115. ModbusJs.turnOffAllTestIO(controlSerial)
  116. console.log("关闭所有测试口")
  117. ModbusJs.pressureSensorCtrl(controlSerial,"低压")
  118. console.log("打开低压传感器阀门")
  119. //关闭正压罐进气阀门
  120. ModbusJs.positivePressureTankInputCtrl(controlSerial,false)
  121. console.log("关闭正压罐进气阀门")
  122. //setp 2
  123. //查看低压传感器值 等待正压罐头压力降到最低值
  124. processWindow.show("等待压力降到0")
  125. //打开正压罐头泄气阀门
  126. ModbusJs.positivePressureTankOutputCtrl(controlSerial,true)
  127. console.log("打开正压罐头泄气阀门")
  128. var timeout = 0
  129. var end_count = 0
  130. do{
  131. if(running === false){
  132. console.log("停止测试")
  133. return false
  134. }
  135. var obj = ModbusJs.lowPressureSensorReadReq(sensorSerial)
  136. if(obj.ret === false){
  137. log.show("低压传感器通讯错误")
  138. return false
  139. }
  140. // signal 压力显示函数
  141. pressureDisplaySigFun(obj.pressureNumber)
  142. //延时
  143. spy.wait(900)
  144. timeout++
  145. if(obj.pressureNumber <= pthreshold_Setzero){
  146. end_count++;
  147. }
  148. }while(end_count < delaycount_Setzero && timeout < 180)
  149. if(timeout === 180){
  150. log.show("泄压超时")
  151. ModbusJs.closeAllValve(controlSerial)
  152. console.log("关闭所有阀门")
  153. return false
  154. }
  155. console.log("压力降压到 0 kPa")
  156. //关闭正压罐头泄气阀门
  157. ModbusJs.positivePressureTankOutputCtrl(controlSerial,false)
  158. console.log("关闭正压罐头泄气阀门")
  159. //setp 3
  160. /*********测试开启压力*************/
  161. //ModbusJs.pressureSensorCtrl(controlSerial,"低压")
  162. //console.log("打开低压传感器阀门")
  163. //打开正压呼吸阀测试口阀门
  164. ModbusJs.pbreathValveTestIo(controlSerial,true)
  165. console.log("打开正压呼吸阀测试口阀门")
  166. //打开进气阀门
  167. ModbusJs.positivePressureTankInputCtrl(controlSerial,true)
  168. console.log("打开进气阀门")
  169. //var vobj = ModbusJs.testFixedPressure(controlSerial,setPressure)
  170. //ModbusJs.proportionalControlWrite(controlSerial,vobj.voltage)
  171. //console.log("比例调压阀压力值:",vobj.voltage)
  172. //var bigAcive = true
  173. //ModbusJs.bigTuningValveControl(controlSerial,true)
  174. //console.log("打开 粗调开关")
  175. processWindow.show("开启压力测试")
  176. console.log("开启压力测试开始")
  177. var pre_pressure = 0
  178. var delta = 0
  179. var keepCnt = 0
  180. //打开进气阀门
  181. ModbusJs.positivePressureTankInputCtrl(controlSerial,true)
  182. console.log("打开进气阀门")
  183. tabView.currentIndex = currentIndex
  184. var prevTime = Date.now()
  185. obj = ModbusJs.lowPressureSensorReadReq(sensorSerial)
  186. if(obj.ret === false){
  187. log.show("低压传感器通讯错误")
  188. return false
  189. }
  190. pre_pressure = obj.pressureNumber
  191. spy.wait(readPressureInterval)
  192. ret = true
  193. StablePressureCount = openPressureTimeMax*1000/readPressureInterval
  194. do{
  195. if(running === false){
  196. console.log("停止测试")
  197. return false
  198. }
  199. //obj = ModbusJs.lowPressureSensorReadReq(sensorSerial)
  200. obj = ModbusJs.lowPressureSensorReadReq(sensorSerial)
  201. if(obj.ret === false){
  202. log.show("低压传感器通讯错误")
  203. return false
  204. }
  205. //开启压力超出范围了
  206. if(obj.pressureNumber > setPressure){
  207. //ret = false
  208. log.show("当前压力大于 12kPa, 未开启")
  209. break
  210. }
  211. delta = obj.pressureNumber - pre_pressure
  212. pre_pressure = obj.pressureNumber
  213. //if(delta < 0){
  214. // console.log("delta = %f", delta)
  215. // break
  216. // //keepCnt++
  217. //}else
  218. if(delta < 0.01){
  219. keepCnt++
  220. }else{
  221. keepCnt=0
  222. }
  223. if(keepCnt > StablePressureCount){
  224. //console.log("keepCnt > StablePressureCount")
  225. break;
  226. }
  227. var curTime = Date.now()
  228. var deltaTime = curTime - prevTime
  229. if(deltaTime > 1000){
  230. prevTime = curTime
  231. pressureDisplaySigFun(obj.pressureNumber)
  232. // add pressure table
  233. var table={}
  234. table.pressure=obj.pressureNumber
  235. //开启压力模型赋值
  236. openPressureModel.append(table)
  237. // console.log("openPressureTimeMax:",openPressureTimeMax)
  238. //processWindow.text("开启压力试验时间"+(openPressureTimeMax-openCnt)+"s")
  239. }
  240. //延时
  241. spy.wait(readPressureInterval)
  242. }while(1)//(obj.pressureNumber <=max && openCnt < openPressureTimeMax)
  243. //通知数据
  244. pressureDisplaySigFun(obj.pressureNumber)
  245. // add pressure table
  246. table={}
  247. table.pressure=obj.pressureNumber
  248. //开启压力模型赋值
  249. openPressureModel.append(table)
  250. openPressureNumber = obj.pressureNumber
  251. var result={}
  252. result.openPressureNumber = obj.pressureNumber
  253. result.sealPressureNumber = ""
  254. resultSigFun(result)
  255. console.log("开启压力:",obj.pressureNumber)
  256. console.log("开启压力测试结束")
  257. //setp 4
  258. /*********测试密封压力*************/
  259. console.log("密封压力开始")
  260. processWindow.show("密封压力试验开始")
  261. //关闭正压罐进气阀门
  262. ModbusJs.positivePressureTankInputCtrl(controlSerial,false)
  263. console.log("关闭正压罐进气阀门")
  264. //保持600s
  265. //var holdTimeCnt=0
  266. keepCnt = 0
  267. tabView.currentIndex = currentIndex+3
  268. prevTime = Date.now()
  269. StablePressureCount = openPressureTimeMax*1000/readPressureInterval
  270. do{
  271. if(running === false){
  272. console.log("停止测试")
  273. return false
  274. }
  275. obj = ModbusJs.lowPressureSensorReadReq(sensorSerial)
  276. if(obj.ret === false){
  277. log.show("低压传感器通讯错误")
  278. return false
  279. }
  280. delta = pre_pressure - obj.pressureNumber
  281. pre_pressure = obj.pressureNumber
  282. if(obj.pressureNumber < 0.6){
  283. log.show("当前压力小于 0.6kPa, 疑似漏气")
  284. //ret = false
  285. break
  286. }
  287. if(delta <= 0.01){
  288. keepCnt++
  289. }else{
  290. keepCnt=0
  291. }
  292. if(keepCnt > StablePressureCount){
  293. break;
  294. }
  295. //压力数据通知
  296. curTime = Date.now()
  297. deltaTime = curTime - prevTime
  298. if(deltaTime > 1000){
  299. prevTime = curTime
  300. pressureDisplaySigFun(obj.pressureNumber)
  301. // add pressure table
  302. table={}
  303. table.pressure=obj.pressureNumber
  304. sealPressureModel.append(table)
  305. //processWindow.text("密封压力试验时间"+(sealPressureTimemax-holdTimeCnt)+"s")
  306. //processWindow.text("21kPa压力进气时间"+(sealPressureTimemax-sealCnt)+"s")
  307. }
  308. //延时
  309. spy.wait(readPressureInterval)
  310. }while(1)//(holdTimeCnt < sealPressureTimemax ) //传感器值是否能一直稳定住??????
  311. pressureDisplaySigFun(obj.pressureNumber)
  312. // add pressure table
  313. table={}
  314. table.pressure=obj.pressureNumber
  315. sealPressureModel.append(table)
  316. sealPressureNumber = obj.pressureNumber//.toString()
  317. result={}
  318. result.openPressureNumber = openPressureNumber
  319. result.sealPressureNumber = sealPressureNumber
  320. resultSigFun(result)
  321. console.log("密封压力:",obj.pressureNumber)
  322. console.log("密封压力结束")
  323. //setp 5
  324. //打开正压罐头泄气阀门
  325. ModbusJs.positivePressureTankOutputCtrl(controlSerial,true)
  326. console.log("打开正压罐头泄气阀门")
  327. console.log("等待压力 0kPa")
  328. //查看低压传感器值 等待正压罐头压力降到最低值
  329. processWindow.show("试验结束,泄气中")
  330. timeout = 0
  331. end_count = 0
  332. do{
  333. if(running === false){
  334. console.log("停止测试")
  335. return false
  336. }
  337. obj = ModbusJs.lowPressureSensorReadReq(sensorSerial)
  338. if(obj.ret === false){
  339. log.show("低压传感器通讯错误")
  340. return false
  341. }
  342. // signal 压力显示函数
  343. pressureDisplaySigFun(obj.pressureNumber)
  344. //延时
  345. spy.wait(900)
  346. timeout++
  347. if(obj.pressureNumber <= pthreshold_Setzero){
  348. end_count++;
  349. }
  350. }while(end_count < delaycount_Setzero && timeout < 180)
  351. //关闭正压罐头泄气阀门
  352. //setp 6
  353. console.log("压力 0kPa")
  354. ModbusJs.closeAllValve(controlSerial)
  355. console.log("关闭所有阀门")
  356. return true
  357. }
  358. //负压开启压力和密封试验
  359. /* openPressureModel 测试开启压力过程表模型
  360. * sealPressureModel 测试密封压力过程表模型
  361. * pressureDisplaySigFun 压力显示信号函数
  362. * resultSigFun 结果显示信号函数
  363. */
  364. function negativeTestStart(currentIndex,tabView,processWindow,controlSerial,sensorSerial,
  365. openPressureModel,sealPressureModel,
  366. pressureDisplaySigFun,resultSigFun,spy,log)
  367. {
  368. runningBackup = running
  369. //自检
  370. var openPressureNumber
  371. var sealPressureNumber
  372. var ret = true
  373. var StablePressureCount = maxPressureStableTime*1000/readPressureInterval
  374. //setp 1
  375. // 关闭所有测试口
  376. ModbusJs.negativePumpPowerCtrl(controlSerial,false)
  377. console.log("关闭 负压泵")
  378. ModbusJs.turnOffAllTestIO(controlSerial)
  379. console.log("关闭所有测试口")
  380. //打开负压呼吸阀测试口阀门
  381. ModbusJs.nbreathValveTestIo(controlSerial,true)
  382. console.log("打开负压呼吸阀测试口阀门")
  383. ModbusJs.pressureSensorCtrl(controlSerial,"负压")
  384. console.log("打开负压传感器阀门")
  385. //关闭负压罐进气阀门
  386. ModbusJs.negativePressureTankInputCtrl(controlSerial,false)
  387. console.log("关闭负压罐进气阀门 微调")
  388. //setp 2
  389. processWindow.show("等待压力到0kPa")
  390. //打开负压罐头泄气阀门
  391. ModbusJs.negativePressureTankOutputCtrl(controlSerial,true)
  392. console.log("打开负压罐头泄气阀门")
  393. //查看负压传感器值 等待负压压罐头压力至0kPa
  394. var timeout = 0
  395. var end_count=0
  396. do{
  397. if(running === false){
  398. console.log("停止测试")
  399. return false
  400. }
  401. //var obj = ModbusJs.negativePressureSensorReadReq(sensorSerial)
  402. var obj =ModbusJs.lowPressureSensorReadReq(sensorSerial)
  403. if(obj.ret === false){
  404. log.show("低压传感器通讯错误")
  405. return false
  406. }
  407. //signal 压力显示函数
  408. console.log(obj.pressureNumber)
  409. pressureDisplaySigFun(obj.pressureNumber)
  410. //延时
  411. spy.wait(900)
  412. timeout++
  413. if(obj.pressureNumber >= nthreshold_Setzero){
  414. end_count++;
  415. }
  416. }while(end_count < delaycount_Setzero && timeout < 180)
  417. if(timeout === 180){
  418. log.show("泄压超时")
  419. ModbusJs.closeAllValve(controlSerial)
  420. console.log("关闭所有阀门")
  421. return false
  422. }
  423. console.log("压力到 0 kPa")
  424. ModbusJs.negativePressureTankOutputCtrl(controlSerial,false)
  425. console.log("关闭负压罐泄气阀门")
  426. //setp 3
  427. /*********测试开启压力*************/
  428. ModbusJs.negativePumpPowerCtrl(controlSerial,true)
  429. console.log("打开 负压泵")
  430. processWindow.show("开启压力试验开始")
  431. console.log("开启压力测试开始")
  432. //打开负压呼吸阀测试口阀门 全称微调 不需要打开 逻辑有改变
  433. // ModbusJs.nbreathValveTestIo(controlSerial,true)
  434. // console.log("打开负压呼吸阀测试口阀门")
  435. //关闭负压罐泄气阀门
  436. //ModbusJs.negativePressureTankOutputCtrl(controlSerial,false)
  437. //console.log("关闭负压罐泄气阀门")
  438. //关闭 负压罐进气阀门
  439. //打开进气阀门
  440. ModbusJs.negativePressureTankInputCtrl(controlSerial,true)
  441. console.log("打开负压罐抽气阀门 微调")
  442. tabView.currentIndex = currentIndex
  443. var pre_pressure = 0
  444. var delta = 0
  445. var keepCnt = 0
  446. var prevTime = Date.now()
  447. obj = ModbusJs.lowPressureSensorReadReq(sensorSerial)
  448. if(obj.ret === false){
  449. log.show("低压传感器通讯错误")
  450. return false
  451. }
  452. pre_pressure = obj.pressureNumber
  453. spy.wait(readPressureInterval)
  454. //ret = true
  455. StablePressureCount = openPressureTimeMax*1000/readPressureInterval
  456. var min = -4
  457. var max = -2
  458. do{
  459. if(running === false){
  460. console.log("停止测试")
  461. return false
  462. }
  463. //obj = ModbusJs.negativePressureSensorReadReq(sensorSerial)
  464. obj =ModbusJs.lowPressureSensorReadReq(sensorSerial)
  465. if(obj.ret === false){
  466. log.show("负压传感器通讯错误")
  467. return false
  468. }
  469. delta = pre_pressure - obj.pressureNumber
  470. pre_pressure = obj.pressureNumber
  471. if(obj.pressureNumber < min){
  472. log.show("当前压力低于 -4.0 kPa, 未开启")
  473. //ret = false
  474. break
  475. }
  476. if(delta <= 0.01){
  477. keepCnt++
  478. }else{
  479. keepCnt=0
  480. }
  481. if(keepCnt > StablePressureCount){
  482. break;
  483. }
  484. //压力数据通知
  485. var curTime = Date.now()
  486. var deltaTime = curTime - prevTime
  487. if(deltaTime > 1000){
  488. prevTime = curTime
  489. pressureDisplaySigFun(obj.pressureNumber)
  490. // add pressure table
  491. var table={}
  492. table.pressure=obj.pressureNumber
  493. openPressureModel.append(table)
  494. //processWindow.text("密封压力试验时间"+(sealPressureTimemax-holdTimeCnt)+"s")
  495. //processWindow.text("21kPa压力进气时间"+(sealPressureTimemax-sealCnt)+"s")
  496. }
  497. //延时
  498. spy.wait(readPressureInterval)
  499. }while(1)//(obj.pressureNumber >= min && openCnt < openPressureTimeMax)
  500. pressureDisplaySigFun(obj.pressureNumber)
  501. // add pressure table
  502. table={}
  503. table.pressure=obj.pressureNumber
  504. openPressureModel.append(table)
  505. openPressureNumber = obj.pressureNumber//.toString()
  506. var result={}
  507. result.openPressureNumber = openPressureNumber
  508. result.sealPressureNumber = ""
  509. resultSigFun(result)
  510. console.log("开启压力:",openPressureNumber)
  511. console.log("密封压力开始")
  512. processWindow.show("密封压力试验开始")
  513. //关闭负压罐进气阀门
  514. ModbusJs.negativePressureTankInputCtrl(controlSerial,false)
  515. console.log("关闭负压罐进气阀门 微调")
  516. ModbusJs.negativePumpPowerCtrl(controlSerial,false)
  517. console.log("关闭 负压泵")
  518. console.log("开启压力测试结束")
  519. //setp 4
  520. /*********测试密封压力*************/
  521. var holdTimeCnt=0
  522. tabView.currentIndex =currentIndex+3
  523. keepCnt=0
  524. do{
  525. if(running === false){
  526. console.log("停止测试")
  527. return false
  528. }
  529. obj =ModbusJs.lowPressureSensorReadReq(sensorSerial)
  530. //obj = ModbusJs.negativePressureSensorReadReq(sensorSerial)
  531. if(obj.ret === false){
  532. log.show("低压传感器通讯错误")
  533. return false
  534. }
  535. delta = obj.pressureNumber - pre_pressure
  536. pre_pressure = obj.pressureNumber
  537. if(obj.pressureNumber > max){
  538. log.show("当前压力高于 -2.0 kPa, 疑似漏气")
  539. //ret = false
  540. break
  541. }
  542. if(delta <= 0.01){
  543. keepCnt++
  544. }else{
  545. keepCnt=0
  546. }
  547. if(keepCnt > StablePressureCount){
  548. break;
  549. }
  550. //压力数据通知
  551. curTime = Date.now()
  552. deltaTime = curTime - prevTime
  553. if(deltaTime > 1000){
  554. prevTime = curTime
  555. pressureDisplaySigFun(obj.pressureNumber)
  556. // add pressure table
  557. table={}
  558. table.pressure=obj.pressureNumber
  559. sealPressureModel.append(table)
  560. //processWindow.text("密封压力试验时间"+(sealPressureTimemax-holdTimeCnt)+"s")
  561. //processWindow.text("21kPa压力进气时间"+(sealPressureTimemax-sealCnt)+"s")
  562. }
  563. //延时
  564. spy.wait(readPressureInterval)
  565. }while(1)
  566. pressureDisplaySigFun(obj.pressureNumber)
  567. // add pressure table
  568. table={}
  569. table.pressure=obj.pressureNumber
  570. sealPressureModel.append(table)
  571. sealPressureNumber = obj.pressureNumber//.toString()
  572. result={}
  573. result.openPressureNumber = openPressureNumber
  574. result.sealPressureNumber = sealPressureNumber
  575. resultSigFun(result)
  576. console.log("密封压力结束")
  577. //setp 5
  578. //关闭负压罐进气阀门
  579. ModbusJs.negativePressureTankInputCtrl(controlSerial,false)
  580. console.log("关闭负压罐进气阀门 微调")
  581. //打开负压罐头泄气阀门
  582. ModbusJs.negativePressureTankOutputCtrl(controlSerial,true)
  583. console.log("打开负压罐头泄气阀门")
  584. ModbusJs.negativePumpPowerCtrl(controlSerial,false)
  585. console.log("关闭 负压泵")
  586. console.log("等待压力 0kPa")
  587. //查看负压传感器值 等待负压罐到0kPa
  588. processWindow.show("试验结束,泄气中")
  589. timeout = 0
  590. end_count = 0
  591. do{
  592. if(running === false){
  593. console.log("停止测试")
  594. return
  595. }
  596. obj =ModbusJs.lowPressureSensorReadReq(sensorSerial)
  597. //obj = ModbusJs.negativePressureSensorReadReq(sensorSerial)
  598. if(obj.ret === false){
  599. log.show("负压传感器通讯错误")
  600. return false
  601. }
  602. // signal 压力显示函数
  603. pressureDisplaySigFun(obj.pressureNumber)
  604. //延时
  605. spy.wait(900)
  606. timeout++
  607. if(obj.pressureNumber >= nthreshold_Setzero){
  608. end_count++;
  609. }
  610. }while(end_count < delaycount_Setzero && timeout<180)
  611. //关闭负压罐头泄气阀门
  612. //setp 6
  613. console.log("压力 0kPa")
  614. ModbusJs.closeAllValve(controlSerial)
  615. console.log("关闭所有阀门")
  616. return true
  617. }
  618. //倾覆性密封试验
  619. function capsizeTestStart(processWindow,controlSerial,sensorSerial,
  620. sealPressureModel,pressureDisplaySigFun,resultSigFun,spy,log)
  621. {
  622. //setp 1
  623. // 关闭所有测试口
  624. ModbusJs.turnOffAllTestIO(controlSerial)
  625. console.log("关闭所有测试口")
  626. ModbusJs.pressureSensorCtrl(controlSerial,"高压")
  627. console.log("打开高压传感器阀门")
  628. //关闭正压罐进气阀门
  629. ModbusJs.positivePressureTankInputCtrl(controlSerial,false)
  630. console.log("关闭正压罐进气阀门")
  631. //setp 2
  632. //查看高压传感器值 等待正压罐头压力降到最低值
  633. processWindow.show("等待压力降到0")
  634. //打开正压罐头泄气阀门
  635. ModbusJs.positivePressureTankOutputCtrl(controlSerial,true)
  636. console.log("打开正压罐头泄气阀门")
  637. var timeout = 0
  638. var end_count=0
  639. do{
  640. if(running === false){
  641. console.log("停止测试")
  642. return false
  643. }
  644. var obj = ModbusJs.highPressureSensorReadReq(sensorSerial)
  645. if(obj.ret === false){
  646. log.show("高压传感器通讯错误")
  647. return false
  648. }
  649. // signal 压力显示函数
  650. pressureDisplaySigFun(obj.pressureNumber)
  651. //延时
  652. spy.wait(900)
  653. timeout++
  654. if(obj.pressureNumber <= pthreshold_Setzero){
  655. end_count++;
  656. }
  657. }while(end_count < delaycount_Setzero && timeout < 180)
  658. console.log("压力降压到 0 kPa")
  659. if(timeout === 180){
  660. log.show("泄压超时")
  661. ModbusJs.closeAllValve(controlSerial)
  662. console.log("关闭所有阀门")
  663. return false
  664. }
  665. //setp 3
  666. /*********调整压力*************/
  667. processWindow.show("进气压力"+capsizeSetPressure+"kPa")
  668. ModbusJs.pressureSensorCtrl(controlSerial,"低压")
  669. console.log("打开低压传感器阀门")
  670. obj = ModbusJs.testFixedPressure(controlSerial,capsizeSetPressure+2)
  671. ModbusJs.proportionalControlWrite(controlSerial,obj.voltage)
  672. console.log("比例调压阀压力值:",obj.voltage)
  673. //关闭正压罐头泄气阀门
  674. ModbusJs.positivePressureTankOutputCtrl(controlSerial,false)
  675. console.log("关闭正压罐头泄气阀门")
  676. //打开进气阀门
  677. ModbusJs.positivePressureTankInputCtrl(controlSerial,true)
  678. console.log("打开进气阀门")
  679. var cnt = 0
  680. var prevTime = Date.now()
  681. var bigAcive = true
  682. var max = 50
  683. ModbusJs.bigTuningValveControl(controlSerial,true)
  684. console.log("开启 粗调开关")
  685. do{
  686. if(running === false){
  687. console.log("停止测试")
  688. return false
  689. }
  690. obj = ModbusJs.lowPressureSensorReadReq(sensorSerial)
  691. if(obj.ret === false){
  692. log.show("低压传感器通讯错误")
  693. return false
  694. }
  695. spy.wait(10)
  696. var curTime = Date.now()
  697. var deltaTime = curTime - prevTime
  698. if(deltaTime > 900){
  699. prevTime = curTime
  700. pressureDisplaySigFun(obj.pressureNumber)
  701. cnt++
  702. }
  703. //粗调压力值
  704. var bigLevel = capsizeSetPressure-1
  705. if(obj.pressureNumber > bigLevel && bigAcive === true){
  706. bigAcive = false
  707. ModbusJs.bigTuningValveControl(controlSerial,false)
  708. ModbusJs.bigTuningValveControl(controlSerial,false)
  709. console.log("关闭 粗调开关")
  710. break;
  711. }
  712. // pressureDisplaySigFun(obj.pressureNumber)
  713. // spy.wait(900)
  714. // cnt++
  715. // console.log("obj.pressureNumber:",obj.pressureNumber)
  716. }while(obj.pressureNumber <= max && cnt < 180 )
  717. if(cnt === 180){
  718. log.show("进气时间超时")
  719. return false
  720. }
  721. //setp 3
  722. /*********密封试验开始*************/
  723. processWindow.show("密封压力试验开始")
  724. console.log("密封压力试验开始")
  725. //关闭进气阀门
  726. ModbusJs.positivePressureTankInputCtrl(controlSerial,false)
  727. console.log("关闭进气阀门")
  728. //打开正压呼吸阀测试口阀门
  729. ModbusJs.pbreathValveTestIo(controlSerial,true)
  730. console.log("打开正压呼吸阀测试口阀门")
  731. cnt = 0
  732. do{
  733. if(running === false){
  734. console.log("停止测试")
  735. return false
  736. }
  737. obj = ModbusJs.lowPressureSensorReadReq(sensorSerial)
  738. if(obj.ret === false){
  739. log.show("低压传感器通讯错误")
  740. return false
  741. }
  742. pressureDisplaySigFun(obj.pressureNumber)
  743. // add pressure table
  744. var table={}
  745. table.pressure=obj.pressureNumber
  746. //密封模型赋值
  747. sealPressureModel.append(table)
  748. spy.wait(900)
  749. cnt++
  750. processWindow.text("密封压力试验时间"+(sealPressureTimemax-cnt)+"s")
  751. }while( cnt < sealPressureTimemax )
  752. var result={}
  753. result.sealPressureNumber = obj.pressureNumber
  754. resultSigFun(result)
  755. //setp 5
  756. processWindow.show("试验结束,泄气中")
  757. ModbusJs.pressureSensorCtrl(controlSerial,"低压")
  758. console.log("打开低压传感器阀门")
  759. //打开正压罐头泄气阀门
  760. ModbusJs.positivePressureTankOutputCtrl(controlSerial,true)
  761. console.log("打开正压罐头泄气阀门")
  762. //关闭进气阀门
  763. ModbusJs.positivePressureTankInputCtrl(controlSerial,false)
  764. console.log("关闭进气阀门")
  765. console.log("等待压力 0kPa")
  766. //查看高压传感器值 等待正压罐头压力降到最低值
  767. timeout =0
  768. end_count = 0
  769. do{
  770. if(running === false){
  771. console.log("停止测试")
  772. return false
  773. }
  774. obj = ModbusJs.lowPressureSensorReadReq(sensorSerial)
  775. if(obj.ret === false){
  776. log.show("低压传感器通讯错误")
  777. return false
  778. }
  779. // signal 压力显示函数
  780. pressureDisplaySigFun(obj.pressureNumber)
  781. //延时
  782. spy.wait(900)
  783. timeout++
  784. if(obj.pressureNumber <= pthreshold_Setzero){
  785. end_count++;
  786. }
  787. }while(end_count < delaycount_Setzero && timeout < 180)
  788. //setp 6
  789. console.log("压力 0kPa")
  790. ModbusJs.closeAllValve(controlSerial)
  791. console.log("关闭所有阀门")
  792. return true
  793. }