Example #1
0
        /// <summary>
        /// Polulate the mapping list with DataName and PlcAddress relationship, extract Word/Bit address info and store in PlcWordAddress model
        /// </summary>
        /// <param name="plcDataAddressRecords">DataName and PlcAddress records list, raw from DB</param>
        /// <param name="plcDataAddressMappings">Empty mapping list</param>
        /// <returns>Filled mapping list, with Word/Bit address info</returns>
        public static List <PlcDataAddressMappingModel> PopulatePlcDataAddressMappings(List <PlcDataAddressRecordModel> plcDataAddressRecords,
                                                                                       List <PlcDataAddressMappingModel> plcDataAddressMappings)
        {
            foreach (var Record in plcDataAddressRecords)
            {
                //get the memory area code string
                string MemArea = Record.PlcAddress.Substring(0, 1);

                //get the word address as int
                int WordAddress;
                int.TryParse(Record.PlcAddress.Split('.')[0].Replace(MemArea, ""), out WordAddress);

                //get the bit address as int
                int?BitAddress = null;

                if (Record.PlcAddress.Contains("."))
                {
                    int bitAddress;
                    //int.TryParse(Record.PlcAddress.Split('.')[1], out bitAddress);
                    if (int.TryParse(Record.PlcAddress.Split('.')[1], out bitAddress))
                    {
                        BitAddress = (int?)bitAddress;
                    }

                    //BitAddress = int.TryParse(Record.PlcAddress.Split('.')[1], out bitAddress) ? BitAddress:bitAddress;
                }
                else
                {
                    BitAddress = null;
                }


                PlcDataAddressMappingModel temp = new PlcDataAddressMappingModel();
                temp.PlcDataAddressRecord       = Record;
                temp.PlcWordAddress.MemoryArea  = MemArea;
                temp.PlcWordAddress.WordAddress = WordAddress;
                temp.PlcWordAddress.BitAddress  = BitAddress;

                plcDataAddressMappings.Add(temp);
            }
            return(plcDataAddressMappings);
        }
Example #2
0
        public static List <PlcDataAddressMappingModel> AppendFullUintAddressMappings
            (List <TypeUintModel> AllTypeUint, List <PlcDataAddressMappingModel> plcDataAddressMappings)
        {
            List <PlcDataAddressMappingModel> tempList = new List <PlcDataAddressMappingModel>();
            //PlcDataAddressMappingModel temp = new PlcDataAddressMappingModel();
            int i     = 1;
            int maxId = plcDataAddressMappings.Max(x => x.PlcDataAddressRecord.id);

            foreach (var item in AllTypeUint)
            {
                PlcDataAddressMappingModel temp =
                    plcDataAddressMappings.Find(x => x.PlcDataAddressRecord.DataName == item.Name).DeepCopy();

                temp.PlcDataAddressRecord.id = maxId + i;
                temp.PlcWordAddress.WordAddress++;
                temp.PlcDataAddressRecord.PlcAddress = temp.PlcWordAddress.MemoryArea + temp.PlcWordAddress.WordAddress.ToString();
                tempList.Add(temp);
                i++;
            }
            plcDataAddressMappings.AddRange(tempList);
            return(plcDataAddressMappings);
        }