Administrator
2025-06-10 13a442afefdddf1ec9ecd1e22c81735bf5c6a465
Admin.NET/WCS.Application/PLC/ModbusUtil.cs
@@ -1,4 +1,5 @@
using IoTClient;
using Furion.Logging;
using IoTClient;
using IoTClient.Clients.Modbus;
using IoTClient.Common.Enums;
using IoTClient.Enums;
@@ -270,4 +271,37 @@
                return new IoTClient.Result();
        }
    }
    /// <summary>
    /// 循环写入PLC值(并读取值判断和写入的值是否一致,写入控制字不能用此方法)
    /// </summary>
    public IoTClient.Result SetDBValueRepeat(PLCDataTypeEnum PosType, string Pos, string Value)
    {
        IoTClient.Result _result = new IoTClient.Result();
        int setCount = 0;//写入次数
        while (setCount < 5)
        {
            _result = this.SetDBValue(PosType, Pos, Value);//写入值
            //累计写入次数
            setCount++;
            if (_result.IsSucceed)
            {
                //读取写入的值
                var (res, val) = GetDBValue(PosType, Pos);
                if (val.ToString() == Value)
                {
                    //读取的值和写入的值一致,直接跳出循环
                    break;
                }
            }
        }
        //写入日志
        Log.Information($"写入PLC,Pos:{Pos},Value:{Value},setCount:{setCount}");
        return _result;
    }
}