Example #1
0
        public List <List <string> > CreateOPCRows(ConveyorRow conveyor)
        {
            List <List <string> > OPCRows = new List <List <string> >();

            foreach (string signalMapping in conveyor.sSignalMapping)
            {
                int i           = 0;
                int signalIndex = 1;
                if (bSignal && (signalMapping != ""))
                {
                    var counts = baseParameter.SingleMappingTable.AsEnumerable().Count(p => p.Field <string>(baseParameter.SignalMappingColName.sType) == signalMapping);
                    List <List <string> > OPCDataRows = CreateOPCRows(counts, baseParameter.Stemp5, conveyor, conveyor.sSignalAddress[i], signalIndex);
                    signalIndex = signalIndex + OPCDataRows.Count();
                    OPCRows.AddRange(OPCDataRows);
                }
                i++;
            }

            if (bCommand && (conveyor.sCommandAddress != ""))
            {
                var CommandCounts = baseParameter.CommandMappingTable.AsEnumerable().Count(p => p.Field <string>(baseParameter.CommandMappingColName.sType) == conveyor.sCommandMapping);
                List <List <string> > OPCDataRows = CreateOPCRows(CommandCounts, baseParameter.Stemp6, conveyor, conveyor.sCommandAddress, 1);
                OPCRows.AddRange(OPCDataRows);
            }
            if (bHour && (conveyor.sRunningHours != ""))
            {
                int iHourCounts = 32;
                List <List <string> > OPCDataRows = CreateOPCRows(iHourCounts, baseParameter.Stemp7, conveyor, conveyor.sRunningHours, 1);
                OPCRows.AddRange(OPCDataRows);
            }
            return(OPCRows);
        }
        public List <ElementSeacrhStruct> CreateElements(ConveyorRow conveyor)
        {
            List <ElementSeacrhStruct> element = new List <ElementSeacrhStruct>();

            if (conveyor.sDrawOnViews.ToLower() == "all" || conveyor.sDrawOnViews.ToLower() == "level2only")
            {
                element.Add(new ElementSeacrhStruct(conveyor.sDisplayName, conveyor.sLevel1View, conveyor.sLevel2View, conveyor.sElementName));
            }
            return(element);
        }
Example #3
0
        //public abstract string ToString();
        //public abstract int ToInt();
        public virtual List <List <string> > CreateList(CreateDataMath <List <string>, ConveyorRow> dataMath)
        {
            List <List <string> > lOutPut = new List <List <string> >();

            foreach (DataRow selectConRow in baseParameter.TaglistTable.Rows)
            {
                var conveyor = new ConveyorRow(baseParameter.TaglistColName, selectConRow);
                lOutPut.AddRange(dataMath(conveyor));
            }
            return(lOutPut);
        }
Example #4
0
        /// <summary>
        /// 创建TextBlock标签XAML代码类
        /// </summary>
        /// <param name="conveyor"></param>
        /// <returns></returns>
        public List <BgTextBlock> CreatTextBlock(ConveyorRow conveyor)
        {
            List <BgTextBlock> textBlocks = new List <BgTextBlock>();
            BgTextBlock        textBlock  = new BgTextBlock();

            textBlock.Name   = string.Format("teblock_{0}_{1}_{2}_{3}", conveyor.sSystem, conveyor.sPLC, conveyor.sEquipmentLine, conveyor.sElementName);
            textBlock.Text   = string.Format("{0}.{1}", conveyor.sEquipmentLine, conveyor.sElementName);
            textBlock.Margin = initMargin;
            initMargin       = initMargin.MarginChange(initMargin, textBlock.iColWidth, textBlock.iColHight);
            textBlocks.Add(textBlock);
            return(textBlocks);
        }
Example #5
0
        public override List <T1> CreateList <T1>(CreateDataMath <T1, ConveyorRow> dataMath)
        {
            List <T1> lOutPut = new List <T1>();
            EnumerableRowCollection <DataRow> MainRows = LinqToTable();

            foreach (DataRow selectConRow in MainRows)
            {
                var conveyor = new ConveyorRow(baseParameter.TaglistColName, selectConRow);
                lOutPut.AddRange(dataMath(conveyor));
            }
            return(lOutPut);
        }
Example #6
0
        public virtual List <List <T1> > CreateList <T1>(CreateDataMath <T1, List <ConveyorRow> > dataMath)
        {
            List <List <T1> >  lOutPut   = new List <List <T1> >();
            List <ConveyorRow> conveyors = new List <ConveyorRow>();

            foreach (DataRow selectConRow in baseParameter.TaglistTable.Rows)
            {
                var conveyor = new ConveyorRow(baseParameter.TaglistColName, selectConRow);
                conveyors.Add(conveyor);
            }
            lOutPut.Add(dataMath(conveyors));
            return(lOutPut);
        }
