示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }