From 23a92b7802357da7650c7362fb4dd1b029123aa5 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期一, 18 九月 2023 19:28:05 +0800 Subject: [PATCH] 新库使用短连接 --- api/v1/plc.go | 2 +- service/plc.go | 10 ++++++++++ conf/config.go | 1 + conf/apsClient.json | 3 ++- pkg/plc/modbusx/connection_manager.go | 7 ++++++- 5 files changed, 20 insertions(+), 3 deletions(-) diff --git a/api/v1/plc.go b/api/v1/plc.go index 8a2baf8..6a6392f 100644 --- a/api/v1/plc.go +++ b/api/v1/plc.go @@ -36,7 +36,7 @@ resp.TotalNumber = cast.ToInt(totalNumber) plcStatus := 1 //鏂紑杩炴帴 - isConnect := apacheplc4x.IsConnect() + isConnect := service.PlcIsConnect() if isConnect { if resp.FinishNumber > 0 { //鐢熶骇 plcStatus = 2 diff --git a/conf/apsClient.json b/conf/apsClient.json index 64f6ab7..d24e60f 100644 --- a/conf/apsClient.json +++ b/conf/apsClient.json @@ -33,7 +33,8 @@ "totalNumberTimeInterval": 0, "modbusIntType": "DINT", "slaveId": 0, - "package": "goburrow" + "package": "goburrow", + "keepAlive": "false" } } diff --git a/conf/config.go b/conf/config.go index 4307f1f..d18e32e 100644 --- a/conf/config.go +++ b/conf/config.go @@ -73,6 +73,7 @@ ModbusIntType string SlaveId int Package string + KeepAlive bool } config struct { diff --git a/pkg/plc/modbusx/connection_manager.go b/pkg/plc/modbusx/connection_manager.go index 0aef49b..ae0b377 100644 --- a/pkg/plc/modbusx/connection_manager.go +++ b/pkg/plc/modbusx/connection_manager.go @@ -12,6 +12,8 @@ mu sync.Mutex } +var handler *modbus.TCPClientHandler + func newPlcConnectionManager() *ConnectionManager { return &ConnectionManager{ connections: make(map[string]modbus.Client), @@ -58,10 +60,13 @@ return } connectionManager.RemoveConnection(ipAddr) + if handler != nil { + handler.Close() + } } func newGetModbusConnection(ipAddr string) modbus.Client { - handler := modbus.NewTCPClientHandler(ipAddr) + handler = modbus.NewTCPClientHandler(ipAddr) handler.Timeout = 10 * time.Second handler.SlaveId = byte(conf.Conf.PLC.SlaveId) return modbus.NewClient(handler) diff --git a/service/plc.go b/service/plc.go index b86c091..ec7c795 100644 --- a/service/plc.go +++ b/service/plc.go @@ -163,3 +163,13 @@ return modbusx.Write(ipAddr, uint16(address), cast.ToInt(value)) } } + +func PlcIsConnect() bool { + if conf.Conf.PLC.Package == constvar.PlcPackageApache { + return apacheplc4x.IsConnect() + } else if conf.Conf.PLC.Package == constvar.PlcPackageApacheLongConnection { + return false + } else { + return modbusx.IsConnect() + } +} -- Gitblit v1.8.0