113 lines
3.8 KiB
Go
113 lines
3.8 KiB
Go
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))
|
||
}
|