Example #7
0
        //生成DataTable数据
        public override List <List <string> > CreateList(CreateDataMath <List <string>, ConveyorRow> dataMath)
        {
            List <List <string> > lOutPut    = new List <List <string> >();
            List <string>         opcColunms = new List <string>();

            foreach (string colunm in oPCColName)
            {
                opcColunms.Add(colunm);
            }
            lOutPut.Add(opcColunms);
            foreach (DataRow selectConRow in baseParameter.TaglistTable.Rows)
            {
                var conveyor = new ConveyorRow(baseParameter.TaglistColName, selectConRow);
                lOutPut.AddRange(dataMath(conveyor));
            }
            return(lOutPut);
        }
Example #8
0
        private string getKeepAliveValue()
        {
            var ConveyorRows = from p in baseParameter.TaglistTable.AsEnumerable()
                               where (p.Field <string>(baseParameter.TaglistColName.sElementName) == "KAL_MAIN")
                               select p;

            foreach (DataRow conveyorRow in ConveyorRows)
            {
                ConveyorRow conveyor = new ConveyorRow(baseParameter.TaglistColName, conveyorRow);
                keepAlive = string.Format("{0}_{1}_{2}_{3}_ACTIVE", conveyor.sSystem, conveyor.sPLC, conveyor.sEquipmentLine, conveyor.sElementName);
                break;
            }
            if (ConveyorRows == null)
            {
                keepAlive = "Constant";
            }
            return(keepAlive);
        }
Example #9
0
        public List <List <string> > CreateOPCInfoRows(ConveyorRow coneyorRow)
        {
            List <List <string> > opcInfoRows = new List <List <string> >();
            int signalCount = 0;

            foreach (string sSignalMapping in coneyorRow.sSignalMapping)
            {
                if (sSignalMapping != "")
                {
                    var SignalCounts = baseParameter.SingleMappingTable.AsEnumerable().Count(p =>
                                                                                             p.Field <string>(baseParameter.SignalMappingColName.sType) == sSignalMapping);
                    List <string> lSignalName = sSignalName(SignalCounts, baseParameter.Stemp5, coneyorRow, signalCount + 1);
                    signalCount += lSignalName.Count;
                    foreach (string ss in lSignalName)
                    {
                        List <string> opcInfoRow = new List <string>();
                        opcInfoRow.Add(ss);
                        opcInfoRow.Add("Subscribe");
                        opcInfoRow.Add(string.Format("S7_{0}", coneyorRow.sPLC));
                        opcInfoRow.Add("Main");
                        opcInfoRow.Add("u32");
                        opcInfoRows.Add(opcInfoRow);
                    }
                }
            }
            if (coneyorRow.sCommandMapping != "")
            {
                var CommandCounts = baseParameter.CommandMappingTable.AsEnumerable().Count(p =>
                                                                                           p.Field <string>(baseParameter.CommandMappingColName.sType) == coneyorRow.sCommandMapping);
                List <string> lSingName = sSignalName(CommandCounts, baseParameter.Stemp6, coneyorRow, 1);
                foreach (string ss in lSingName)
                {
                    List <string> opcInfoRow = new List <string>();
                    opcInfoRow.Add(ss);
                    opcInfoRow.Add("Command");
                    opcInfoRow.Add(string.Format("S7_{0}", coneyorRow.sPLC));
                    opcInfoRow.Add("Main");
                    opcInfoRow.Add("u32");
                    opcInfoRows.Add(opcInfoRow);
                }
            }
            return(opcInfoRows);
        }
Example #10
0
        /// <summary>
        ///  根据Mapping判断需要的数据地址条数,生成对应的sSignalName数目集合.
        /// </summary>
        /// <param name="iBitCounts">bit数量</param>
        /// <param name="sTemp"></param>
        /// <param name="sSystem"></param>
        /// <param name="sPlcLink"></param>
        /// <param name="sEquipmentLine"></param>
        /// <param name="sEquipmentElement"></param>
        /// <param name="iSignalNumber"></param>
        /// <returns></returns>
        internal List <string> sSignalName(int iBitCounts, string sTemp, ConveyorRow conveyorRow, int iSignalNumber)
        {
            List <string> ssignalName = new List <string>();
            int           iCounts;

            if (iBitCounts <= 32)
            {
                ssignalName.Add(string.Format(sTemp, conveyorRow.sSystem, conveyorRow.sPLC, conveyorRow.sEquipmentLine, conveyorRow.sElementName, iSignalNumber));
            }
            else
            {
                iCounts = (int)Math.Ceiling((float)iBitCounts / 32);
                for (int i = 0; i < iCounts; i++)
                {
                    ssignalName.Add(string.Format(sTemp, conveyorRow.sSystem, conveyorRow.sPLC, conveyorRow.sEquipmentLine, conveyorRow.sElementName, iSignalNumber + i));
                }
            }
            return(ssignalName);
        }
