From d91a802e7aa2ad4075ed803b8ddc7536a91a0ef0 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期五, 27 十月 2023 20:33:06 +0800 Subject: [PATCH] update --- pkg/plc/apacheplc4x/modbus.go | 28 ++++++++++++++++------------ 1 files changed, 16 insertions(+), 12 deletions(-) diff --git a/pkg/plc/apacheplc4x/modbus.go b/pkg/plc/apacheplc4x/modbus.go index dd3621f..e828403 100644 --- a/pkg/plc/apacheplc4x/modbus.go +++ b/pkg/plc/apacheplc4x/modbus.go @@ -15,31 +15,35 @@ "time" ) +var driverManager plc4go.PlcDriverManager + +func init() { + // 鍒涘缓椹卞姩绠$悊鍣� + driverManager = plc4go.NewPlcDriverManager() + // 娉ㄥ唽TCP浼犺緭 + transports.RegisterTcpTransport(driverManager) + // 娉ㄥ唽涓插彛浼犺緭 + transports.RegisterSerialTransport(driverManager) + // 娉ㄥ唽椹卞姩 + drivers.RegisterModbusTcpDriver(driverManager) + drivers.RegisterModbusRtuDriver(driverManager) +} + func GetModbusConnection(ipAddr string) (plc4go.PlcConnection, error) { // 鍒涘缓涓�涓笂涓嬫枃锛屽苟璁剧疆 3 绉掕秴鏃� ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() - conn, err := newModbusConnection(ctx, ipAddr) + conn, err := newModbusTCPConnection(ctx, ipAddr) if err != nil { logx.Errorf("new modbus connection err: %v", err.Error()) return nil, err } return conn, nil } - -func newModbusConnection(ctx context.Context, ipAddr string) (plc4go.PlcConnection, error) { - // 鍒涘缓椹卞姩绠$悊鍣� - driverManager := plc4go.NewPlcDriverManager() - // 娉ㄥ唽TCP浼犺緭 - transports.RegisterTcpTransport(driverManager) - // 娉ㄥ唽椹卞姩 - //drivers.RegisterKnxDriver(driverManager) - drivers.RegisterModbusTcpDriver(driverManager) - +func newModbusTCPConnection(ctx context.Context, ipAddr string) (plc4go.PlcConnection, error) { // 閫氳繃TCP杩炴帴PLC璁惧 connectionString := fmt.Sprintf("modbus-tcp://%s", ipAddr) connectionRequestChanel := driverManager.GetConnection(connectionString) - // 绛夊緟杩炴帴鍝嶅簲锛屽悓鏃惰�冭檻涓婁笅鏂囩殑瓒呮椂 select { case connectionResult := <-connectionRequestChanel: -- Gitblit v1.8.0