DPF/operator.go
2019-11-04 14:29:08 +08:00

113 lines
3.8 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package main
import "time"
// OperatorFlag 操作位
type OperatorFlag uint16
const (
UltrasonicPower OperatorFlag = 0b1000000000000000 // UltrasonicPower bit15 超声波电源开关 1开0关
// CYZ-A-X
CirculatingIrrigation OperatorFlag = 0b0100000000000000 // CirculatingIrrigation bit14 循环灌洗水泵 1开0关
UFRecoil OperatorFlag = 0b0010000000000000 // bit13 UF 超滤膜反冲进水阀 1开0关
UFPositive OperatorFlag = 0b0001000000000000 // bit12 UF 超滤膜正冲进水阀 1开0关
// YM-01-X-03
UFTreatedWater OperatorFlag = 0b0000100000000000 // bit11 UF 超滤膜净水出水阀 1开0关
UFRawWater OperatorFlag = 0b0000010000000000 // bit10 UF超滤膜原水进水阀 1开0关
// CirculatingTankWashWater YM-01-X-01
CirculatingTankWashWater OperatorFlag = 0b0000001000000000 // bit9 循环罐洗进水电动球阀 1开0关
UFPositiveFlushingWaterOutlet OperatorFlag = 0b0000000100000000 // bit8 UF超滤膜正冲浓水出口电磁阀 1开0关
// CleaningTankExhaust YV-02-02-1-X-06
CleaningTankExhaust OperatorFlag = 0b0000000010000000 // bit7 清洗罐排气电磁阀 1开0关
DPFCompactCylinderControlB OperatorFlag = 0b0000000001000000 // bit6 DPF压紧气缸控制电磁阀B 1开0关
DPFCompactCylinderControlA OperatorFlag = 0b0000000000100000 // bit5 DPF压紧气缸控制电磁阀A 1开0关
// YV-02-05-1-X-04
CleaningTankDrainingWater OperatorFlag = 0b0000000000010000 // bit4 清洗罐放水阀控制电磁阀 1开0关
GasExplosion OperatorFlag = 0b0000000000001000 // bit3 气爆阀控制电磁阀 1开0关
// YV-02-02-1-X-02
CleaningTankInflation OperatorFlag = 0b0000000000000100 // bit2 清洗罐充气电磁阀 1开0关
CleaningTankSealB OperatorFlag = 0b0000000000000010 // bit1 清洗罐密封圈充气电磁阀B 1开0关
CleaningTankSealA OperatorFlag = 0b0000000000000001 // bit0 清洗罐密封圈充气电磁阀A 1开0关
)
// ChaoShengBoQingXi
func ChaoShengBoQingXi(worker *Worker) {
// TODO: 预设值未知
for sensor := worker.Sensor(); (20.0/1024.0)*float64(sensor.SP02) < 10.0; sensor = worker.Sensor() {
}
flag := CleaningTankExhaust |
CleaningTankDrainingWater |
CirculatingTankWashWater |
UFTreatedWater |
CirculatingIrrigation
worker.Write(OperatorOption(flag))
time.Sleep(time.Second * 10) // 10秒后
flag ^= CleaningTankDrainingWater
worker.Write(OperatorOption(flag))
// 满水位传感器LT-01 >= 4.5电压
for sensor := worker.Sensor(); ((5.0 / 1024.0) * float64(sensor.LT01)) < 4.5; sensor = worker.Sensor() {
}
flag ^= CleaningTankExhaust
flag ^= CirculatingIrrigation
flag |= UltrasonicPower
worker.Write(OperatorOption(flag))
//TODO: 设置时间
time.Sleep(time.Second * 1)
flag ^= UltrasonicPower
worker.Write(OperatorOption(flag))
// 灌洗开始
flag |= CleaningTankDrainingWater
flag |= CirculatingIrrigation
worker.Write(OperatorOption(flag))
for {
// TODO: 定时时间 15000230
if time.Now().Unix() >= 15000230 {
break
}
time.Sleep(time.Millisecond * 100)
}
flag ^= CirculatingIrrigation
worker.Write(OperatorOption(flag))
QingXiGuanFangShui(worker)
}
// QingXiGuanFangShui 清洗灌放水
func QingXiGuanFangShui(worker *Worker) {
// 满水位传感器LT-01 >= 4.5电压
flag := CleaningTankDrainingWater |
CirculatingTankWashWater |
UFTreatedWater |
CleaningTankInflation
for sensor := worker.Sensor(); ((5.0 / 1024.0) * float64(sensor.LT02)) >= 0.5; sensor = worker.Sensor() {
worker.Write(OperatorOption(flag))
time.Sleep(time.Second)
}
flag = 0
worker.Write(OperatorOption(flag))
flag = CleaningTankExhaust
for sensor := worker.Sensor(); ((5.0 / 1024.0) * float64(sensor.SP01)) > 0.5; sensor = worker.Sensor() {
worker.Write(OperatorOption(flag))
time.Sleep(time.Second)
}
flag = 0
worker.Write(OperatorOption(flag))
}