Example #11
0
        public override List <List <string> > CreateList(CreateDataMath <string, List <ConveyorRow> > dataMath)
        {
            EnumerableRowCollection <DataRow> MainRows = LinqToTable();
            List <List <string> >             lOutPut  = new List <List <string> >();
            var ELementLineGroups = from p in MainRows
                                    group p by
                                    new
            {
                system = p.Field <string>(baseParameter.TaglistColName.sSystem),
                plc    = p.Field <string> (baseParameter.TaglistColName.sPLC),
                line   = p.Field <string>(baseParameter.TaglistColName.sEquipmentLine),
                view   = p.Field <string>(baseParameter.TaglistColName.sLevel2View),
                draw   = p.Field <string>(baseParameter.TaglistColName.sDrawOnViews)
            }
            into pp
            select pp;

            foreach (var ELementLineGroup in ELementLineGroups)
            {
                List <string> lineSiganlData  = new List <string>();
                string        sSystem         = ELementLineGroup.Key.system;
                string        sPlcLink        = ELementLineGroup.Key.plc;
                string        sEquipmentLine  = ELementLineGroup.Key.line;
                string        sAreaLevel2view = ELementLineGroup.Key.view;
                string        sDraw           = ELementLineGroup.Key.draw;
                if (sDraw.ToLower() == "all")
                {
                    string sLinesSingle = string.Format("{0}_{1}_{2}_{3}_{4}_Line_AC", sSystem, sPlcLink, sEquipmentLine, sPlcLink, sAreaLevel2view);
                    string sDescrible   = string.Format("//LineCode for {0}", sLinesSingle) + "\r\n";
                    lineSiganlData.Add(sDescrible);
                    List <ConveyorRow> conveyorRows = new List <ConveyorRow>();
                    foreach (DataRow selectConRow in ELementLineGroup)
                    {
                        var conveyorRow = new ConveyorRow(baseParameter.TaglistColName, selectConRow);
                        conveyorRows.Add(conveyorRow);
                    }
                    lineSiganlData.AddRange(dataMath(conveyorRows));
                    lOutPut.Add(lineSiganlData);
                }
            }
            return(lOutPut);
        }
Example #12
0
        /// <summary>
        /// 创建L1画面元素XAML代码类(12307模式)
        /// </summary>
        /// <param name="conveyor"></param>
        /// <returns></returns>
        public List <BgElementCommonXaml> CreatL1CommonXaml12307(ConveyorRow conveyor)
        {
            List <BgElementCommonXaml> commonXamls = new List <BgElementCommonXaml>();



            if (conveyor.sDrawOnViews.ToLower() == "all" || conveyor.sDrawOnViews.ToLower() == "level1only")
            {
                int elementCount = createElementCount(conveyor.sStyleIdentifier);
                for (int i = 1; i <= elementCount; i++)
                {
                    BgElementCommonXaml commonXaml = new BgElementCommonXaml();

                    if (elementCount == 1)
                    {
                        commonXaml.Name = string.Format("{0}_{1}_{2}_{3}", conveyor.sSystem, conveyor.sPLC, conveyor.sEquipmentLine, conveyor.sElementName);
                    }
                    else
                    {
                        commonXaml.Name = string.Format("{0}_{1}_{2}_MULTI_{3}_{4}", conveyor.sSystem, conveyor.sPLC, conveyor.sEquipmentLine, i, conveyor.sElementName);
                    }

                    commonXaml.Style               = string.Format("{0}StaticResource {1}{2}", "{", "Conveyor_Straight_L1", "}");
                    commonXaml.ScadaLevel          = "Level1";
                    commonXaml.NavigateToView      = string.Format("BG_SCADA.Views.{0}", conveyor.sLevel2View);
                    commonXaml.ElementName         = string.Format("{0}_{1}_{2}_{3}", conveyor.sSystem, conveyor.sPLC, conveyor.sEquipmentLine, conveyor.sElementName);
                    commonXaml.ChooseLeftClickMode = "Navigation";
                    commonXaml.DisplayName         = conveyor.sDisplayName;
                    commonXaml.ElementXamlBehavior.behaviorName = "BGLineBehavior";
                    commonXaml.ControlObject = "BGLine";

                    //Margin位置计算
                    commonXaml.Margin = initMargin;
                    initMargin        = initMargin.MarginChange(initMargin, commonXaml.iColWidth, commonXaml.iColHight);

                    commonXaml.PowerBox           = conveyor.sPowerBox;
                    commonXaml.ElementType        = conveyor.sElementType;
                    commonXaml.PlcName            = conveyor.sPLC;
                    commonXaml.CommandSignalName  = commonXaml.ElementName + "_CM";
                    commonXaml.CommandMappingType = conveyor.sCommandMapping;
                    commonXaml.TypeDescription    = conveyor.sTypeDescription;

                    //判断RightClick是否存在,存在则为“True”
                    if (conveyor.sRightClick != "")
                    {
                        commonXaml.HasRightclickMenu = "True";
                        if (conveyor.sRightClick.Contains("Commands"))
                        {
                            commonXaml.Commands = string.Format(" Binding CommandSet[{0}#{1}]", commonXaml.CommandMappingType, commonXaml.CommandSignalName);
                        }
                    }

                    //L1 Signal个数为一
                    ElementXamlSignal signalGroup = new ElementXamlSignal();
                    signalGroup.Id              = string.Format("Signal{0}", 1);
                    signalGroup.UsePostfix      = "True";
                    signalGroup.Postfix         = string.Format("_{0}_{1}_Line_AC", conveyor.sPLC, conveyor.sLevel2View);
                    signalGroup.UsePrefix       = "False";
                    signalGroup.Prefix          = "";
                    signalGroup.KeepAliveType   = "Constant";
                    signalGroup.KeepAliveSignal = keepAlive;
                    commonXaml.ElementXamlSignal.Add(signalGroup);

                    if (conveyor.sEdgeColor == "")
                    {
                        conveyor.sEdgeColor = "Blue";
                    }
                    commonXaml.ElementXamlBackground.Color = string.Format("{0}StaticResource BG_COLOR_EDGE_{1}{2}", "{", conveyor.sEdgeColor, "}");

                    commonXamls.Add(commonXaml);
                }
            }
            return(commonXamls);
        }
