예제 #1
0
//             public LineDevice.CNC m_cnc;
            public override bool GatherData(ChannelData chData, short clientNo)
            {
                int ret     = 0;
                int partNum = 0;

                ret = CollectShare.Instance().HNC_ChannelGetValue((int)HncChannel.HNC_CHAN_PART_CNTR, chData.chNo, 0, ref partNum, clientNo);
                if (ret == 0)
                {
//                     if (chData.partNum != partNum && m_cnc != null && m_cnc.CNCchanDataEventHandler != null)
//                     {
//                         int[] senddata = new int[2];
//                         senddata[0] = (int)LineDevice.CNC.CNCchanDataEventType.CNCReport;
//                         senddata[1] = partNum;
//                         m_cnc.CNCchanDataEventHandler.BeginInvoke(this, senddata, null, null);
//                     }
                    chData.partNum = partNum;
                }
                else
                {
                    SCADA.LogData.EventHandlerSendParm SendParm = new SCADA.LogData.EventHandlerSendParm();
                    SendParm.Node1NameIndex = (int)SCADA.LogData.Node1Name.Equipment_CNC;
                    SendParm.LevelIndex     = (int)SCADA.LogData.Node2Level.MESSAGE;
                    SendParm.EventID        = ((int)SCADA.LogData.Node2Level.MESSAGE).ToString();
                    SendParm.Keywords       = "NCN采集数据失败";
                    SendParm.EventData      = clientNo.ToString() + "  采集加工完成数失败!";
                    SCADA.MainForm.m_Log.AddLogMsgHandler.BeginInvoke(this, SendParm, null, null);
                }
                return(ret == 0 ? true : false);
            }
예제 #2
0
        public void DataCollectThread()
        {
            int iiiii = 0;

            while (bCollect)
            {
                if (threaFucRuningF_OK)
                {
                    string macSN = "";
                    if (CollectShare.Instance().HNC_SystemGetValue((int)HncSystem.HNC_SYS_SN_NUM, ref macSN, hncdata.sysData.clientNo) == 0)
                    {
                        iiiii = 0;
                        if (macSN != hncdata.sysData.macSN)
                        {
                            hncdata.sysData.isConnect = false;
                            threaFucRuningF_OK        = false;
                            CollectShare.threaFucEvent.Set();

                            if (m_cnc.CNCchanDataEventHandler != null)
                            {
                                int[] senddata = new int[2];
                                senddata[0] = (int)LineDevice.CNC.CNCchanDataEventType.CNCStateChage;
                                senddata[1] = (int)LineDevice.CNC.CNCState.DISCON;
                                m_cnc.CNCchanDataEventHandler.BeginInvoke(this, senddata, null, null);
                            }

                            SCADA.LogData.EventHandlerSendParm SendParm = new SCADA.LogData.EventHandlerSendParm();
                            SendParm.Node1NameIndex = (int)SCADA.LogData.Node1Name.Equipment_CNC;
                            SendParm.LevelIndex     = (int)SCADA.LogData.Node2Level.MESSAGE;
                            SendParm.EventID        = ((int)SCADA.LogData.Node2Level.MESSAGE).ToString();
                            SendParm.Keywords       = "CNC采集器关闭";
                            SendParm.EventData      = hncdata.sysData.addr.ip + ":本次获取SN=" + macSN + ";上周期SN=" + hncdata.sysData.macSN;
                            SCADA.MainForm.m_Log.AddLogMsgHandler.BeginInvoke(this, SendParm, null, null);
                        }
                    }
                    else
                    {
                        iiiii++;
                        if (iiiii >= 10)
                        {
                            hncdata.sysData.isConnect = false;
                            threaFucRuningF_OK        = false;
                            CollectShare.threaFucEvent.Set();

                            if (m_cnc.CNCchanDataEventHandler != null)
                            {
                                int[] senddata = new int[2];
                                senddata[0] = (int)LineDevice.CNC.CNCchanDataEventType.CNCStateChage;
                                senddata[1] = (int)LineDevice.CNC.CNCState.DISCON;
                                m_cnc.CNCchanDataEventHandler.BeginInvoke(this, senddata, null, null);
                            }

                            SCADA.LogData.EventHandlerSendParm SendParm = new SCADA.LogData.EventHandlerSendParm();
                            SendParm.Node1NameIndex = (int)SCADA.LogData.Node1Name.Equipment_CNC;
                            SendParm.LevelIndex     = (int)SCADA.LogData.Node2Level.MESSAGE;
                            SendParm.EventID        = ((int)SCADA.LogData.Node2Level.MESSAGE).ToString();
                            SendParm.Keywords       = "CNC采集器关闭";
                            SendParm.EventData      = hncdata.sysData.addr.ip + ":累计连续10次调用网络接口失败!";
                            SCADA.MainForm.m_Log.AddLogMsgHandler.BeginInvoke(this, SendParm, null, null);
                        }
                    }
                    GatherData();

                    LineDevice.CNC.CNCState CNCStatei = LineDevice.CNC.CNCState.DISCON;
                    if (m_cnc != null && m_cnc.Checkcnc_state(ref CNCStatei) && m_cnc.CNCchanDataEventHandler != null)
                    {
                        int[] senddata = new int[2];
                        senddata[0] = (int)LineDevice.CNC.CNCchanDataEventType.CNCStateChage;
                        senddata[1] = (int)CNCStatei;
                        m_cnc.CNCchanDataEventHandler.BeginInvoke(this, senddata, null, null);
                    }
                    if (m_cnc != null && baogongold != m_cnc.HCNCShareData.chanDataLst[m_cnc.NC8_chang].partNum && m_cnc.CNCchanDataEventHandler != null)
                    {
                        int[] senddata = new int[2];
                        senddata[0] = (int)LineDevice.CNC.CNCchanDataEventType.CNCReport;
                        senddata[1] = m_cnc.HCNCShareData.chanDataLst[m_cnc.NC8_chang].partNum;
                        m_cnc.CNCchanDataEventHandler.BeginInvoke(this, senddata, null, null);
                        baogongold = m_cnc.HCNCShareData.chanDataLst[m_cnc.NC8_chang].partNum;
                    }

                    System.Threading.Thread.Sleep(50);
                }
                else
                {
                    Get_Reg_threaFucEvent.WaitOne();
                    iiiii = 0;
                }
            }
        }
