MES基于C#开发计划管理组件集成WinCC中使用

MES系统通常都会与SCADA系统集成使用,尤其具备中控管理需求的工厂,集控SCADA需要集成MES系统的计划工单数据实现工单数据、工艺配方数据、SN数据、打码数据等下发,执行状态、关键参数反馈等上传。本文介绍在WinCC画面集成基于C#开发的计划管理界面,以下代码主要是C#开发计划管理组件代码。

项目代码:https://download.youkuaiyun.com/download/bjhtgy/89696770

namespace ProUserLib
{
    [ProgId("ProUserLib.BatchPlan")]
    [ClassInterface(ClassInterfaceType.AutoDual)]
    public partial class BatchPlan : UserControl
    {
        BusinessLogic.CommonLogic logic = null;
        BusinessLogic.WebServiceLogic weblogic = null;
        BusinessLogic.MqLogic mq = null;
        BusinessLogic.HandleMesXmlLogic hxml = null;
        public BatchPlan()
        {
            InitializeComponent();
            logic = (BusinessLogic.CommonLogic)(Activator.GetObject(typeof(BusinessLogic.CommonLogic), "tcp://" + ServerIp + ":8505/CommonLogic"));
            weblogic = (BusinessLogic.WebServiceLogic)(Activator.GetObject(typeof(BusinessLogic.WebServiceLogic), "tcp://" + ServerIp + ":8505/WebServiceLogic"));
            mq = (BusinessLogic.MqLogic)(Activator.GetObject(typeof(BusinessLogic.MqLogic), "tcp://" + ServerIp + ":8601/MqLogic"));
            hxml = (BusinessLogic.HandleMesXmlLogic)(Activator.GetObject(typeof(BusinessLogic.HandleMesXmlLogic), "tcp://" + ServerIp + ":8601/HandleMesXmlLogic"));
            //mq.queuemanagername = QueueManagerName;
        }

        private string m_serverIp = "172.17.129.97";
        public string ServerIp
        {
            get { return m_serverIp; }
            set { m_serverIp = value; }
        }

        //private string m_QueueManagerName = "cczs2";
        //private string m_QueueName = "channelformes";
        //public string QueueManagerName
        //{
        //    get { return m_QueueManagerName; }
        //    set { m_QueueManagerName = value; }
        //}
        //public string QueueName
        //{
        //    get { return m_QueueName; }
        //    set { m_QueueName = value; }
        //}
        /// <summary>
        ///  更新生产单元计划
        /// </summary>
        /// <param name="m_startorend">开始或者结束 0-开始 1-结束</param>
        /// <param name="m_unitno">生产单元编码</param>
        /// <param name="m_batch">批次号</param>
        /// <param name="m_grade">班次</param>
        /// <returns>更新是否成功 0-不成功 1-成功</returns>
        public string UpdatePlanUnit(string m_startorend, string m_unitno, string m_batch, string m_grade)
        {
            string m_time="";
            ArrayList field = new ArrayList();
            if (m_startorend == "0")
            {
                field.Add("PlanStartDate");
                field.Add("ProductGrade");

            }
            else
            {
                field.Add("PlanEndDate");
                field.Add("ProductGrade");

            }
            field.Add("PlanState");
            ArrayList value = new ArrayList();
            if (m_startorend == "0")
            {
                m_time=System.DateTime.Now.ToString();
                value.Add(System.DateTime.Now.ToString());
                value.Add(m_grade);
                value.Add(6);
            }
            else
            {
                 m_time=System.DateTime.Now.ToString();
                value.Add(System.DateTime.Now.ToString());
                value.Add(m_grade);
                value.Add(7);
            }
            ArrayList type = new ArrayList();
            type.Add("string");
            type.Add("string");
            type.Add("int");


            ArrayList confield = new ArrayList();
            confield.Add("Batch");
            confield.Add("productionUnit");
            ArrayList convalue = new ArrayList();
            convalue.Add(m_batch);
            convalue.Add(int.Parse(m_unitno));
            ArrayList contype = new ArrayList();
            contype.Add("string");
            contype.Add("int");

            int flag = logic.UpDateClass("T_BatchPlan", field, value, type, confield, convalue, contype);
            FeedBackUnitPlanTime(m_startorend, m_batch, m_unitno, m_time);// m_startorend, string m_unitno, string m_batch, string m_grade)
            if (flag == 1)
            {
                return "1";
            }
            else
            {
                return "0";
            }
        }

        /// <summary>
        /// 更新生产段计划,需要查询工艺段包含的生产单元
        /// </summary>
        /// <param name="m_startorend">开始或者结束 0-开始 1-结束</param>
        /// <param name="m_unitno">生产段编码</param>
        /// <param name="m_batch">批次号</param>
        ///  /// <param name="m_grade">班次</param>
        public void UpdatePlanSeg(string m_startorend, string m_segno, string m_batch, string m_grade)
        {
            ArrayList field = new ArrayList();
            field.Add("PuNo");

            ArrayList confield = new ArrayList();
            confield.Add("Sno");
            ArrayList convalue = new ArrayList();
            convalue.Add(int.Parse(m_segno));
            ArrayList contype = new ArrayList();
            contype.Add("int");

            DataSet ds = logic.SearchClass("T_ProductionUnit", field, confield, convalue, contype);
            if (ds != null)
            {
                if (ds.Tables.Count > 0)
                {
                    DataTable dt = ds.Tables[0];
                    if (dt.Rows.Count > 0)
                    {
                        foreach (DataRow dr in dt.Rows)
                        {
                            string puno = dr[0].ToString();
                            UpdatePlanUnit(m_startorend, puno, m_batch, m_grade);
                        }
                    }
                }
            }
        }

        /// <summary>
        /// 记录贮柜信息
        /// </summary>
        /// <param name="m_unitno">生产单元</param>
        /// <param name="m_batch">批次号</param>
        /// <param name="m_brand">烟牌</param>
        /// <param name="m_grade">班次</param>
        /// <param name="m_fromcab">来源柜</param>
        /// <param name="m_tocab">去向柜</param>
        /// <returns>返回记录状态</returns>
        public string BatchCabInfo(strin

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值