Example #13
0
        /// <summary>
        /// 创建AlarmList行
        /// </summary>
        /// <param name="coneyorRow"></param>
        /// <returns></returns>
        public List <List <string> > CreateAlarmListRows(ConveyorRow coneyorRow)
        {
            List <List <string> > aLarmListRows = new List <List <string> >();
            string        sSelectColName        = baseParameter.SignalMappingColName.sType;
            string        _sSignalName;
            string        _sAckType;
            string        _sAlarmTag;
            string        _sPartName;
            string        _sAlarmDes;
            string        _sAlarmGrp;
            string        _sAlarmType = "";
            string        _sAlarmCategory;
            string        _sDelayed;
            string        _sConditionName;
            string        _sPriority;
            string        _sGeneralComment;
            string        _sLevel1View;
            string        _sLevel2View;
            string        _sResetable;
            string        _sResetBit;
            string        _sALNumber;
            string        _sCCTVRecording;
            string        _sElementID;
            string        _sResetSignal;
            string        _sExtraTagList;
            string        _sCISData;
            string        _sTechnical;
            List <string> lSignalName = new List <string>();

            foreach (string sSignalMapping in coneyorRow.sSignalMapping)
            {
                if (sSignalMapping != "")
                {
                    var SignalCounts = baseParameter.SingleMappingTable.AsEnumerable().Count(p =>
                                                                                             p.Field <string>(baseParameter.SignalMappingColName.sType) == sSignalMapping);
                    var SingMappingRows = from p in baseParameter.SingleMappingTable.AsEnumerable()
                                          where p.Field <string>(sSelectColName) == sSignalMapping
                                          select p;
                    List <string> lSignalName1 = sSignalName(SignalCounts, baseParameter.Stemp5, coneyorRow, lSignalName.Count() + 1);

                    foreach (DataRow dr in SingMappingRows)
                    {
                        if (dr[4].ToString().Substring(0, 2) == "AL")
                        {
                            int indexSingal = Convert.ToInt32(dr[1]);
                            _sSignalName = lSignalName1[indexSingal - 1];
                            int iAlarmPriority = Convert.ToInt32(dr[13]);
                            if (iAlarmPriority <= 40)
                            {
                                _sAckType = "AutoAck";
                            }
                            else
                            {
                                _sAckType = "Normal";
                            }
                            _sAlarmTag = string.Format("{0}_{1}_{2}_{3}_{4}", coneyorRow.sSystem, coneyorRow.sPLC, coneyorRow.sEquipmentLine,
                                                       coneyorRow.sElementName, dr[4].ToString());
                            string sPart       = dr[5].ToString();
                            Regex  reg         = new Regex(@"\d");
                            Match  match       = reg.Match(coneyorRow.sPLC);
                            string sCISPlcLink = reg.Replace(coneyorRow.sPLC, string.Format("#{0}", match.Groups[0].Value), 1);
                            match = reg.Match(coneyorRow.sElementName);
                            string sCISEquipmentElement = reg.Replace(coneyorRow.sElementName, string.Format("#{0}", match.Groups[0].Value), 1);

                            if (sPart != "Spare")
                            {
                                _sAlarmTag = string.Format("{0}_{1}_{2}_{3}_{4}_{5}", coneyorRow.sSystem, coneyorRow.sPLC, coneyorRow.sEquipmentLine,
                                                           coneyorRow.sElementName, sPart, dr[4].ToString());
                                _sPartName = coneyorRow.sDisplayName + "." + sPart;
                                match      = reg.Match(sPart);
                                string sCISPart = reg.Replace(sPart, string.Format("#{0}", match.Groups[0].Value), 1);
                                _sCISData = string.Format("{0}#.{1}.{2}#.{3}.{4}", coneyorRow.sSystem, sCISPlcLink, coneyorRow.sEquipmentLine, sCISEquipmentElement, sCISPart);
                            }

                            else
                            {
                                _sAlarmTag = string.Format("{0}_{1}_{2}_{3}_{4}", coneyorRow.sSystem, coneyorRow.sPLC, coneyorRow.sEquipmentLine,
                                                           coneyorRow.sElementName, dr[4].ToString());

                                _sPartName = coneyorRow.sDisplayName;
                                _sCISData  = string.Format("{0}#.{1}.{2}#.{3}", coneyorRow.sSystem, sCISPlcLink, coneyorRow.sEquipmentLine, sCISEquipmentElement);
                            }

                            _sAlarmDes = dr[9].ToString();
                            _sAlarmGrp = coneyorRow.sAlarmTree;
                            if (iAlarmPriority <= 20)
                            {
                                _sAlarmType = "Alarm Information";
                            }
                            else if (iAlarmPriority <= 40)
                            {
                                _sAlarmType = "Alarm Trivial";
                            }
                            else if (iAlarmPriority <= 60)
                            {
                                _sAlarmType = "Alarm Minor";
                            }
                            else if (iAlarmPriority <= 80)
                            {
                                _sAlarmType = "Alarm Major";
                            }
                            else if (iAlarmPriority > 80)
                            {
                                _sAlarmType = "Alarm Critical";
                            }
                            _sAlarmCategory = "";
                            _sDelayed       = "0";
                            int iBitVal = (int)Math.Log(Convert.ToInt64(dr[3]), 2);
                            if (iBitVal < 10)
                            {
                                _sConditionName = string.Format("AlarmWordBit0{0}", iBitVal);
                            }
                            else
                            {
                                _sConditionName = string.Format("AlarmWordBit{0}", iBitVal);
                            }

                            _sPriority       = iAlarmPriority.ToString();
                            _sGeneralComment = "";
                            _sLevel1View     = coneyorRow.sLevel1View;
                            _sLevel2View     = coneyorRow.sLevel2View;
                            _sResetable      = "-";
                            _sResetBit       = iBitVal.ToString();
                            _sALNumber       = dr[4].ToString();
                            _sCCTVRecording  = "-";
                            _sElementID      = string.Format("{0}_{1}_{2}_{3}", coneyorRow.sSystem, coneyorRow.sPLC, coneyorRow.sEquipmentLine, coneyorRow.sElementName);
                            _sResetSignal    = "";
                            _sExtraTagList   = "";
                            _sTechnical      = "Flase";
                            List <string> alarmListRow = new List <string>();
                            alarmListRow.Add(_sSignalName);
                            alarmListRow.Add(_sAckType);
                            alarmListRow.Add(_sAlarmTag);
                            alarmListRow.Add(_sPartName);
                            alarmListRow.Add(_sAlarmDes);
                            alarmListRow.Add(_sAlarmGrp);
                            alarmListRow.Add(_sAlarmType);
                            alarmListRow.Add(_sAlarmCategory);
                            alarmListRow.Add(_sDelayed);
                            alarmListRow.Add(_sConditionName);
                            alarmListRow.Add(_sPriority);
                            alarmListRow.Add(_sGeneralComment);
                            alarmListRow.Add(_sLevel1View);
                            alarmListRow.Add(_sLevel2View);
                            alarmListRow.Add(_sResetable);
                            alarmListRow.Add(_sResetBit);
                            alarmListRow.Add(_sALNumber);
                            alarmListRow.Add(_sCCTVRecording);
                            alarmListRow.Add(_sElementID);
                            alarmListRow.Add(_sResetSignal);
                            alarmListRow.Add(_sExtraTagList);
                            alarmListRow.Add(_sCISData);
                            alarmListRow.Add(_sTechnical);
                            aLarmListRows.Add(alarmListRow);
                        }
                    }
                }
            }
            return(aLarmListRows);
        }