예제 #3
0
/********************************************************************
 *      created:	2015/10/15
 *      created:	15:10:2015   14:45
 *      filename:   F:\SCADA\SCADA\WindowsForm\UserControlTaskData.cs
 *      file path:	F:\SCADA\SCADA\WindowsForm
 *      file base:	UserControlTaskData
 *      file ext:	cs
 *      author:
 *
 *      purpose:	读取所有派工单中对应需要发送的G代码和作业指导书等
 *********************************************************************/
        private bool getCNCTaskData()
        {
            if (TaskDb == null || TaskDb.Rows.Count < 0)
            {
                return(false);
            }

            for (int i = 0; i < TaskDb.Rows.Count; i++)
            {
                SCADA.LogData.EventHandlerSendParm SendParm = new SCADA.LogData.EventHandlerSendParm();
                SendParm.Node1NameIndex = (int)SCADA.LogData.Node1Name.Equipment_CNC;
                SendParm.LevelIndex     = (int)SCADA.LogData.Node2Level.MESSAGE;
                SendParm.EventID        = ((int)SCADA.LogData.Node2Level.MESSAGE).ToString();
                SendParm.Keywords       = "";
//                 if (checkBox_AoutoSendTask.Checked)//自动派发
//                 {
//                     if (sendTaskData2CNC(TaskDataObj.m_workorderlist[i].EQUIP_CODE, TaskDataObj.m_workorderlist[i].OP_DOC_PATH, i, checkBox_AoutoSendTask.Checked))
//                     {
//                         SendParm.Keywords = "派工单自动派发成功";
//                     }
//                     else
//                     {
//                         SendParm.Keywords = "派工单自动派发失败";
//                     }
//                 }
                if (gridRowIsChecked(i)) //选中发送
                {
                    System.Data.DataRow node = null;
                    LineDevice.CNC      cnc  = MainForm.cnclist.Find(
                        delegate(LineDevice.CNC temp)
                    {
                        return(temp.BujianID == TaskDb.Rows[i][(int)NCTaskDel.NodeName.机台编号].ToString());
                    }
                        );
                    if (cnc != null)
                    {
                        cnc.NcTaskManage.GetDISPATCHSendOrRepor(true, out node);
                        if (node != null)
                        {
                            if (!sendTaskData2CNC(node[(int)NCTaskDel.NodeName.机台编号].ToString(), node[(int)NCTaskDel.NodeName.NC作业指导书路径].ToString(), i, checkBox_AoutoSendTask.Checked))
                            {
                                SendParm.Keywords = "派工单手动派发失败";
                            }
                            else
                            {
                                SendParm.Keywords = "派工单手动派发成功";
                                dataGridViewTask.Rows[i].Selected = true;
                            }
                        }
                        else
                        {
                            SendParm.Keywords = "任务已经派发";
                        }
                    }
                    else
                    {
                        SendParm.Keywords = "没有找到派工单对应机台 派工单手动派发失败";
                    }
                }
                if (SendParm.Keywords.Length > 0)
                {
                    if (checkBox_XuNiSendTask.Checked)
                    {
                        SendParm.EventData = TaskDb.Rows[i][(int)NCTaskDel.NodeName.机台编号].ToString() + "虚拟派工;NC =" + TaskDb.Rows[i][(int)NCTaskDel.NodeName.NC文件路径].ToString();
                    }
                    else
                    {
                        SendParm.EventData = TaskDb.Rows[i][(int)NCTaskDel.NodeName.机台编号].ToString() + "实际派工;NC =" + TaskDb.Rows[i][(int)NCTaskDel.NodeName.NC文件路径].ToString();
                    }
                    SCADA.MainForm.m_Log.AddLogMsgHandler.BeginInvoke(this, SendParm, null, null);
                }
            }
            return(true);
        }
