From bf2b61519fd0d79ddb19f0469749fbbe1d6c4ad8 Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期四, 19 十月 2023 17:23:50 +0800
Subject: [PATCH] 为保证正确获取集群状态, 添加程序启动时读取system-service运行状态
---
pkg/plc/apacheplc4x/modbus.go | 25 +++++++++++++++++--------
1 files changed, 17 insertions(+), 8 deletions(-)
diff --git a/pkg/plc/apacheplc4x/modbus.go b/pkg/plc/apacheplc4x/modbus.go
index 2f17e8d..b289561 100644
--- a/pkg/plc/apacheplc4x/modbus.go
+++ b/pkg/plc/apacheplc4x/modbus.go
@@ -1,6 +1,7 @@
package apacheplc4x
import (
+ "apsClient/conf"
"apsClient/pkg/logx"
"context"
"errors"
@@ -52,7 +53,7 @@
func readHoldingRegisterSingle(connection plc4go.PlcConnection, address int) ([]byte, error) {
tag := fmt.Sprintf("tag:%v", address)
- tagAddress := fmt.Sprintf("holding-register:%d:UINT", address)
+ tagAddress := getTagAddress(address)
// 璇绘ā寮�
readRequest, err := connection.ReadRequestBuilder().AddTagAddress(tag, tagAddress).Build()
@@ -82,7 +83,7 @@
func readHoldingRegisterList(connection plc4go.PlcConnection, address, length int) ([]byte, error) {
tag := fmt.Sprintf("tag:%v:%v", address, length)
- tagAddress := fmt.Sprintf("holding-register:%d:UINT[%d]", address, length)
+ tagAddress := getTagAddress(address)
// 璇绘ā寮�
readRequest, err := connection.ReadRequestBuilder().AddTagAddress(tag, tagAddress).Build()
@@ -94,13 +95,13 @@
// 鎵ц
readResult := <-readRequest.Execute()
if err := readResult.GetErr(); err != nil {
- logx.Errorf("execting read-request:%s\n", err.Error())
+ logx.Errorf("plc4x execute read-request:%s\n", err.Error())
return nil, err
}
// 鍒ゆ柇鍝嶅簲鐮佹槸鍚︽纭�
if readResult.GetResponse().GetResponseCode(tag) != apiModel.PlcResponseCode_OK {
- logx.Errorf("error an non-ok return code: %s", readResult.GetResponse().GetResponseCode(tag).GetName())
+ logx.Errorf("plc4x response error code: %s", readResult.GetResponse().GetResponseCode(tag).GetName())
return nil, errors.New("error code: " + readResult.GetResponse().GetResponseCode(tag).GetName())
}
@@ -129,6 +130,14 @@
return readHoldingRegisterSingle(connection, address)
}
+func getTagAddress(address int) string {
+ intType := conf.Conf.PLC.ModbusIntType
+ if intType == "" {
+ intType = "DINT"
+ }
+ return fmt.Sprintf("holding-register:%d:%v", address, intType)
+}
+
func WriteHoldingRegister(ipAddr string, address int, value any) (string, error) {
connection, err := GetModbusConnection(ipAddr)
dealErr(err, ipAddr)
@@ -137,25 +146,25 @@
}
defer connection.Close()
tag := fmt.Sprintf("tag:%v:w", address)
- tagAddress := fmt.Sprintf("holding-register:%d:UINT", address)
+ tagAddress := getTagAddress(address)
// 鍐欐ā寮�
writeRequest, err := connection.WriteRequestBuilder().AddTagAddress(tag, tagAddress, value).Build()
if err != nil {
- logx.Errorf("preparing read-request:%s\n", err.Error())
+ logx.Errorf("plc4x preparing read-request:%s\n", err.Error())
return "", err
}
// 鎵ц
writeResult := <-writeRequest.Execute()
if err := writeResult.GetErr(); err != nil {
- logx.Errorf("execting read-request:%s\n", err.Error())
+ logx.Errorf("plc4x execute write-request:%s\n", err.Error())
return "", err
}
// 鍒ゆ柇鍝嶅簲鐮佹槸鍚︽纭�
if writeResult.GetResponse().GetResponseCode(tag) != apiModel.PlcResponseCode_OK {
- logx.Errorf("error an non-ok return code: %s", writeResult.GetResponse().GetResponseCode(tag).GetName())
+ logx.Errorf("plc4x response error code: %s", writeResult.GetResponse().GetResponseCode(tag).GetName())
return "", errors.New("error code: " + writeResult.GetResponse().GetResponseCode(tag).GetName())
}
--
Gitblit v1.8.0