Example #14
0
        public List <List <string> > CreateCMCRows(ConveyorRow conveyor)
        {
            List <List <string> > llCMCRows = new List <List <string> >();
            List <string>         _CMCRows  = new List <string>();

            //SignalName行

            var SignalName = string.Format("//{0}_{1}_{2}_{3}", conveyor.sSystem, conveyor.sPLC, conveyor.sEquipmentLine, conveyor.sElementName);

            _CMCRows.Add(SignalName);
            if (SignalName.Contains("ENERGYSAVE"))
            {
                _CMCRows.Add("//" + conveyor.sCommandMapping);
                _CMCRows.Add("//" + conveyor.sCommandAddress);
                string PLCAddress = creatDBAddress(conveyor.sCommandAddress, 0);
                _CMCRows.Add(PLCAddress);
            }
            else
            {
                foreach (var signalMapping_Adderss in conveyor.sSignalMapping_Adderss)
                {
                    _CMCRows.Add("//" + signalMapping_Adderss.Key);
                    _CMCRows.Add("//" + signalMapping_Adderss.Value);
                    var dataRows = from p in baseParameter.SingleMappingTable.AsEnumerable()
                                   where p.Field <string>(baseParameter.SignalMappingColName.sType) == signalMapping_Adderss.Key
                                   &&
                                   p.Field <string>(baseParameter.SignalMappingColName.sAlarmStatusNumber).ToLower() != "spare"
                                   select p;
                    foreach (var dataRow in dataRows)
                    {
                        var    col        = baseParameter.SignalMappingColName;
                        var    word       = Convert.ToInt32(dataRow[col.sWord]);
                        var    bit        = Convert.ToInt32(dataRow[col.sBit]);
                        int    offset     = (word - 1) * 4 + bit / 8;
                        int    dBxbit     = bit % 8;
                        string PLCAddress = creatDBAddress(signalMapping_Adderss.Value, offset, dBxbit, true);
                        _CMCRows.Add(PLCAddress);
                    }
                }
                if (conveyor.sCommandMapping != "" && conveyor.sCommandAddress != "" && conveyor.sCommandAddress.ToLower() != "no_signal")
                {
                    _CMCRows.Add("//" + conveyor.sCommandMapping);
                    _CMCRows.Add("//" + conveyor.sCommandAddress);
                    var dataRows = from p in baseParameter.CommandMappingTable.AsEnumerable()
                                   where p.Field <string>(baseParameter.CommandMappingColName.sType) == conveyor.sCommandMapping
                                   &&
                                   p.Field <string>(baseParameter.CommandMappingColName.sCommandText).ToLower() != "spare"
                                   select p;
                    foreach (var dataRow in dataRows)
                    {
                        var    col        = baseParameter.CommandMappingColName;
                        var    word       = Convert.ToInt32(dataRow[col.sElementLink]);
                        var    bit        = Convert.ToInt32(dataRow[col.sBit]);
                        int    offset     = (word - 1) * 4 + bit / 8;
                        int    dBxbit     = bit % 8;
                        string PLCAddress = creatDBAddress(conveyor.sCommandAddress, offset, dBxbit, true);
                        _CMCRows.Add(PLCAddress);
                    }
                }
            }

            llCMCRows.Add(_CMCRows);
            return(llCMCRows);
        }
