public static void BitsToData() { foreach (var typeBool in TypeBools) { //PlcWordModel targetWord = new PlcWordModel();//new PlcBitModel targetBit = new PlcBitModel(); targetBit = BitMap.Find(m => m.DataName == typeBool.Name).Bit; if (targetBit.MemArea == "W" && targetBit.WordAddress == 1 && targetBit.BitAddress == 15 && targetBit.Value == 1) { ; } typeBool.SetValue(PlcBits.Find(b => b.MemArea == targetBit.MemArea && b.WordAddress == targetBit.WordAddress && b.BitAddress == targetBit.BitAddress).Value); //targetWord = PlcWRWords.FirstOrDefault(w => w.MemoryArea == targetBit.MemArea && w.WordAddress == targetBit.WordAddress);//new //if (targetWord!=null) //{ // typeBool.SetValue(targetWord.plcBits.Find(b => b.BitAddress == targetBit.BitAddress).Value);//new //} //else //{ // targetWord=PlcHRWords.FirstOrDefault(w => w.MemoryArea == targetBit.MemArea && w.WordAddress == targetBit.WordAddress); // typeBool.SetValue(targetWord.plcBits.Find(b => b.BitAddress == targetBit.BitAddress).Value);//new //} } }
public static void UpdateStringToWords(PlcMemArea memArea, SortedList <int, string> sList) { string MemArea = null; List <PlcWordModel> listInUse = new List <PlcWordModel>(); List <PlcBitModel> bitListInUse = new List <PlcBitModel>(); switch (memArea) { case PlcMemArea.WR: listInUse = PlcDataMapper.PlcWRWords; MemArea = "W"; break; case PlcMemArea.HR: listInUse = PlcDataMapper.PlcHRWords; MemArea = "H"; break; case PlcMemArea.DM: listInUse = PlcDataMapper.PlcDMWords; MemArea = "D"; break; case PlcMemArea.CIO: break; case PlcMemArea.WR_bit: bitListInUse = PlcDataMapper.PlcBits; MemArea = "W"; break; case PlcMemArea.HR_bit: bitListInUse = PlcDataMapper.PlcBits; MemArea = "H"; break; case PlcMemArea.AR: break; default: //listInUse = new List<PlcWordModel>(); break; } if (memArea == PlcMemArea.DM) { foreach (var addrStr in sList) { int address = addrStr.Key; for (int i = 0; i < addrStr.Value.Length / 4; i++) { listInUse.Find(x => x.WordAddress == address) .SetValue(addrStr.Value.Substring(4 * i, 4)); address++; } } } if (memArea == PlcMemArea.HR_bit || memArea == PlcMemArea.WR_bit) { foreach (var addrStr in sList) { int wordAddress = addrStr.Key; //int bitAddress = 0; int bitAddress = 15;//WRstr format is MSB->LSB string binStr = BinaryConvert16(addrStr.Value); for (int i = 0; i < binStr.Length; i++) { PlcBitModel tempBit = PlcDataMapper.PlcBits.FirstOrDefault(x => x.MemArea == MemArea && x.WordAddress == wordAddress && x.BitAddress == bitAddress); if (tempBit != null) { tempBit.SetValue(binStr.Substring(i, 1)); } bitAddress--; //if (bitAddress==16) if (bitAddress == -1) { wordAddress++; //bitAddress = 0; bitAddress = 15; } } } } // if (memArea == PlcMemArea.DM) // { //for (int i = 0; i < S.Length / 4 - 1; i++) //{ // PlcDataMapper.PlcDMWords.Find(x => x.MemoryArea == MemArea && x.WordAddress == OmronFINsClass.StartingId_DM + i) // .SetValue(S.Substring(4 * i, 4)); // retList.Add(new PlcWordModel(memArea, i, S.Substring(4 + 4 * i, 4))); //} // } //else if (memArea == PlcMemArea.HR) //{ // foreach (var addrStr in sList) // { // int address = addrStr.Key; // for (int i = 0; i < addrStr.Value.Length / 4; i++) // { // PlcDataMapper.PlcHRWords.Find(x => x.WordAddress == address) // .SetValue(addrStr.Value.Substring(4 * i, 4)); // address++; // } // } // //for (int i = 0; i < S.Length / 4 - 1; i++) // //{ // // PlcDataMapper.PlcHRWords.Find(x => x.MemoryArea == MemArea && x.WordAddress == OmronFINsClass.StartingId_HR + i) // // .SetValue(S.Substring(4 * i, 4)); // // //retList.Add(new PlcWordModel(memArea, i, S.Substring(4 + 4 * i, 4))); // //} //} //else if (memArea == PlcMemArea.WR) //{ // foreach (var addrStr in sList) // { // int address = addrStr.Key; // for (int i = 0; i < addrStr.Value.Length / 4; i++) // { // PlcDataMapper.PlcWRWords.Find(x => x.WordAddress == address) // .SetValue(addrStr.Value.Substring(4 * i, 4)); // address++; // } // } //} }