Beispiel #1
0
 public mCategory()
 {
     Keys = new ObservableCollection<mKey>();
     SelectedKey = null;
     S7items = new ObservableCollection<mSymbolTableItem>();
     DB = new  mDataBlock();
 }
Beispiel #2
0
 public mCategory(int initID, string initName, string initDescription)
 {
     Name = initName;
     Description = initDescription;
     Keys = new ObservableCollection<mKey>();
     SelectedKey = null;
     S7items = new ObservableCollection<mSymbolTableItem>();
     DB = new mDataBlock();
 }
Beispiel #3
0
 public void addDB(mDataBlock newDB)
 {
     DB = newDB;
 }
Beispiel #4
0
        /// <summary>
        /// Создание списка элементов с неповторяющимся номеров блока данных
        /// </summary>
        /// <returns></returns>
        private bool generate_UniqDBList()
        {
            bool isGenerated = false;

            if (!isEmptyCategories())
            {
                List<String> SysNumList = new List<string>();
                List<mSymbolTableItem> uniqSymbolsList = new List<mSymbolTableItem>();

                foreach (mCategory cat in this.categories.OrderBy(k => k.Id))
                {
                    foreach (mSymbolTableItem el in cat.S7items.OrderByDescending(key => key.DB_ArrayIndex))
                    {
                        if (!SysNumList.Contains(el.DB_FullName))
                        {
                            SysNumList.Add(el.DB_FullName);
                            uniqSymbolsList.Add(el);
                            isGenerated = true;
                        }
                    }
                    SysNumList.Clear();

                    foreach (mSymbolTableItem el in uniqSymbolsList.OrderBy(k => k.SystemNumber))
                    {
                        mDataBlock db = new mDataBlock();
                        // 11Y
                        if (el.DB_ArrayName.Equals("PID"))
                        {
                            db.SymbolName = "PID" + el.Codename;
                            db.Title = el.SignalComment;
                        }
                        else
                        {
                            db.SymbolName = el.SystemNumber + cat.DB.Symbol;
                            // Sensors 4-20
                            db.Title = cat.Description;
                        }

                        // DB111
                        db.FullName = el.DB_FullName;

                        // SNS_UDT
                        db.UDT_Name = cat.DB.UDT_Name;

                        // Rounded size of DB Array[]
                        db.MaxArrayIndex = roundToFive(el.DB_ArrayIndex);

                        // SNS
                        db.ArrayName = cat.DB.ArrayName;

                        uniqDBlist.Add(db);

                        isGenerated = true;
                    }

                    uniqSymbolsList.Clear();
                }
            }

            return isGenerated;
        }
Beispiel #5
0
        /// <summary>
        /// Генерация текста исходного кода в синтаксисе STL 
        /// для последующего создания Instance DB на базе FB1 программе ПЛК
        /// </summary>
        /// <returns></returns>
        private List<String> generateSTL_instanceDB(mDataBlock db)
        {
            List<string> list = new List<string>();

                list.Add("DATA_BLOCK " + db.FullName);
                list.Add("TITLE =" + db.Title);
                list.Add("{ S7_techparam := 'S7WRSAPX.Application' }");
                list.Add("AUTHOR:  Kratovi4");
                list.Add("FAMILY : STDCONT");
                list.Add("VERSION : 1.0");
                list.Add("FB 1");
                list.Add("BEGIN");
                list.Add("END_DATA_BLOCK");
                list.Add("\r\n");

            return list;
        }
Beispiel #6
0
        /// <summary>
        /// Генерация текста исходного кода в синтаксисе STL 
        /// для последующего создания Data Block в программе ПЛК
        /// </summary>
        /// <returns></returns>
        private List<String> generateSTL_DB(mDataBlock db)
        {
            List<string> list = new List<string>();

                list.Add("DATA_BLOCK " + db.FullName);
                list.Add("TITLE =" + db.Title);
                list.Add("AUTHOR:  Kratovi4");
                list.Add("VERSION : 2.0");
                list.Add("STRUCT");
                list.Add(db.ArrayName + ": ARRAY  [1 .. " + db.MaxArrayIndex + "] OF //Array");
                list.Add("\"" + db.UDT_Name + "\";");
                list.Add("END_STRUCT ;");
                list.Add("BEGIN");
                list.Add("END_DATA_BLOCK");
                list.Add("\r\n");

            return list;
        }
Beispiel #7
0
        private string generateSCL_LogicCode(mDataBlock db)
        {
            string s = "";

                // we need something like this: Logic_SNS(SENSOR:="11A".SNS[i]); // 20
                s = "Logic_";
                s += db.ArrayName + "(" + db.ArrayName + ":=";
                s += "\"" + db.SymbolName + "\"";
                s += "." + db.ArrayName + "[i]";

                if (db.ArrayName.Equals("SNS") | db.ArrayName.Equals("SNC"))
                {
                    s += ");  // " + db.MaxArrayIndex.ToString();
                }
                else
                {
                    s += ",Clock:=clk); // " + db.MaxArrayIndex.ToString();
                }

            return s;
        }