Example #15
0
        public List <List <TestSheetRow> > CreateTestRows(ConveyorRow conveyor)
        {
            List <TestSheetRow> testSheetRows = new List <TestSheetRow>();

            //SignalName行
            TestSheetRow signalNameRow = new TestSheetRow();

            signalNameRow.SignalName_Mapping = string.Format("//{0}_{1}_{2}_{3}", conveyor.sSystem, conveyor.sPLC, conveyor.sEquipmentLine, conveyor.sElementName);
            testSheetRows.Add(signalNameRow);

            foreach (var signalMapping_Adderss in conveyor.sSignalMapping_Adderss)
            {
                //SignalMapping Name行
                TestSheetRow signalMapping = new TestSheetRow();
                signalMapping.SignalName_Mapping = "//" + signalMapping_Adderss.Key;
                testSheetRows.Add(signalMapping);

                //SignalAddress Name行
                TestSheetRow signalAddress = new TestSheetRow();
                signalAddress.SignalName_Mapping = "//" + signalMapping_Adderss.Value;
                testSheetRows.Add(signalAddress);

                //signalMapping state alarm 行
                var dataRows = from p in baseParameter.SingleMappingTable.AsEnumerable()
                               where p.Field <string>(baseParameter.SignalMappingColName.sType) == signalMapping_Adderss.Key
                               &&
                               p.Field <string>(baseParameter.SignalMappingColName.sAlarmStatusNumber).ToLower() != "spare"
                               select p;
                foreach (var dataRow in dataRows)
                {
                    TestSheetRow datas  = new TestSheetRow();
                    var          col    = baseParameter.SignalMappingColName;
                    var          word   = Convert.ToInt32(dataRow[col.sWord]);
                    var          bit    = Convert.ToInt32(dataRow[col.sBit]);
                    int          offset = (word - 1) * 4 + bit / 8;
                    int          dBxbit = bit % 8;
                    if (signalMapping_Adderss.Value != "" && signalMapping_Adderss.Value != null)
                    {
                        datas.PLCAddress = creatDBAddress(signalMapping_Adderss.Value, offset, dBxbit, true);
                    }
                    else
                    {
                        datas.PLCAddress = "";
                    }
                    datas.Function     = dataRow[col.sAlarmStatusNumber].ToString();
                    datas.State        = dataRow[col.sStateRef].ToString();
                    datas.FunctionText = dataRow[col.sFunctionalText].ToString();
                    datas.StateText    = dataRow[col.sStateText].ToString();
                    if (col.sStateColor != "" && col.sStateColor != null)
                    {
                        datas.Color = dataRow[col.sStateColor].ToString();
                    }
                    datas.Level1view = conveyor.sLevel1View;
                    datas.Level2view = conveyor.sLevel2View;
                    datas.LeftClick  = conveyor.sLeftClick;
                    datas.PartName   = dataRow[col.sPartName].ToString();
                    testSheetRows.Add(datas);
                }
            }
            List <List <TestSheetRow> > llTestSheetRows = new List <List <TestSheetRow> >();

            llTestSheetRows.Add(testSheetRows);
            return(llTestSheetRows);
        }
