gh-10 0.0.7 Check that only one of mutex coils is 1 at a time

This commit is contained in:
Jarno Rankinen 2023-03-02 13:36:49 +02:00
parent 7d6ea93421
commit bcb8d55126
2 changed files with 21 additions and 11 deletions

View File

@ -19,7 +19,7 @@ import (
var static embed.FS var static embed.FS
var ( var (
version = "0.0.6" version = "0.0.7"
pingvin pingvinKL.PingvinKL pingvin pingvinKL.PingvinKL
DEBUG = false DEBUG = false
) )

View File

@ -278,6 +278,9 @@ func (p *PingvinKL) WriteCoil(n uint16, val bool) bool {
handler := p.getHandler() handler := p.getHandler()
p.buslock.Lock() p.buslock.Lock()
err := handler.Connect() err := handler.Connect()
if val {
p.checkMutexCoils(n, handler)
}
if err != nil { if err != nil {
log.Println("WARNING: WriteCoil: failed to connect handler") log.Println("WARNING: WriteCoil: failed to connect handler")
return false return false
@ -363,16 +366,23 @@ func (p *PingvinKL) WriteCoils(startaddr uint16, quantity uint16, vals []bool) e
return nil return nil
} }
// // TODO func (p *PingvinKL) checkMutexCoils(addr uint16, handler *modbus.RTUClientHandler) error {
// func (p *PingvinKL) checkMutexCoils(addr uint16) { for _, mutexcoil := range mutexcoils {
// for i := 0; i < len(mutexcoils); i++ { if mutexcoil == addr {
// if mutexcoils[i] == addr { for _, n := range mutexcoils {
// log.Println("Resetting mode coils") if p.Coils[n].Value {
// // TODO _, err := modbus.NewClient(handler).WriteSingleCoil(n, 0)
// return if err != nil {
// } log.Println("ERROR: checkMutexCoils:", err)
// } return err
// } }
}
}
return nil
}
}
return nil
}
func (p *PingvinKL) populateStatus() { func (p *PingvinKL) populateStatus() {
hpct := p.Registers[49].Value / p.Registers[49].Multiplier hpct := p.Registers[49].Value / p.Registers[49].Multiplier