예제 #4
0
        private void ConnectThreadFunc()
        {
            bool           ConnectNoFinish = false;
            List <HNCData> ncDatas         = new List <HNCData>();

            while (true)
            {
                if (ConnectNoFinish)
                {
                    ConnectNoFinish = false;
                    ncDatas.Clear();
                    foreach (CollectHNCData collecncdata in m_gatherHNCLst)
                    {
                        if (!collecncdata.hncdata.sysData.isConnect)
                        {
                            if (ClientPingTest(collecncdata.hncdata.sysData.addr.ip))
                            {
                                collecncdata.hncdata.sysData.clientNo = Instance().HNC_NetConnect(collecncdata.hncdata.sysData.addr.ip, collecncdata.hncdata.sysData.addr.port, true);
                                if (collecncdata.hncdata.sysData.clientNo >= 0 && collecncdata.hncdata.sysData.clientNo < 256)
                                {
//                                     for (int hageii = 0; hageii < 10; hageii++)
                                    {
                                        collecncdata.UpDataChAxList();
//                                         if (collecncdata.hncdata.chanDataLst.Count > 0 && collecncdata.hncdata.axlist.Count > 0)
//                                         {
//                                             break;
//                                         }

                                        ncDatas.Add(collecncdata.hncdata);
                                    }
                                    if (collecncdata.hncdata.chanDataLst.Count > 0 && collecncdata.hncdata.axlist.Count > 0)//确保采集器是初始化OK
                                    {
                                        collecncdata.CollectConstData();
                                        if (collecncdata.hncdata.sysData.clientNo >= 0 && collecncdata.hncdata.sysData.clientNo < 256 &&
                                            collecncdata.hncdata.sysData.macSN != null && collecncdata.hncdata.sysData.macSN.Length > 0)
                                        {
                                            collecncdata.threaFucRuningF_OK = true;
                                            collecncdata.Get_Reg_threaFucEvent.Set();
                                            collecncdata.hncdata.sysData.isConnect = true;

                                            if (collecncdata.m_cnc.CNCchanDataEventHandler != null)
                                            {
                                                int[] senddata = new int[2];
                                                senddata[0] = (int)LineDevice.CNC.CNCchanDataEventType.CNCStateChage;
                                                senddata[1] = (int)LineDevice.CNC.CNCState.IDLE;
                                                collecncdata.m_cnc.CNCchanDataEventHandler.BeginInvoke(this, senddata, null, null);
                                            }

                                            AlarmData alm = new AlarmData();
                                            m_Instance.HNC_AlarmRefresh(collecncdata.hncdata.sysData.clientNo);
                                            int alarm_num = 0;
                                            m_Instance.HNC_AlarmGetNum((int)HNCAPI.AlarmType.ALARM_TYPE_ALL, (int)HNCAPI.AlarmLevel.ALARM_ERR, ref alarm_num, collecncdata.hncdata.sysData.clientNo);
                                            for (int i = 0; i < alarm_num; i++)
                                            {
                                                m_Instance.HNC_AlarmGetData((int)HNCAPI.AlarmType.ALARM_TYPE_ALL, //获取所有类型的报警
                                                                            (int)HNCAPI.AlarmLevel.ALARM_ERR,     //仅获取error
                                                                            i,
                                                                            ref alm.alarmNo,                      //获取此报警的唯一ID,可用于报警识别
                                                                            ref alm.alarmTxt,                     //报警文本
                                                                            collecncdata.hncdata.sysData.clientNo);
                                                alm.isOnOff = 1;
                                                if (MainForm.m_CheckHander != null && MainForm.m_CheckHander.AlarmSendDataEvenHandle != null)
                                                {
                                                    EquipmentCheck.AlarmSendData SendMeg = new EquipmentCheck.AlarmSendData();
//                                                     SendMeg.alardat = new ScadaHncData.AlarmData();
                                                    SendMeg.NeedFindTeX     = false;
                                                    SendMeg.BujianID        = collecncdata.m_cnc.BujianID;
                                                    SendMeg.alardat.isOnOff = 1;
                                                    SendMeg.alardat         = alm;
                                                    MainForm.m_CheckHander.AlarmSendDataEvenHandle.BeginInvoke(null, SendMeg, null, null);
                                                }

                                                UpdateCurrentAlarmLst(collecncdata.hncdata, alm);
                                            }
                                            SCADA.LogData.EventHandlerSendParm SendParm = new SCADA.LogData.EventHandlerSendParm();
                                            SendParm.Node1NameIndex = (int)SCADA.LogData.Node1Name.Equipment_CNC;
                                            SendParm.LevelIndex     = (int)SCADA.LogData.Node2Level.MESSAGE;
                                            SendParm.EventID        = ((int)SCADA.LogData.Node2Level.MESSAGE).ToString();
                                            SendParm.Keywords       = "CNC采集器开启";
                                            SendParm.EventData      = collecncdata.m_cnc.BujianID + ":ip = " + collecncdata.hncdata.sysData.addr.ip
                                                                      + "  链接号 = " + collecncdata.hncdata.sysData.clientNo.ToString()
                                                                      + " sn = " + collecncdata.hncdata.sysData.macSN;
                                            SCADA.MainForm.m_Log.AddLogMsgHandler.BeginInvoke(this, SendParm, null, null);
                                        }
                                    }
                                    else
                                    {
//                                         SCADA.LogData.EventHandlerSendParm SendParm = new SCADA.LogData.EventHandlerSendParm();
//                                         SendParm.Node1NameIndex = (int)SCADA.LogData.Node1Name.Equipment_CNC;
//                                         SendParm.LevelIndex = (int)SCADA.LogData.Node2Level.消息;
//                                         SendParm.EventID = ((int)SCADA.LogData.Node2Level.消息).ToString();
//                                         SendParm.Keywords = "collecncdata.hncdata.chanDataLst.Count = 0";
//                                         SendParm.EventData = collecncdata.hncdata.sysData.addr.ip;
//                                         SCADA.MainForm.m_Log.AddLogMsgHandler.BeginInvoke(this, SendParm, null, null);
                                    }
                                }
                            }
                        }
                        if (!collecncdata.hncdata.sysData.isConnect)
                        {
                            ConnectNoFinish = true;
                        }
                    }
                }
                else
                {
                    threaFucEvent.WaitOne();
                    ConnectNoFinish = true;
                }

                //---------------------------------added by zb 20151105--------------------------start
                if (ncDatas.Count > 0)
                {
                    monitor.ProcessConnDatPosi(ncDatas);
                }
                //---------------------------------added by zb 20151105--------------------------end

                //                 Thread.Sleep(CONNECT_THREAD_SLEEP_TIME);
            }
        }