| | |
| | | using IoTClient; |
| | | using Furion.Logging; |
| | | using IoTClient; |
| | | using IoTClient.Clients.Modbus; |
| | | using IoTClient.Common.Enums; |
| | | using IoTClient.Enums; |
| | |
| | | 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; |
| | | } |
| | | |
| | | } |