zhangqian
2023-09-18 23a92b7802357da7650c7362fb4dd1b029123aa5
新库使用短连接
5个文件已修改
23 ■■■■ 已修改文件
api/v1/plc.go 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
conf/apsClient.json 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
conf/config.go 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pkg/plc/modbusx/connection_manager.go 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/plc.go 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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
conf/apsClient.json
@@ -33,7 +33,8 @@
    "totalNumberTimeInterval": 0,
    "modbusIntType": "DINT",
    "slaveId": 0,
    "package": "goburrow"
    "package": "goburrow",
    "keepAlive": "false"
  }
}
conf/config.go
@@ -73,6 +73,7 @@
        ModbusIntType            string
        SlaveId                  int
        Package                  string
        KeepAlive                bool
    }
    config struct {
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)
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()
    }
}