Example #16
0
        /// <summary>
        /// 创建L1画面元素XAML代码类(11302模式)
        /// </summary>
        /// <param name="conveyor"></param>
        /// <returns></returns>
        public List <BgElementCommonXaml> CreatL1CommonXaml11302(ConveyorRow conveyor)
        {
            List <BgElementCommonXaml> commonXamls = new List <BgElementCommonXaml>();


            //判断Element Style 及个数
            if (conveyor.sDrawOnViews.ToLower() == "all" || conveyor.sDrawOnViews.ToLower() == "level1only")
            {
                int elementCount = createElementCount(conveyor.sStyleIdentifier);
                for (int i = 1; i <= elementCount; i++)
                {
                    BgElementCommonXaml commonXaml = new BgElementCommonXaml();

                    if (elementCount == 1)
                    {
                        commonXaml.Name = string.Format("{0}_{1}_{2}_{3}", conveyor.sSystem, conveyor.sPLC, conveyor.sEquipmentLine, conveyor.sElementName);
                    }
                    else
                    {
                        commonXaml.Name = string.Format("{0}_{1}_{2}_MULTI_{3}_{4}", conveyor.sSystem, conveyor.sPLC, conveyor.sEquipmentLine, i, conveyor.sElementName);
                    }

                    commonXaml.Style               = string.Format("{0}StaticResource {1}{2}", "{", "Conveyor_Straight_L1", "}");
                    commonXaml.ScadaLevel          = "Level1";
                    commonXaml.NavigateToView      = string.Format("BG_SCADA.Views.{0}", conveyor.sLevel2View);
                    commonXaml.ElementName         = string.Format("{0}_{1}_{2}_{3}", conveyor.sSystem, conveyor.sPLC, conveyor.sEquipmentLine, conveyor.sElementName);
                    commonXaml.ChooseLeftClickMode = "Navigation";
                    commonXaml.DisplayName         = conveyor.sDisplayName;

                    //当BehaviorName为空时,通过SignalMapping转换.
                    if (conveyor.sBehaviorName == "")
                    {
                        foreach (string signalMapping in conveyor.sSignalMapping)
                        {
                            if (conveyor.sBehaviorName == "")
                            {
                                conveyor.sBehaviorName = signalMapping;
                            }
                            else
                            {
                                conveyor.sBehaviorName += signalMapping.Split(Convert.ToChar("_")).Last();
                            }
                        }
                    }
                    commonXaml.ControlObject = conveyor.sBehaviorName;
                    commonXaml.ElementXamlBehavior.behaviorName = string.Format("{0}Behavior", conveyor.sBehaviorName);

                    //Margin位置计算
                    commonXaml.Margin = initMargin;
                    initMargin        = initMargin.MarginChange(initMargin, commonXaml.iColWidth, commonXaml.iColHight);

                    commonXaml.PowerBox           = conveyor.sPowerBox;
                    commonXaml.ElementType        = conveyor.sElementType;
                    commonXaml.PlcName            = conveyor.sPLC;
                    commonXaml.CommandSignalName  = commonXaml.ElementName + "_CM";
                    commonXaml.CommandMappingType = conveyor.sCommandMapping;
                    commonXaml.TypeDescription    = conveyor.sTypeDescription;

                    //判断RightClick是否存在,存在则为“True”
                    if (conveyor.sRightClick != "")
                    {
                        commonXaml.HasRightclickMenu = "True";
                        if (conveyor.sRightClick.Contains("Commands"))
                        {
                            commonXaml.Commands = string.Format(" Binding CommandSet[{0}#{1}]", commonXaml.CommandMappingType, commonXaml.CommandSignalName);
                        }
                    }

                    //signal个数计算并遍历生成ElementXamlSignal集合
                    int signalCounts = 0;
                    foreach (string signalMapping in conveyor.sSignalMapping)
                    {
                        var bitCounts = baseParameter.SingleMappingTable.AsEnumerable().Count(p => p.Field <string>(baseParameter.SignalMappingColName.sType) == signalMapping);
                        if (bitCounts != 0)
                        {
                            signalCounts += (int)Math.Ceiling((float)bitCounts / 32);
                        }
                    }
                    for (int j = 1; j <= signalCounts; j++)
                    {
                        ElementXamlSignal signalGroup = new ElementXamlSignal();
                        signalGroup.Id              = string.Format("Signal{0}", j);
                        signalGroup.UsePostfix      = "True";
                        signalGroup.Postfix         = string.Format("_SIGNAL_{0}", j);
                        signalGroup.UsePrefix       = "False";
                        signalGroup.Prefix          = "";
                        signalGroup.KeepAliveType   = "Constant";
                        signalGroup.KeepAliveSignal = keepAlive;
                        commonXaml.ElementXamlSignal.Add(signalGroup);
                    }
                    if (conveyor.sEdgeColor == "")
                    {
                        conveyor.sEdgeColor = "Blue";
                    }
                    commonXaml.ElementXamlBackground.Color = string.Format("{0}StaticResource BG_COLOR_EDGE_{1}{2}", "{", conveyor.sEdgeColor, "}");

                    commonXamls.Add(commonXaml);
                }
            }
            return(commonXamls);
        }
