private ModbusTcpConfigItem GetModbusTcpConfigItemByRegAddr(ushort regAddr) { var items = from n in m_config.ModbusTcpItems where n.RegAddr == regAddr select n; ModbusTcpConfigItem mbTcpCfgItem = null; foreach (ModbusTcpConfigItem item in items) { mbTcpCfgItem = item; } return(mbTcpCfgItem); }
private List <ModbusTcpDataEntity> GetModbusTcpData(ModbusTcpResult mbTcpResult) { List <ModbusTcpDataEntity> mbTcpDataList = new List <ModbusTcpDataEntity>(); //查找对应的operation var ops = from n in m_config.ModbusOperations where n.Identifier == mbTcpResult.Identifier select n; ModbusTcpOperation mbTcpOp = null; foreach (ModbusTcpOperation op in ops) { mbTcpOp = op; } if (mbTcpOp != null) { for (int i = 0; i < mbTcpOp.RegCount; i++) { ushort currentAddr = (ushort)(mbTcpOp.StartAddr + i); ModbusTcpConfigItem mbTcpCfgItem = GetModbusTcpConfigItemByRegAddr(currentAddr); if (mbTcpCfgItem != null) { ModbusTcpDataEntity dataEntity = new ModbusTcpDataEntity(); dataEntity.RID = Guid.NewGuid().ToString(); dataEntity.Device_Addr = mbTcpCfgItem.DeviceAddr.ToString(); dataEntity.Station = m_config.ServerName; dataEntity.Sensor_Type = "-1"; dataEntity.Sensor_Name = mbTcpCfgItem.Name; dataEntity.Ori_Value = mbTcpResult.ResultData[i]; dataEntity.Trans_Value = dataEntity.Ori_Value * mbTcpCfgItem.Multiplier; dataEntity.Trans_Unit = mbTcpCfgItem.Unit; dataEntity.DataAcqTime = mbTcpResult.DataAcqTime; mbTcpDataList.Add(dataEntity); } } } return(mbTcpDataList); }
private List <ModbusTcpConfigItem> GetModbusTcpConfigItems() { List <ModbusTcpConfigItem> items = new List <ModbusTcpConfigItem>(); XmlNode itemsNode = GetModbusTcpConfigItemsNode(); if (itemsNode != null) { XmlNodeList itemNodeList = itemsNode.SelectNodes("item"); foreach (XmlNode itemNode in itemNodeList) { ModbusTcpConfigItem item = new ModbusTcpConfigItem(); if (itemNode.Attributes["device_addr"] != null) { string sDeviceAddr = itemNode.Attributes["device_addr"].Value; byte tempDeviceAddr; if (byte.TryParse(sDeviceAddr, out tempDeviceAddr)) { item.DeviceAddr = tempDeviceAddr; } } if (item.DeviceAddr == null) { continue; } if (itemNode.Attributes["addr"] != null) { string sAddr = itemNode.Attributes["addr"].Value; ushort tempAddr; if (ushort.TryParse(sAddr, out tempAddr)) { item.RegAddr = tempAddr; } } if (item.RegAddr == null) { continue; } if (itemNode.Attributes["name"] != null) { item.Name = itemNode.Attributes["name"].Value; } else { item.Name = string.Empty; } item.Multiplier = 1.0; if (itemNode.Attributes["multiplier"] != null) { string sMultiplier = itemNode.Attributes["multiplier"].Value; double dMultiplier; if (double.TryParse(sMultiplier, out dMultiplier)) { item.Multiplier = dMultiplier; } } if (itemNode.Attributes["unit"] != null) { item.Unit = itemNode.Attributes["unit"].Value; } else { item.Unit = string.Empty; } } } return(items); }