public static async Task Post_XAGL_WM1000KZG_StopWell(ModbusRtuOverTcp client, RedisClient redisClient, string messageString) { var par = messageString.FromJson <ControlRequest>(); //用于通过ServerEvent给调用着返回消息 if (!par.UserName.IsNullOrEmpty()) { ServerEventHelper.SendSseMessage(par.UserName, par.SessionId, 0, "ok"); } return; try { var modbusAddress = par.ModbusAddress; ClientInfo.CurrentModbusPoolAddress = modbusAddress; //写入0值到4121(Holding register)寄存器,设置油井的状态为开启。 // var result2 = await client.WriteAsync("4126", 2); var startAddress = (ushort)4126; var address = $"s={par.ModbusAddress};{startAddress}"; var result2 = await client.WriteOneRegisterAsync(address, (ushort)(2)); if (result2.IsSuccess) { //用于通过ServerEvent给调用着返回消息 if (!par.UserName.IsNullOrEmpty()) { ServerEventHelper.SendSseMessage(par.UserName, par.SessionId, 0, "ok"); } } else { //用于通过ServerEvent给调用着返回消息 if (!par.UserName.IsNullOrEmpty()) { ServerEventHelper.SendSseMessage(par.UserName, par.SessionId, -1, "error"); } } } catch (Exception ex) { Logger.Error(ex.Message); Logger.Error(ex.StackTrace); Logger.Error(ex.Source); if (!par.UserName.IsNullOrEmpty()) { ServerEventHelper.SendSseMessage(par.UserName, par.SessionId, -1, ex.Message); } } // }
public static async Task Post_BJBC_WII_InjectionAllocation(ModbusRtuOverTcp client, RedisClient redisClient, string messageString) { var par = messageString.FromJson <ControlRequest>(); par.ConvertTo <LogIotModbusPoll>(); var modbusAddress = par.ModbusAddress; ClientInfo.CurrentModbusPoolAddress = modbusAddress; try { if (!par.CommandParameter.IsNullOrEmpty()) { var parDict = par.CommandParameter.FromJson <Dictionary <long, double> >(); if (parDict != null) { foreach (var item in parDict) { var slotId = item.Key; //30201 原始地址 var startAddress = (ushort)(201 + slotId - 1); var value = (ushort)(item.Value * 100); var read = await client.WriteOneRegisterAsync($"s={par.ModbusAddress};{startAddress}", value); if (read.IsSuccess) { if (!par.UserName.IsNullOrEmpty()) { ServerEventHelper.SendSseMessage(par.UserName, par.SessionId, 0, "ok"); } } else { if (!par.UserName.IsNullOrEmpty()) { ServerEventHelper.SendSseMessage(par.UserName, par.SessionId, -1, "error"); } } } } } } catch (Exception ex) { Logger.Error(ex.Message); Logger.Error(ex.StackTrace); Logger.Error(ex.Source); if (!par.UserName.IsNullOrEmpty()) { ServerEventHelper.SendSseMessage(par.UserName, par.SessionId, -1, ex.Message); } } }
/// <summary> /// 设置冲次 /// </summary> /// <param name="client"></param> /// <param name="redisClient"></param> /// <param name="messageString"></param> /// <returns></returns> public static async Task Post_XAGL_WM2000KZG_StrokeFrequency(ModbusRtuOverTcp client, RedisClient redisClient, string messageString) { var par = messageString.FromJson <ControlRequest>(); try { var modbusAddress = par.ModbusAddress; ClientInfo.CurrentModbusPoolAddress = modbusAddress; var stroke = (int)(float.Parse(par.CommandParameter) * 10); //4132(Holding register)寄存器为47,代表当前设定冲次4.7次。 var startAddress = (ushort)4132; var address = $"s={par.ModbusAddress};{startAddress}"; await client.WriteOneRegisterAsync(address, (ushort)(stroke)); if (!par.UserName.IsNullOrEmpty()) { ServerEventHelper.SendSseMessage(par.UserName, par.SessionId, 0, "ok"); } } catch (Exception ex) { Logger.Error(ex.Message); Logger.Error(ex.StackTrace); Logger.Error(ex.Source); if (!par.UserName.IsNullOrEmpty()) { ServerEventHelper.SendSseMessage(par.UserName, par.SessionId, -1, ex.Message); } } }
public static async Task Post_XAGL_WM1000KZG_StartWell(ModbusRtuOverTcp client, RedisClient redisClient, string messageString) { var par = messageString.FromJson <ControlRequest>(); //用于通过ServerEvent给调用着返回消息 if (!par.UserName.IsNullOrEmpty()) { ServerEventHelper.SendSseMessage(par.UserName, par.SessionId, 0, "ok"); } return; try { var modbusAddress = par.ModbusAddress; //var reg = new AMWD.Modbus.Common.Structures.Register //{ // Address = 4126, // HiByte = 0, // LoByte = 1 //}; //(2)写入1值到4121(Holding register)寄存器,设置油井的状态为开启。 // var result2 = await client.WriteAsync("4126", 1); var startAddress = (ushort)4126; var address = $"s={par.ModbusAddress};{startAddress}"; var result2 = await client.WriteOneRegisterAsync(address, (ushort)(1)); if (result2.IsSuccess == true) { //用于通过ServerEvent给调用着返回消息 if (!par.UserName.IsNullOrEmpty()) { ServerEventHelper.SendSseMessage(par.UserName, par.SessionId, 0, "ok"); } } else { //用于通过ServerEvent给调用着返回消息 if (!par.UserName.IsNullOrEmpty()) { ServerEventHelper.SendSseMessage(par.UserName, par.SessionId, -1, "error"); } } } catch (Exception ex) { Logger.Error(ex.Message); Logger.Error(ex.StackTrace); Logger.Error(ex.Source); if (par.UserName.IsNullOrEmpty()) { ServerEventHelper.SendSseMessage(par.UserName, par.SessionId, -1, ex.Message); } } }