Example #17
0
        private List <List <string> > CreateOPCRows(int iBits, string sTemp, ConveyorRow conveyor, string sAddress, int index)
        {
            OPCDataRow            opcRow      = new OPCDataRow();
            List <List <string> > opcDataRows = new List <List <string> >();
            string sTagName;
            int    iCounts;
            string sDaType = default(string);

            if (iBits <= 32)
            {
                List <string> opcDataRow = new List <string>();
                sTagName = string.Format(sTemp, conveyor.sSystem, conveyor.sPLC, conveyor.sEquipmentLine, conveyor.sElementName, index);
                iCounts  = (int)Math.Ceiling((float)iBits / 8);
                switch (iCounts)
                {
                case 0:
                    break;

                case 1:
                    sDaType = OPCDataType.sByte;
                    break;

                case 2:
                    sDaType = OPCDataType.sWord;
                    break;

                case 3:
                    break;

                case 4:
                    sDaType = OPCDataType.sDWord;
                    break;
                }
                opcRow.sTagName  = sTagName;
                opcRow.sAddress  = sAddress;
                opcRow.sDataType = sDaType;
                foreach (string s in opcRow)
                {
                    opcDataRow.Add(s);
                }
                opcDataRows.Add(opcDataRow);
            }
            else
            {
                iCounts = (int)Math.Ceiling((float)iBits / 32);
                for (int i = 0; i < iCounts; i++)
                {
                    List <string> opcDataRow = new List <string>();
                    sTagName        = string.Format(sTemp, conveyor.sSystem, conveyor.sPLC, conveyor.sEquipmentLine, conveyor.sElementName, i + index);
                    sDaType         = OPCDataType.sDWord;
                    opcRow.sTagName = sTagName;
                    string sAddr = creatDBAddress(sAddress, i * 4);
                    opcRow.sAddress  = sAddr;
                    opcRow.sDataType = sDaType;
                    foreach (string s in opcRow)
                    {
                        opcDataRow.Add(s);
                    }
                    opcDataRows.Add(opcDataRow);
                }
            }
            return(opcDataRows);
        }