public static async Task POST_LYQH_KZG_controllerstate(ModbusRtuOverTcp client, RedisClient redisClient, string messageString, int state = 1) { var par = messageString.FromJson <ControlRequest>(); try { var modbusAddress = par.ModbusAddress; // 0 - 关井,1 - 开井 //写入1值到0x0080(Holding register)寄存器,设置油井的状态为开启或者关闭 var jo1 = (JObject)JsonConvert.DeserializeObject(par.CommandParameter); var slotId = Convert.ToInt32(jo1["1"].ToString()); var startAddress = (ushort)((slotId * 0x100) + 0x0080); var read = await client.WriteAsync($"s={par.ModbusAddress};{startAddress}", new byte[] { 00, (byte)state, 20, 07, 23, 11, 34, 00 }); if (read.IsSuccess) { } if (!par.UserName.IsNullOrEmpty()) { ServerEventHelper.SendSseMessage(par.UserName, par.SessionId, read.IsSuccess ? 0 : -2, "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_LYQH_GJLShiShiCaiJI(ModbusRtuOverTcp client, RedisClient redisClient, string messageString) { var par = messageString.FromJson <ControlRequest>(); try { var indicatorDiagram = new IotDataOilWellIndicatorDiagram() { AlarmCode = 0, AlarmMsg = "正常" }; var logIotModbusPoll = par.ConvertTo <LogIotModbusPoll>(); logIotModbusPoll.State = 0; logIotModbusPoll.Result = "ok"; var modbusAddress = par.ModbusAddress; indicatorDiagram.DeviceTypeId = par.DeviceTypeId; indicatorDiagram.Mock = false; var jo1 = (JObject)JsonConvert.DeserializeObject(par.CommandParameter); indicatorDiagram.Displacement = Convert.ToDouble(jo1["0"].ToString()); var slotId = Convert.ToInt32(jo1["1"].ToString()); ClientInfo.CurrentModbusPoolAddress = modbusAddress; var startAddress = (ushort)((slotId * 0x100) + 0x0030); var read = await client.WriteAsync($"s={par.ModbusAddress};{startAddress}", new byte[] { 00, 01, 20, 08, 27, 17, 21, 0 }); var flag = true; if (read.IsSuccess) { } else { flag = false; FailLog.Write(redisClient, par, indicatorDiagram, logIotModbusPoll, "Get_LYQH_WG_IndicatorDiagram", "实时采集异常!"); } indicatorDiagram.NetworkNode = ClientInfo.ManyIpAddress; if (flag == true || par.UseMockData) { indicatorDiagram.Mock = par.UseMockData; } //用于通过ServerEvent给调用着返回消息 if (!par.UserName.IsNullOrEmpty()) { ServerEventHelper.SendSseMessage(par.UserName, par.SessionId, flag ? 0 : -2, indicatorDiagram.ToJson().IndentJson()); } } 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_LYQH_GJLSetting(ModbusRtuOverTcp client, RedisClient redisClient, string messageString) { var par = messageString.FromJson <ControlRequest>(); try { var indicatorDiagram = new IotDataOilWellIndicatorDiagram() { AlarmCode = 0, AlarmMsg = "正常" }; var logIotModbusPoll = par.ConvertTo <LogIotModbusPoll>(); logIotModbusPoll.State = 0; logIotModbusPoll.Result = "ok"; var modbusAddress = par.ModbusAddress; indicatorDiagram.DeviceTypeId = par.DeviceTypeId; indicatorDiagram.Mock = false; ClientInfo.CurrentModbusPoolAddress = modbusAddress; var startAddress = (ushort)0x5140; /* * 仪表类型:0x70 * 仪表编号:2020010002 * modbus地址:240 * modbus槽位:0 * 采集周期:1800 * 液位模式:0 * 校正K: 106 * 零偏B:0 * 井场安装编号:3 * 64位长地址:86 92 50 FE FF 14 2E 84 */ byte[] macAddress = { 0x86, 0x92, 0x50, 0xFE, 0xFF, 0x14, 0x2E, 0x84 }; var data = GetSettingData(2020010002, 240, 0, 1800, 0, 106, 0, 3, macAddress); //ushort[] data = { 0x70, 9088, 30748, 1, 1, 400, 0, 0x00, 1, 1, 1, 513, 1027, 1541, 2055 }; var read = await client.WriteAsync($"s={par.ModbusAddress};{startAddress}", data); var flag = true; if (read.IsSuccess) { } else { flag = false; FailLog.Write(redisClient, par, indicatorDiagram, logIotModbusPoll, "Get_LYQH_WG_IndicatorDiagram", "实时采集异常!"); } indicatorDiagram.NetworkNode = ClientInfo.ManyIpAddress; if (flag == true || par.UseMockData) { indicatorDiagram.Mock = par.UseMockData; } //用于通过ServerEvent给调用着返回消息 if (!par.UserName.IsNullOrEmpty()) { ServerEventHelper.SendSseMessage(par.UserName, par.SessionId, flag ? 0 : -2, indicatorDiagram.ToJson().IndentJson()); } } 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_WM3000KZG_StrokeFrequency(ModbusRtuOverTcp client, RedisClient redisClient, string messageString) { var par = messageString.FromJson <ControlRequest>(); try { var modbusAddress = par.ModbusAddress; ClientInfo.CurrentModbusPoolAddress = modbusAddress; //await client.WriteAsync($"s={ par.ModbusAddress};x=6;7629", (ushort)(1)); var startAddress = (ushort)7629; var address = $"s={par.ModbusAddress};{startAddress}"; /* * 65 06 1d cd 00 01 d7 bd * 65 06 1d ce 00 19 27 b7 * 65 05 08 80 ff 00 87 96 */ client.WriteOneRegister(address, (ushort)(1)); var stroke = (int)(float.Parse(par.CommandParameter) * 10); //(1)7630(Holding register)寄存器为47,代表当前设定冲次4.7次。 //await client.WriteAsync($"s={ par.ModbusAddress};x=6;7630", (ushort)(stroke)); startAddress = (ushort)7630; address = $"s={par.ModbusAddress};{startAddress}"; // client.WriteOneRegister(address, (ushort)(stroke)); //(2)写2176(Coil status)置位此寄存器。 await client.WriteAsync($"s={ par.ModbusAddress};x=5;2176", true); //(3)读7627(Holding register)寄存器为47,代表当前设定冲次4.7次。 //var result4 = await client.ReadHoldingRegisters(modbusAddress, 7627, 1); //用于通过ServerEvent给调用着返回消息 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_LYQH_WG_IndicatorDiagramSetting(ModbusRtuOverTcp client, RedisClient redisClient, string messageString) { var par = messageString.FromJson <ControlRequest>(); try { var indicatorDiagram = new IotDataOilWellIndicatorDiagram() { AlarmCode = 0, AlarmMsg = "正常" }; var logIotModbusPoll = par.ConvertTo <LogIotModbusPoll>(); logIotModbusPoll.State = 0; logIotModbusPoll.Result = "ok"; var modbusAddress = par.ModbusAddress; indicatorDiagram.DeviceTypeId = par.DeviceTypeId; indicatorDiagram.Mock = false; var jo1 = (JObject)JsonConvert.DeserializeObject(par.CommandParameter); var slotId = Convert.ToInt32(jo1["1"].ToString()); ClientInfo.CurrentModbusPoolAddress = modbusAddress; var startAddress = (ushort)0x0000; //写入10个寄存器 /*功图ID:20151 10017 * 采集周期:600 * 功图模式:0x10 * 功图点数:200 * 压缩标志:0 * MB地址:1 * 槽位:2 * 仪表类型:0x10 */ //2015110017转成16进制0x781C 2381,0x781C一个寄存器,0x2381一个寄存器 // 781C 2381 遵从CDAB 变为 2381 781C //9089 30748 byte[] macAddress = { 0x47, 0x92, 0x50, 0xFE, 0xFF, 0x14, 0x2E, 0x84 }; var data = GetSettingData(2020040107, 4, 1, 1800, 0x10, 200, macAddress); //ushort[] data = { 0x10, 9089, 30748, 1, 2, 600, 0, 0x10, 200, 0, 38453, 65104, 5375, 33838 }; var read = await client.WriteAsync($"s={par.ModbusAddress};{startAddress}", data); var flag = true; if (read.IsSuccess) { } else { flag = false; FailLog.Write(redisClient, par, indicatorDiagram, logIotModbusPoll, "POST_LYQH_WG_IndicatorDiagramSetting", "功图设置异常!"); } indicatorDiagram.NetworkNode = ClientInfo.ManyIpAddress; if (flag == true || par.UseMockData) { indicatorDiagram.Mock = par.UseMockData; } //用于通过ServerEvent给调用着返回消息 if (!par.UserName.IsNullOrEmpty()) { ServerEventHelper.SendSseMessage(par.UserName, par.SessionId, flag ? 0 : -2, indicatorDiagram.ToJson().IndentJson()); } } 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_LYQH_DYMSetting(ModbusRtuOverTcp client, RedisClient redisClient, string messageString) { var par = messageString.FromJson <ControlRequest>(); try { var indicatorDiagram = new IotDataOilWellIndicatorDiagram() { AlarmCode = 0, AlarmMsg = "正常" }; var logIotModbusPoll = par.ConvertTo <LogIotModbusPoll>(); logIotModbusPoll.State = 0; logIotModbusPoll.Result = "ok"; var modbusAddress = par.ModbusAddress; indicatorDiagram.DeviceTypeId = par.DeviceTypeId; indicatorDiagram.Mock = false; ClientInfo.CurrentModbusPoolAddress = modbusAddress; var startAddress = (ushort)0x0C80; //写入10个寄存器 /* * 仪表类型:0x30 * 仪表编号:1801064 * modbus地址:5 * modbus槽位:1 * 采集周期:1800 * 预估深度:30000 * 预设声速:3400 * 接箍长度:9600 * 采样周期:400 * 电磁阀充电时间:10 * 采集模式:0x0 * 球阀动作时间:9 * 电磁阀动作时间:4 * 64位长地址:F2 98 50 FE FF 14 2E 84 */ byte[] macAddress = { 0xF2, 0x98, 0x50, 0xFE, 0xFF, 0x14, 0x2E, 0x84 }; var data = GetSettingData(1801064, 5, 1, 1800, 30000, 3400, 9600, 400, 10, 0x0, 9, 4, macAddress); //ushort[] data = { 0x30, 9088, 30748, 1, 1, 1800, 0, 30000, 3400, 9600, 400, 10, 0, 10, 20, 41130, 65140, 22527, 11 }; var read = await client.WriteAsync($"s={par.ModbusAddress};{startAddress}", data); var flag = true; if (read.IsSuccess) { } else { flag = false; FailLog.Write(redisClient, par, indicatorDiagram, logIotModbusPoll, "Get_LYQH_WG_IndicatorDiagram", "实时采集异常!"); } indicatorDiagram.NetworkNode = ClientInfo.ManyIpAddress; if (flag == true || par.UseMockData) { indicatorDiagram.Mock = par.UseMockData; } //用于通过ServerEvent给调用着返回消息 if (!par.UserName.IsNullOrEmpty()) { ServerEventHelper.SendSseMessage(par.UserName, par.SessionId, flag ? 0 : -2, indicatorDiagram.ToJson().IndentJson()); } } 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); } } }