// 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); }
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; } } }
/******************************************************************** * 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); }
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); } }