You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
7072 lines
377 KiB
7072 lines
377 KiB
using System.Runtime.InteropServices;
|
|
using System.Collections.Generic;
|
|
|
|
using System.Text;
|
|
using System.Data;
|
|
using System;
|
|
using CommLayerFactory;
|
|
using ICommLayer;
|
|
using DBFactory;
|
|
using CommonLib;
|
|
using System.Security.Cryptography;
|
|
using System.Linq;
|
|
|
|
namespace WcfControlMonitorLib
|
|
{
|
|
|
|
/// <summary>
|
|
/// Creator:Richard.liu
|
|
/// ¼à¿Øµ÷¶ÈÀà
|
|
/// </summary>
|
|
|
|
public class CControl
|
|
{
|
|
int StackMutexXCoor = 4800;
|
|
int minStackMutexXCoor = 2400;
|
|
int StackZeroXCoor = 1950;
|
|
StringBuilder AheadDetectUnallow = new StringBuilder();//20110505
|
|
StringBuilder sql = new StringBuilder();
|
|
char[] dd = new char[1] { '.' };//20101124
|
|
string[] DS;//20101124
|
|
private Object thisLock = new Object();
|
|
DBOperator dbo = CStaticClass.dbo;
|
|
DBOperator dboM = CStaticClass.dboM;
|
|
|
|
Model.MDevice devinfo;
|
|
ISendDeviceOrder sdo;
|
|
CCommonFunction ccf = new CCommonFunction();
|
|
int _DeviceIdx = 0;//É豸Ë÷Òý
|
|
int _routeID = 0;//·¾¶Î¨Ò»Ë÷Òý
|
|
int _serialNumber = 0;//·¾¶ÉϵÄÉ豸·½ÏòÐÔÁ´±íµÄÐòºÅ
|
|
int _ManageTaskIdx = 0;//µ÷¶ÈÈÎÎñË÷Òý
|
|
int _ManageKindIdx = 0;//µ÷¶ÈÈÎÎñÀàÐÍ
|
|
int _DeviceOrder = 0;//É豸ÃüÁî
|
|
int _LockedState = 0;
|
|
int _Associate = 0;
|
|
int _ManTaskReserve = 0;
|
|
string _AheadDetect = "";
|
|
int _NumParam1 = 0;
|
|
int _NumParam2 = 0;
|
|
int _NumParam3 = 0;
|
|
int _NumParam4 = 0;
|
|
int _NumParam5 = 0;
|
|
int _NumParam6 = 0;
|
|
string _TxtParam = "-";
|
|
int _DeviceKind = 0;
|
|
int _OutsideAltDevice = 0;
|
|
int _InsideAltDevice = 0;
|
|
int _StartDevice = 0;
|
|
int _EndDevice = 0;
|
|
int _RouteKind = 0;
|
|
public static int send_intercounts = 0;
|
|
public static int send_intercountsO = 0;
|
|
|
|
int safe_distance = CStaticClass.Safe_distance;
|
|
int Safe_distanceRGV = CStaticClass.Safe_distanceRGV;
|
|
|
|
//int _UseAwayFork = 1;
|
|
int _AgvNo = 65535;
|
|
string _CControlError = "";//¼à¿Øµ÷¶ÈÀà´íÎó˵Ã÷
|
|
public string CControlError
|
|
{
|
|
get { return _CControlError; }
|
|
set
|
|
{
|
|
_CControlError = value;
|
|
RefreshMonitorEventArgs rme = new RefreshMonitorEventArgs("tsStatus", _CControlError);
|
|
OnRefreshMonitor(rme);
|
|
}
|
|
}
|
|
public static event CDataSourceChangeEventHandler DataChange;
|
|
public static void OnDataChange(object sender, CDataChangeEventArgs e)
|
|
{
|
|
if (DataChange != null)
|
|
{
|
|
DataChange(sender, e);
|
|
}
|
|
}
|
|
public static event RefreshMonitorEventHandler RefreshMonitor;
|
|
public static void OnRefreshMonitor(RefreshMonitorEventArgs e)
|
|
{
|
|
if (RefreshMonitor != null)
|
|
{
|
|
RefreshMonitor(e);
|
|
}
|
|
}
|
|
public CControl()
|
|
{
|
|
//dbo.Open();
|
|
}
|
|
//~CControl()
|
|
//{
|
|
// dbo.Close();
|
|
//}
|
|
public void StartOrder()
|
|
{
|
|
//Ê×Ïȼì²âµÚÒ»¸öµ÷¶ÈÈÎÎñµ¥µÄ¡°µÚÒ»¸ö¡±£¨ËùÓÐÊ£ÏÂÖеĵÚÒ»¸ö£©É豸ÊÇ·ñ±»Õ¼Ó㬱»Õ¼ÓÃÔòÖ´ÐÐÏÂÒ»¸öµ÷¶ÈÈÎÎñµ¥£»
|
|
//È»ºó¼ì²âµÚÒ»¸öÉ豸µÄF_AheadDetect¶¼ÊÇ·ñÂú×ãÌõ¼þ£¬²»Âú×㣬ÔòÖ´ÐÐÏÂÒ»¸öµ÷¶ÈÈÎÎñµ¥£»
|
|
//×îºó¿ªÊ¼Ö´ÐÐʱ¼ì²éͬ²½ÔËÐеĹØÁªÉ豸F_AssociateDeviceIndex,×¼±¸¸ø¸ÃÉ豸·¢Ö¸Á
|
|
//¸ü¸Ä×÷Òµ¼Ç¼µÄ״̬F_StatusΪ1,¸ü¸ÄÉ豸ΪռÓÃ״̬£¨T_Base_deviceµÄF_LockedState=É豸ָÁîµ¥£©
|
|
//¸øµ÷¶ÈÈÎÎñ±í»ØÐ´µ÷¶ÈÈÎÎñIO_ControlµÄÕýÔÚÖ´ÐÐ״̬FSTATUS=1;T_Manage_TaskµÄÕýÔÚÖ´ÐÐ״̬FSTATUS=1
|
|
//·¾¶Ã÷ϸ±íF_LockedDeviceIndexÀïµÄËùÓжÔÓ¦É豸Ë÷Òý¼ÓËø£¬µ«ÊǹØÁªÉ豸²»¼ÓËø
|
|
StringBuilder taskkind = new StringBuilder();
|
|
DataView dv = new DataView(); DataView dvM = new DataView();
|
|
try
|
|
{
|
|
//send_intercounts += 1;
|
|
//if (send_intercounts >= 10)//2s Éò±±²¨É2ÆÚ¶¨Ê±¸üÐÂÉ豸״̬
|
|
//{
|
|
// Model.MDevice devinfo80001 = Model.CGetInfo.GetDeviceInfo(80001);
|
|
// Model.MDevice devinfo80002 = Model.CGetInfo.GetDeviceInfo(80002);
|
|
// Model.MDevice devinfo80003 = Model.CGetInfo.GetDeviceInfo(80003);
|
|
// StringBuilder[] wv = { new StringBuilder("2") };
|
|
// StringBuilder[] witemnames = { new StringBuilder("") };
|
|
// if (send_intercountsO == 0)
|
|
// {
|
|
// witemnames[0].Clear();
|
|
// witemnames[0].Append(Model.CGeneralFunction.DBGet).Append(".").Append(Convert.ToString(devinfo80001.Dbw2Address + 4)).Append(",b");//20130510
|
|
|
|
// wv[0].Clear();
|
|
// wv[0].Append(1);
|
|
|
|
// sdo = CommLayerFactory.CommModeCreate.CreateSendDeviceOrder(devinfo80001.DeviceIndex);
|
|
// sdo.WriteDBData(witemnames, wv, devinfo80001.S7Connection);
|
|
|
|
// witemnames[0].Clear();
|
|
// witemnames[0].Append(Model.CGeneralFunction.DBGet).Append(".").Append(Convert.ToString(devinfo80002.Dbw2Address + 4)).Append(",b");//20130510
|
|
|
|
// wv[0].Clear();
|
|
// wv[0].Append(1);
|
|
|
|
// sdo = CommLayerFactory.CommModeCreate.CreateSendDeviceOrder(devinfo80002.DeviceIndex);
|
|
// sdo.WriteDBData(witemnames, wv, devinfo80002.S7Connection);
|
|
// //¶â»úÎÞË¢ÐÂÎÊÌâ²»Óö©ÔÄ×éÄÚ¶¨ÆÚ¸üÐÂij¸ö¿ª¹Ø±äÁ¿
|
|
// //witemnames[0].Clear();
|
|
// //witemnames[0].Append(Model.CGeneralFunction.DBGet).Append(".").Append(Convert.ToString(devinfo80003.Dbw2Address + 4)).Append(",b");//20130510
|
|
|
|
// //wv[0].Clear();
|
|
// //wv[0].Append(1);
|
|
|
|
// //sdo = CommLayerFactory.CommModeCreate.CreateSendDeviceOrder(devinfo80003.DeviceIndex);
|
|
// //sdo.WriteDBData(witemnames, wv, devinfo80003.S7Connection);
|
|
|
|
// }
|
|
|
|
// if (send_intercountsO == 1)
|
|
// {
|
|
// witemnames[0].Clear();
|
|
// witemnames[0].Append(Model.CGeneralFunction.DBGet).Append(".").Append(Convert.ToString(devinfo80001.Dbw2Address + 4)).Append(",b");//20130510
|
|
|
|
// wv[0].Clear();
|
|
// wv[0].Append(0);
|
|
|
|
// sdo = CommLayerFactory.CommModeCreate.CreateSendDeviceOrder(devinfo80001.DeviceIndex);
|
|
// sdo.WriteDBData(witemnames, wv, devinfo80001.S7Connection);
|
|
|
|
// witemnames[0].Clear();
|
|
// witemnames[0].Append(Model.CGeneralFunction.DBGet).Append(".").Append(Convert.ToString(devinfo80002.Dbw2Address + 4)).Append(",b");//20130510
|
|
|
|
// wv[0].Clear();
|
|
// wv[0].Append(0);
|
|
|
|
// sdo = CommLayerFactory.CommModeCreate.CreateSendDeviceOrder(devinfo80002.DeviceIndex);
|
|
// sdo.WriteDBData(witemnames, wv, devinfo80002.S7Connection);
|
|
|
|
// //witemnames[0].Clear();
|
|
// //witemnames[0].Append(Model.CGeneralFunction.DBGet).Append(".").Append(Convert.ToString(devinfo80003.Dbw2Address + 4)).Append(",b");//20130510
|
|
|
|
// //wv[0].Clear();
|
|
// //wv[0].Append(0);
|
|
|
|
// //sdo = CommLayerFactory.CommModeCreate.CreateSendDeviceOrder(devinfo80003.DeviceIndex);
|
|
// //sdo.WriteDBData(witemnames, wv, devinfo80003.S7Connection);
|
|
|
|
// }
|
|
// if (send_intercountsO == 0)
|
|
// {
|
|
// send_intercountsO = 1;
|
|
// }
|
|
// else if (send_intercountsO == 1)
|
|
// {
|
|
// send_intercountsO = 0;
|
|
// }
|
|
|
|
// send_intercounts = 0;
|
|
//}
|
|
|
|
|
|
if (CStaticClass.Order == true)
|
|
{
|
|
taskkind.Append(" (F_ManageTaskKindIndex = 1 or F_ManageTaskKindIndex = 2 or F_ManageTaskKindIndex = 4) "); //µ÷¶ÈÈÎÎñÓëµ÷¶ÈÉú³ÉµÄ×Ô¶¯ÈÎÎñ
|
|
}
|
|
else
|
|
{
|
|
return;
|
|
}
|
|
|
|
dvM = new DataView();
|
|
|
|
char[] sep = new char[1] { '-' };
|
|
|
|
//»ñµÃ¹ÜÀíµ¥¾Ý
|
|
sql.Remove(0, sql.Length);
|
|
//20120820
|
|
sql.Append("SELECT DISTINCT F_ManageTaskIndex AS MIndex,F_MonitorTaskLevel,F_ManageTaskKindIndex,F_SplitTime FROM T_Monitor_Task where ").Append(
|
|
taskkind.ToString()).Append(" order by F_ManageTaskKindIndex desc, F_MonitorTaskLevel desc,F_SplitTime asc, F_ManageTaskIndex asc");//20120616
|
|
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
for (int i = 0; i < dv.Count; i++)
|
|
{
|
|
try
|
|
{
|
|
//1£ºÌáȡÿ¸ö¹ÜÀíµ¥¾ÝµÄµÚÒ»¸öÉ豸ָÁî
|
|
sql.Remove(0, sql.Length);
|
|
if (CStaticClass.DBFactory == "OracleDBFactory")
|
|
{//20151120µ÷¶ÈϵͳoracleµÄÌØÊâÓï¾ä
|
|
sql.Append("select min(F_MonitorIndex) as minMidx,f_status from T_Monitor_Task where rownum=1 and ").Append(taskkind.ToString()).Append(" and F_ManageTaskIndex = ").Append(dv[i]["MIndex"]).Append(" GROUP BY F_MonitorIndex, F_Status");
|
|
}
|
|
else
|
|
{//20151120µ÷¶ÈϵͳSQLServerµÄÌØÊâÓï¾ä
|
|
sql.Append("select top 1 min(F_MonitorIndex) as minMidx,f_status from T_Monitor_Task where ").Append(taskkind.ToString()).Append(" and F_ManageTaskIndex = ").Append(dv[i]["MIndex"]).Append(" GROUP BY F_MonitorIndex, F_Status");
|
|
}
|
|
dvM = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;//20151120µ÷¶ÈϵͳoracleµÄÌØÊâÓï¾ä
|
|
if (dvM.Count > 0)
|
|
{//20110412
|
|
|
|
if (dvM[0]["F_Status"].ToString() == "0" && dvM[0]["minMidx"] != DBNull.Value)
|
|
{
|
|
SendMonitorTask(Convert.ToInt32(dvM[0]["minMidx"]));
|
|
|
|
}
|
|
else
|
|
{
|
|
continue;
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
continue;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
CControlError = string.Format("·¢ËÍÃüÁîµ÷ÓÃStartOrderʱ£º{0}", ex.StackTrace + ex.Message);
|
|
}
|
|
|
|
}//forÓï¾ä½áÊø
|
|
//20091107
|
|
|
|
|
|
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
|
|
|
|
|
|
return;
|
|
}
|
|
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
|
|
dvM.Dispose();
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// Ìáȡÿ¸ö¹ÜÀíµ¥¾ÝµÄµÚÒ»¸öÉ豸ÊÇ·ñ±»Ëø¶¨,true±íʾ±»Ëø¶¨£»false±íʾ¿ÕÏÐ
|
|
/// </summary>
|
|
/// <param name="minMidx">µ÷¶ÈÈÎÎñºÅ</param>
|
|
/// <returns>true±íʾ±»Ëø¶¨£»false±íʾ¿ÕÏÐ</returns>
|
|
public bool GetFirstDeviceIFLocked(int minMidx, bool checkLockedstate)
|
|
{
|
|
char[] sep = new char[1] { '-' };
|
|
int msgIdx = 0;//ÏûÏ¢±àºÅ
|
|
int adidx = 0;//¹ØÁªÉ豸µÄÉ豸ָÁîË÷Òý
|
|
DataView dv = new DataView();
|
|
try
|
|
{
|
|
|
|
//»ñµÃÒª·¢Ë͵ÄÐÅÏ¢
|
|
if (GetSendInfo(minMidx) == false)
|
|
{//20120420
|
|
return true;
|
|
}
|
|
|
|
int DeviceIdx = _DeviceIdx;//É豸Ë÷Òý
|
|
int routeID = _routeID;//·¾¶Î¨Ò»Ë÷Òý
|
|
int serialNumber = _serialNumber;//·¾¶ÉϵÄÉ豸·½ÏòÐÔÁ´±íµÄÐòºÅ
|
|
int ManageTaskIdx = _ManageTaskIdx;//µ÷¶ÈÈÎÎñË÷Òý
|
|
int ManageKindIdx = _ManageKindIdx;//µ÷¶ÈÈÎÎñÀàÐÍ
|
|
int DeviceOrder = _DeviceOrder;//É豸ÃüÁî
|
|
int LockedState = _LockedState;
|
|
int Associate = _Associate;
|
|
int ManTaskReserve = _ManTaskReserve;
|
|
string AheadDetect = _AheadDetect;
|
|
int NumParam1 = _NumParam1;
|
|
int NumParam2 = _NumParam2;
|
|
int NumParam3 = _NumParam3;
|
|
int NumParam4 = _NumParam4;
|
|
int NumParam5 = _NumParam5;
|
|
int NumParam6 = _NumParam6;
|
|
string TxtParam = _TxtParam;
|
|
int DeviceKind = _DeviceKind;
|
|
int OutsideAltDevice = _OutsideAltDevice;
|
|
int InsideAltDevice = _InsideAltDevice;
|
|
int StartDevice = _StartDevice;
|
|
int EndDevice = _EndDevice;
|
|
int RouteKind = _RouteKind;
|
|
int AgvNo = _AgvNo;
|
|
|
|
#region É豸¹ÊÕÏʱÊÇ·ñ×Ô¶¯¸ÄµÀ
|
|
|
|
if (CStaticClass.DeviceErrorAutoModifyRoutePath == "1")
|
|
{//20100108
|
|
#region Ö»Õë¶ÔÓëRGVÓйصÄÎå¸ö¶¯×÷ÅжϸÄ·¾¶
|
|
//20100108 ÊäËÍ»úµÄ½Ó»õ¶Ô½ÓÖ¸Áî²»²ÎÓë¸ÄµÀ
|
|
if ((_DeviceKind == 4) || ((_DeviceKind == 2) && ((_DeviceOrder == 3))) && (RouteKind != 3))
|
|
{
|
|
bool IfModify = false, IfUseNegativeDevice = false;//20100610
|
|
//20091102 RGVµÄµÚÒ»¸ö±»Ìáǰ´¥·¢µÄÔ˶¯Ö¸Áî²»ÐèÒª¸ü¸Ä·¾¶
|
|
if ((_DeviceKind == 4) && (_DeviceOrder == 7) &&
|
|
(ccf.GetSerialNumberFromRouteDevice(_routeID, _DeviceIdx) >
|
|
ccf.GetSerialNumberFromRouteDevice(_routeID, _NumParam1)))
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT MIN(F_MonitorIndex) AS mmi FROM dbo.T_Monitor_Task WHERE (F_ManageTaskIndex = ").Append(ManageTaskIdx).Append(") AND (F_ManageTASKKINDINDEX = 1)");
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
//20091218
|
|
|
|
if ((dv[0]["mmi"] != DBNull.Value) && (dv[0]["mmi"].ToString() == minMidx.ToString()))
|
|
{
|
|
IfModify = true;
|
|
IfUseNegativeDevice = true;//20100610
|
|
}
|
|
}
|
|
|
|
}
|
|
else if ((_DeviceKind == 4) && ((_DeviceOrder == 3) || (_DeviceOrder == 5)))
|
|
{//20100108¶Ô´©Ëó³µËÍ»õ¶Ô½ÓÓ¦¸Ã¼ÓÓÚÏÞÖÆ£¬ÔØ»õ£¬¿ÕÏÐ
|
|
devinfo = Model.CGetInfo.DeviceInfo[DeviceIdx];
|
|
if ((devinfo.RunState == 0) && (devinfo.HaveGoods == true))
|
|
{
|
|
IfModify = true;
|
|
IfUseNegativeDevice = false;//20100610
|
|
}
|
|
devinfo = null;
|
|
}
|
|
else
|
|
{
|
|
IfModify = true;
|
|
IfUseNegativeDevice = true;//20100610
|
|
|
|
}
|
|
if (IfModify == true)
|
|
{
|
|
int altsn = ccf.GetSerialNumberFromRouteDevice(_routeID, _OutsideAltDevice);
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT F_SerialNumber FROM T_Base_Device,T_Base_Route_Device,T_Base_Device_State where ").Append(
|
|
" T_Base_Device.F_DeviceIndex = T_Base_Route_Device.F_DeviceIndex and F_ErrorCode =F_DeviceErrorIndex and ").Append(
|
|
" T_Base_Device_State.F_DeviceKindIndex = T_Base_Device.F_DeviceKindIndex AND T_Base_Device.F_ErrorCode > 0 AND ").Append(
|
|
" T_Base_Route_Device.F_SerialNumber > ").Append(_serialNumber).Append(" AND T_Base_Route_Device.F_SerialNumber > ").Append(
|
|
altsn).Append(" AND T_Base_Route_Device.F_RouteIDSub = ").Append(_routeID).Append(" and F_ErrorLevel=2 ");
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
//ÅжÏÄÜ·ñ¸ÄµÀ;Ïò¹ÜÀíÉêÇë¸ÄµÀ;°ÑManageTaskIdx£¬ManageKindIdx µÄµ÷¶ÈÈÎÎñÈ«²¿ÉêÇë¸ÄµÀ
|
|
if (GetUsableDestination(_ManageTaskIdx, _ManageKindIdx) == true)
|
|
{
|
|
|
|
return true;
|
|
}
|
|
}
|
|
#region RGVÄ¿±êλÖñ»Õ¼ÓÃÐèÒªÉêÇë¸ÄµÀ
|
|
//20100610
|
|
devinfo = null;
|
|
if (_DeviceKind == 4)
|
|
{//RGV
|
|
devinfo = Model.CGetInfo.GetDeviceInfo(CDisassembleTask.GetNextDevice(_routeID, _serialNumber)[0]);
|
|
}
|
|
else
|
|
{//ÊäËÍ»úËÍ»õ
|
|
devinfo = Model.CGetInfo.GetDeviceInfo(CDisassembleTask.GetNextDevice(_routeID, _serialNumber)[0]);//RGV
|
|
int sn = 0;
|
|
if (devinfo != null)
|
|
{
|
|
sn = ccf.GetSerialNumberFromRouteDevice(_routeID, devinfo.DeviceIndex);
|
|
}
|
|
devinfo = Model.CGetInfo.GetDeviceInfo(CDisassembleTask.GetNextDevice(_routeID, sn)[0]);//½Ó»õÊäËÍ»ú
|
|
|
|
}
|
|
if (devinfo != null)
|
|
{
|
|
if (devinfo.HaveGoods == true)
|
|
{//Ä¿±êλÖñ»Õ¼Óã¬ÉêÇë¸ÄµÀ
|
|
if (GetRGVIdleDestination(_ManageTaskIdx, _ManageKindIdx, devinfo.DeviceIndex, IfUseNegativeDevice) == true)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
}
|
|
|
|
}
|
|
#endregion
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
if (DeviceKind == 6)
|
|
{//20100512 AGV
|
|
#region AGV
|
|
|
|
if (AgvNo != 65535)//Èç¹ûÊÇÒѾ·ÖÅä³µºÅµÄAGVÃüÁ¼ì²éÕâ¸ö³µºÅ¶ÔÓ¦µÄÉ豸Ë÷ÒýÊÇ·ñ±»Ëø¶¨
|
|
{
|
|
LockedState = Convert.ToInt32(dbo.GetSingle("SELECT F_LockedState FROM T_Base_Device where F_DeviceIndex=" + (DeviceIdx + AgvNo) + ""));
|
|
if (LockedState > 0) return true;
|
|
}
|
|
if (AheadDetectOK(minMidx, _AheadDetect) == true)//Ìáǰ¼ì²âͨ¹ý
|
|
{
|
|
#region Ë«²æAGV¼ì²â£¬ÄÜͬ²½µÄ¹ØÁªÈÎÎñÊÇ·ñAheadDetectOK
|
|
//20100323
|
|
devinfo = Model.CGetInfo.GetDeviceInfo(_DeviceIdx);
|
|
if (devinfo.IfCorrelDoubleFork == "1")
|
|
{
|
|
int[] synctask = Model.CGeneralFunction.MutiForkIfSync(minMidx, _DeviceIdx, _DeviceKind);
|
|
if (synctask != null)//20120616
|
|
{
|
|
if ((synctask.GetLength(0) == 1) && (synctask[0] == minMidx)) return true;//20120616µÈ´ýδ²ð·ÖµÄ¿Éͬ²½Ö´ÐеÄÈÎÎñ
|
|
string[] df = null;
|
|
Dictionary<int, string[]> mforkmonitorinfo = Model.CGeneralFunction.GetDoubleForkMonitorInfo(minMidx, _DeviceIdx);
|
|
foreach (int i in mforkmonitorinfo.Keys)
|
|
{
|
|
df = mforkmonitorinfo[i];
|
|
if (df != null)
|
|
{
|
|
if (AheadDetectOK(Convert.ToInt32(df[0]), df[1]) == false)//¶à²æ¹ØÁªÌáǰ¼ì²âʧ°Ü
|
|
{
|
|
return true;
|
|
}
|
|
#region ¹ØÁªÖ¸Áî²»ÊǵÚÒ»¸öÖ¸Áî²»ÄÜ·¢ËÍ
|
|
int rmankind = Model.CGeneralFunction.GetManageTaskKindIndexFromMonitor(Convert.ToInt32(df[0]));
|
|
int rman = Model.CGeneralFunction.GetManageTaskIndexfromMonitor(Convert.ToInt32(df[0]));
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT MIN(F_MonitorIndex) AS mmi FROM dbo.T_Monitor_Task WHERE (F_ManageTaskIndex = ").Append(rman).Append(") AND (F_ManageTASKKINDINDEX = ").Append(rmankind).Append(")");
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
if ((dv[0]["mmi"] != DBNull.Value) && (dv[0]["mmi"].ToString() != df[0]))
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
#endregion
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
#endregion
|
|
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
return true;
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
else
|
|
{//·ÇAGVÉ豸£ºÊäËÍ»ú¡¢¶Ñ¶â»ú¡¢RGVµÈ
|
|
#region ·ÇAGVÉ豸£ºÊäËÍ»ú¡¢¶Ñ¶â»ú¡¢RGVµÈ
|
|
|
|
//µÚÒ»¸öÉ豸ÊÇ·ñ±»Õ¼Óã¬RGVºÍ¶Ñ¶â»úÒª¿¼ÂÇ·Ö²½¿ØÖÆÊ±£¬Ã»Ö´ÐÐÍêÁ¬Ðø¶¯×÷ʱ²»½ÓÊÜеĵ÷¶ÈÈÎÎñ
|
|
//add for TJBS
|
|
if (_LockedState != 0 && checkLockedstate == true)
|
|
{
|
|
UpdateAheadDetectUnallow(new StringBuilder(_DeviceIdx.ToString() + "±»ÈÎÎñËø¶¨" + _LockedState.ToString().Substring(1)), minMidx);
|
|
return true;
|
|
}
|
|
if (((_LockedState == 0) && (checkLockedstate == true)) || (checkLockedstate == false))
|
|
{
|
|
|
|
#region ¼ì²éRGV¡¢¶Ñ¶â»úµÈÊÇ·ñ±»µ÷¶ÈÈÎÎñÔ¤Ô¼F_ManTaskReserve
|
|
|
|
if (_ManTaskReserve > 0 && DeviceKind != 2)//20140309
|
|
{
|
|
devinfo = Model.CGetInfo.GetDeviceInfo(_DeviceIdx);
|
|
if (devinfo.IfCorrelDoubleFork == "1")
|
|
{
|
|
#region ¶à²æ¹ØÁª
|
|
Dictionary<int, string[]> mforkmonInfo = Model.CGeneralFunction.GetDoubleForkMonitorInfo(minMidx, _DeviceIdx);
|
|
bool iftrue = true;
|
|
int relfid = ccf.GetRELATIVECONTORLIDFromManageTask(_ManageKindIdx, _ManageTaskIdx);
|
|
|
|
if (_ManTaskReserve.ToString() == _ManageKindIdx.ToString() + _ManageTaskIdx.ToString())
|
|
{
|
|
iftrue = false;
|
|
}
|
|
else
|
|
{
|
|
if (relfid > 0)
|
|
{//20130704
|
|
dv = dbo.ExceSQL(string.Format("SELECT FID FROM T_Manage_Task where F_RELATIVECONTORLID={0} and F_ManageTaskKindIndex={1}", relfid, _ManageKindIdx)).Tables[0].DefaultView;
|
|
for (int mt = 0; mt < dv.Count; mt++)
|
|
{
|
|
if (_ManTaskReserve.ToString() == _ManageKindIdx.ToString() + dv[mt]["FID"].ToString())
|
|
{
|
|
iftrue = false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (iftrue == true)
|
|
{
|
|
UpdateAheadDetectUnallow(new StringBuilder(_DeviceIdx.ToString() + "±»ÈÎÎñÔ¤Ô¼" + _ManTaskReserve.ToString().Substring(1)), minMidx);
|
|
return true;
|
|
}
|
|
#endregion
|
|
}
|
|
else
|
|
{
|
|
if (_ManTaskReserve.ToString() != _ManageKindIdx.ToString() + _ManageTaskIdx.ToString())
|
|
{
|
|
UpdateAheadDetectUnallow(new StringBuilder(_DeviceIdx.ToString() + "±»ÈÎÎñÔ¤Ô¼" + _ManTaskReserve.ToString().Substring(1)), minMidx);
|
|
return true;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
//3£ºF_AheadDetect¼ì²â(¼ì²â¿ª¹Ø±àºÅ×é¡°;¡±)
|
|
if (AheadDetectOK(minMidx, _AheadDetect) == true)//Ìáǰ¼ì²âͨ¹ý
|
|
{
|
|
devinfo = Model.CGetInfo.GetDeviceInfo(_DeviceIdx);
|
|
if (_DeviceIdx == devinfo.VirtualStack && devinfo.DeviceKind == 1)
|
|
{
|
|
AssignStackNo(_DeviceIdx, minMidx, ManageKindIdx, ManageTaskIdx);
|
|
return true;//20120906
|
|
|
|
}
|
|
#region ¶à²æ¶Ñ¶â»ú¼ì²â£¬ÄÜͬ²½µÄDoubleForkÊÇ·ñAheadDetectOK
|
|
//20100323
|
|
devinfo = Model.CGetInfo.GetDeviceInfo(_DeviceIdx);
|
|
if (devinfo.IfCorrelDoubleFork == "1" && devinfo.DeviceKind == 1)
|
|
{
|
|
int[] synctask = Model.CGeneralFunction.MutiForkIfSync(minMidx, _DeviceIdx, _DeviceKind);
|
|
if (synctask != null)//20120616
|
|
{
|
|
if ((synctask.GetLength(0) == 1) && (synctask[0] == minMidx)) return true;//20120616µÈ´ýδ²ð·ÖµÄ¿Éͬ²½Ö´ÐеÄÈÎÎñ
|
|
string[] df = null;
|
|
Dictionary<int, string[]> mforkmonitorinfo = Model.CGeneralFunction.GetDoubleForkMonitorInfo(minMidx, _DeviceIdx);
|
|
foreach (int i in mforkmonitorinfo.Keys)
|
|
{
|
|
if (Array.IndexOf<int>(synctask, i) >= 0)
|
|
{//20120906
|
|
df = mforkmonitorinfo[i];
|
|
if (df != null)
|
|
{
|
|
if (AheadDetectOK(Convert.ToInt32(df[0]), df[1]) == false)//¶à²æ¹ØÁªÌáǰ¼ì²âʧ°Ü
|
|
{
|
|
return true;
|
|
}
|
|
#region ¹ØÁªÖ¸Áî²»ÊǵÚÒ»¸öÖ¸Áî²»ÄÜ·¢ËÍ
|
|
int rmankind = Model.CGeneralFunction.GetManageTaskKindIndexFromMonitor(Convert.ToInt32(df[0]));
|
|
int rman = Model.CGeneralFunction.GetManageTaskIndexfromMonitor(Convert.ToInt32(df[0]));
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT MIN(F_MonitorIndex) AS mmi FROM dbo.T_Monitor_Task WHERE (F_ManageTaskIndex = ").Append(rman).Append(") AND (F_ManageTASKKINDINDEX = ").Append(rmankind).Append(")");
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
if ((dv[0]["mmi"] != DBNull.Value) && (dv[0]["mmi"].ToString() != df[0]))
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
#endregion
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
#endregion
|
|
|
|
//¼ì²éͬ²½ÔËÐеĹØÁªÉ豸F_AssociateDeviceIndex
|
|
//4£ºÊÇ·ñÓйØÁªÉ豸ÃüÁ
|
|
#region ÊÇ·ñÓйØÁªÉ豸ÃüÁî
|
|
|
|
//AssociateDevice = ccf.GetAssociateDevice(minMidx);
|
|
if (_Associate != 0)
|
|
{
|
|
//5£ºÈç¹ûÓУ¬ÕÒµ½¿ÉÒÔÔËÐеĹØÁªÉ豸µÄÉ豸ָÁî,ÄÜ·ñÔËÐУ¿
|
|
//ÖØ¸´µÝ¹éµ½2
|
|
//split = AssociateDevice.Split(sep);
|
|
adidx = _Associate;
|
|
if (adidx != 0)
|
|
{
|
|
#region ÓйØÁªÈÎÎñ
|
|
|
|
if (ccf.GetAssociateMonitor(minMidx) == 0)
|
|
{
|
|
RefreshMonitorEventArgs rmea = new RefreshMonitorEventArgs("tsStatus", "É豸ָÁ" + minMidx.ToString() + "ÎÞ·¨»ñµÃ¹ØÁªÈÎÎñ" + adidx.ToString() + "£¬²»ÄÜ·¢ËÍ´ËÀàÃüÁ");
|
|
OnRefreshMonitor(rmea);
|
|
return true;
|
|
}
|
|
if (GetFirstDeviceIFLocked(adidx, false) == false)
|
|
{
|
|
//6£º·¢Ë͹ØÁªÉ豸ÃüÁî
|
|
//CStaticClass.MessageIndex++;
|
|
CStaticClass.MessageIndex = 1;
|
|
msgIdx = (CStaticClass.MessageIndex);
|
|
sdo = CommModeCreate.CreateSendDeviceOrder(_DeviceIdx);
|
|
//ÅжÏÊÇ·ñΪ¶Ñ¶â»úÉ豸
|
|
bool sendok;
|
|
int[] gc = new int[6] { _NumParam2, _NumParam3, _NumParam1, _NumParam5, _NumParam6, _NumParam4 }; //ccf.GetCoordinatesFromMonitorTask(adidx);//»ñµÃ×ø±ê
|
|
|
|
if ((_DeviceKind == 1) || (_DeviceKind == 6))
|
|
{
|
|
|
|
//1£º¶Ñ¶â»ú£»4£ºRGV£»6£ºAGVÈç¹ûÐèÒªÓÅ»¯µ÷¶È£¨É豸±íµÄF_NeedOptimize='1'£©
|
|
//Ö±½ÓдÈë±í£ºT_Monitor_Task_Child£¬²»·¢ËÍÃüÁî
|
|
if (ccf.NeedOptimize(_DeviceIdx) == true)
|
|
{
|
|
ccf.InsertMonitorOptimizeChildTask(adidx);
|
|
sendok = true;
|
|
}
|
|
else
|
|
{
|
|
sendok = sdo.SendDeviceOrder(msgIdx, adidx, _DeviceOrder,
|
|
_DeviceIdx, gc[0], gc[1], gc[2], gc[3], gc[4], gc[5]);
|
|
}
|
|
|
|
}
|
|
else if (_DeviceKind == 4)
|
|
{
|
|
if (ccf.NeedOptimize(_DeviceIdx) == true)
|
|
{
|
|
ccf.InsertMonitorOptimizeChildTask(adidx);
|
|
sendok = true;
|
|
}
|
|
else
|
|
{
|
|
sendok = sdo.SendDeviceOrder(msgIdx, adidx, _DeviceOrder, _DeviceIdx, gc[2]);
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
sendok = sdo.SendDeviceOrder(msgIdx, adidx, _DeviceOrder, _DeviceIdx, gc[5]);
|
|
}
|
|
if (sendok == false)
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
//8£º¸ü¸Ä×÷Òµ¼Ç¼µÄ״̬F_StatusΪ1,¸ü¸ÄÉ豸ΪռÓÃ״̬£¨T_Base_deviceµÄF_LockedState=É豸ָÁîµ¥£©
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("update T_Monitor_Task set F_StartTime='").Append(DateTime.Now.ToString("u")).Append("',F_Status='1' where F_MonitorIndex=").Append(adidx);
|
|
dbo.ExceSQL(sql.ToString());
|
|
|
|
|
|
//·µ»Øµ½ÔÀ´É豸ֵ
|
|
_DeviceIdx = DeviceIdx;//É豸Ë÷Òý
|
|
_routeID = routeID;//·¾¶Î¨Ò»Ë÷Òý
|
|
_serialNumber = serialNumber;//·¾¶ÉϵÄÉ豸·½ÏòÐÔÁ´±íµÄÐòºÅ
|
|
_ManageTaskIdx = ManageTaskIdx;//µ÷¶ÈÈÎÎñË÷Òý
|
|
_ManageKindIdx = ManageKindIdx;//µ÷¶ÈÈÎÎñÀàÐÍ
|
|
_DeviceOrder = DeviceOrder;//É豸ÃüÁî
|
|
_LockedState = LockedState;
|
|
_Associate = Associate;
|
|
_ManTaskReserve = ManTaskReserve;
|
|
_AheadDetect = AheadDetect;
|
|
_NumParam1 = NumParam1;
|
|
_NumParam2 = NumParam2;
|
|
_NumParam3 = NumParam3;
|
|
_NumParam4 = NumParam4;
|
|
_NumParam5 = NumParam5;
|
|
_NumParam6 = NumParam6;
|
|
_TxtParam = TxtParam;
|
|
_DeviceKind = DeviceKind;
|
|
_OutsideAltDevice = OutsideAltDevice;
|
|
_InsideAltDevice = InsideAltDevice;
|
|
_StartDevice = StartDevice;
|
|
_EndDevice = EndDevice;
|
|
_RouteKind = RouteKind;
|
|
_AgvNo = AgvNo;
|
|
return false;
|
|
}
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
return true;
|
|
}
|
|
#endregion
|
|
}
|
|
else//
|
|
{
|
|
#region MyRegion
|
|
|
|
|
|
//·µ»Øµ½ÔÀ´É豸ֵ
|
|
_DeviceIdx = DeviceIdx;//É豸Ë÷Òý
|
|
_routeID = routeID;//·¾¶Î¨Ò»Ë÷Òý
|
|
_serialNumber = serialNumber;//·¾¶ÉϵÄÉ豸·½ÏòÐÔÁ´±íµÄÐòºÅ
|
|
_ManageTaskIdx = ManageTaskIdx;//µ÷¶ÈÈÎÎñË÷Òý
|
|
_ManageKindIdx = ManageKindIdx;//µ÷¶ÈÈÎÎñÀàÐÍ
|
|
_DeviceOrder = DeviceOrder;//É豸ÃüÁî
|
|
_LockedState = LockedState;
|
|
_Associate = Associate;
|
|
_ManTaskReserve = ManTaskReserve;
|
|
_AheadDetect = AheadDetect;
|
|
_NumParam1 = NumParam1;
|
|
_NumParam2 = NumParam2;
|
|
_NumParam3 = NumParam3;
|
|
_NumParam4 = NumParam4;
|
|
_NumParam5 = NumParam5;
|
|
_NumParam6 = NumParam6;
|
|
_TxtParam = TxtParam;
|
|
_DeviceKind = DeviceKind;
|
|
_OutsideAltDevice = OutsideAltDevice;
|
|
_InsideAltDevice = InsideAltDevice;
|
|
_StartDevice = StartDevice;
|
|
_EndDevice = EndDevice;
|
|
_RouteKind = RouteKind;
|
|
#endregion
|
|
CControlError = string.Format("²ð·Öµ÷¶ÈÈÎÎñµÃµ½µÄÉ豸ָÁîÓëÏêϸ·¾¶µÄ¼ìË÷µ½µÄ¹ØÁªÉ豸ָÁƥÅ䣬ϵͳ×÷ΪûÓйØÁªÉ豸ָÁî´¦Àí£¡");
|
|
return false;
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
#region ·µ»Øµ½ÔÀ´É豸ֵ
|
|
|
|
//·µ»Øµ½ÔÀ´É豸ֵ
|
|
_DeviceIdx = DeviceIdx;//É豸Ë÷Òý
|
|
_routeID = routeID;//·¾¶Î¨Ò»Ë÷Òý
|
|
_serialNumber = serialNumber;//·¾¶ÉϵÄÉ豸·½ÏòÐÔÁ´±íµÄÐòºÅ
|
|
_ManageTaskIdx = ManageTaskIdx;//µ÷¶ÈÈÎÎñË÷Òý
|
|
_ManageKindIdx = ManageKindIdx;//µ÷¶ÈÈÎÎñÀàÐÍ
|
|
_DeviceOrder = DeviceOrder;//É豸ÃüÁî
|
|
_LockedState = LockedState;
|
|
_Associate = Associate;
|
|
_ManTaskReserve = ManTaskReserve;
|
|
_AheadDetect = AheadDetect;
|
|
_NumParam1 = NumParam1;
|
|
_NumParam2 = NumParam2;
|
|
_NumParam3 = NumParam3;
|
|
_NumParam4 = NumParam4;
|
|
_NumParam5 = NumParam5;
|
|
_NumParam6 = NumParam6;
|
|
_TxtParam = TxtParam;
|
|
_DeviceKind = DeviceKind;
|
|
_OutsideAltDevice = OutsideAltDevice;
|
|
_InsideAltDevice = InsideAltDevice;
|
|
_StartDevice = StartDevice;
|
|
_EndDevice = EndDevice;
|
|
_RouteKind = RouteKind;
|
|
|
|
#endregion
|
|
return false;
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
else
|
|
{
|
|
return true;
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
|
|
return true;
|
|
|
|
}
|
|
#endregion
|
|
}
|
|
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
CControlError = string.Format("·¢ËÍÃüÁîµ÷ÓÃGetFirstDeviceIFLockedʱ£º{0}", ex.StackTrace + ex.Message);
|
|
|
|
return true;
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// ¼ì²âÖ¸¶¨É豸ÃüÁîµÄÖ´ÐÐÏȾöÌõ¼þÊÇ·ñ³ÉÁ¢
|
|
/// </summary>
|
|
/// <param name="minMidx">¼à¿ØÎ¨Ò»Ë÷Òý</param>
|
|
/// <returns>ÊÇ·ñ¼ì²âͨ¹ý£¬true±íʾÉ豸ִÐÐÃüÁîµÄÏȾöÌõ¼þ³ÉÁ¢</returns>
|
|
public bool AheadDetectOK(int minMidx, string _AheadDetect)
|
|
{
|
|
AheadDetectUnallow.Remove(0, AheadDetectUnallow.Length);//20110505
|
|
int[] States;
|
|
string dtime = DateTime.Now.ToString("u");
|
|
dtime = dtime.Substring(0, dtime.Length - 1);
|
|
int DeviceIdx = _DeviceIdx;
|
|
int TaskIdx = minMidx;
|
|
int fid = ccf.GetManageTaskIndexfromMonitor(TaskIdx);
|
|
int mti = ccf.GetManageTaskKindIndexFromMonitor(TaskIdx);
|
|
int DeviceKind = ccf.GetDeviceKindIdx(DeviceIdx);//20100617
|
|
int order = ccf.GetDeviceOrderFromMonitor(TaskIdx);
|
|
int DeviceOrder = _DeviceOrder;//É豸ÃüÁî
|
|
int StartDevice = _StartDevice;//µ±Ç°µ÷¶ÈÈÎÎñÆðµã
|
|
int EndDevice = _EndDevice;//µ±Ç°µ÷¶ÈÈÎÎñÖÕµã
|
|
//add for TJBS
|
|
int CONTROLTASKTYPE = ccf.GetFCONTROLTASKTYPEFromManageTask(mti, fid);
|
|
int intN1 = _NumParam1;
|
|
int intN2 = _NumParam2;
|
|
int intN3 = _NumParam3;
|
|
int intN4 = _NumParam4;
|
|
int intN5 = _NumParam5;
|
|
int intN6 = _NumParam6;
|
|
int statuss = ccf.GetManageTaskStatus(fid, TaskIdx);
|
|
#region ²¹³ä¶¥Éý»ú²»ÔÚ¸ßλµÄ¶¥ÉýÃüÁî
|
|
//if ((DeviceIdx >= 35000) && (DeviceIdx <= 35003)&&(order ==4))
|
|
//{//20120110²¹³ä¶¥Éý»ú²»ÔÚ¸ßλµÄ¶¥ÉýÃüÁî
|
|
|
|
// if (_AheadDetect.IndexOf("D-32036.6") >= 0)
|
|
// {
|
|
// if(CStaticClass.GetDevicePhotoelectric(32036,7)==1)
|
|
// {
|
|
// InsertUpDeviceUP(32036, mti, fid,minMidx);
|
|
// }
|
|
// }
|
|
// else if (_AheadDetect.IndexOf("D-32049.6") >= 0)
|
|
// {
|
|
// if (CStaticClass.GetDevicePhotoelectric(32049, 7) == 1)
|
|
// {
|
|
// InsertUpDeviceUP(32049, mti, fid, minMidx);
|
|
// }
|
|
// }
|
|
//}
|
|
#endregion
|
|
//20100706
|
|
devinfo = Model.CGetInfo.GetDeviceInfo(DeviceIdx);
|
|
////add for TJBS FIRE
|
|
//Model.MDevice devinfoFire;
|
|
//devinfoFire = Model.CGetInfo.GetDeviceInfo(12059);
|
|
//if (devinfoFire.SplitByte_6 ==1)
|
|
//{
|
|
// AheadDetectUnallow.Append("Fire WARING!");
|
|
// UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
|
|
// return false;
|
|
//}
|
|
|
|
|
|
if (DeviceIdx==11001 || DeviceIdx ==11002)
|
|
{
|
|
if (order ==4)
|
|
{
|
|
if (_NumParam4 == 2 && _NumParam5 == 53 && _NumParam6 == 1)
|
|
{
|
|
DataView dvVirP = new DataView();
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT F_SLocked from T_Base_Device where F_DeviceIndex = 12223 ");
|
|
dvVirP = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (Convert.ToInt32(dvVirP[0]["F_SLocked"]) != 0)
|
|
{
|
|
AheadDetectUnallow.Append("ÖÐתվ̨:2-53-1Óлõ£¡");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
//if (order == 5)
|
|
//{
|
|
// if (_NumParam1 == 2 && _NumParam2 == 53 && _NumParam3 == 1)
|
|
// {
|
|
// DataView dvVirP = new DataView();
|
|
// sql.Remove(0, sql.Length);
|
|
// sql.Append("SELECT F_SLocked from T_Base_Device where F_DeviceIndex = 12223 ");
|
|
// dvVirP = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
// if (Convert.ToInt32(dvVirP[0]["F_SLocked"]) != 0)
|
|
// {
|
|
// AheadDetectUnallow.Append("ÖÐתվ̨:2-53-1Óлõ£¡");
|
|
// UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
|
|
// return false;
|
|
// }
|
|
// }
|
|
//}
|
|
|
|
}
|
|
|
|
//add for TJBS
|
|
if (DeviceKind == 1 || DeviceKind == 4)
|
|
{
|
|
if (devinfo.SplitByte_7==1)
|
|
{
|
|
AheadDetectUnallow.Append("°²È«ÃÅ´ò¿ªÈÎÎñ²»ÔÊÐí·¢ËÍ£¡");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
|
|
return false;
|
|
}
|
|
}
|
|
if (ccf.GetBarCodeFromMonitor(minMidx) == "brbrbr")//±ÜÈÃÖ¸Áî¼ì²âÌõ¼þ20120110
|
|
{
|
|
int zc = 1, xc = 0;
|
|
GetStackRunX_Zcoor(DeviceIdx, out xc, out zc);
|
|
if (devinfo.RunState == 0 && xc == 0)
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
if (DeviceKind == 1 && order == 1)//»ØÔµã¼ì²âÌõ¼þ20120110
|
|
{
|
|
if (devinfo.RunState == 0)
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
//¼ì²â(¼ì²â¿ª¹Ø±àºÅ×é¡°;¡±)
|
|
DataView dv = new DataView();
|
|
DataView dvdv = new DataView();
|
|
try
|
|
{
|
|
|
|
if (devinfo.CommType == "OPCClient")//20100706 Ö»ÓÐOPCClientͨѶÀàÐ͵ļì²éÉ豸״̬
|
|
{
|
|
#region OPCͨѶÉ豸¼ì²âÉ豸ÊÇ·ñ¹ÊÕÏ
|
|
|
|
|
|
// //gds = CommModeCreate.CreateGetDeviceState(DeviceIdx);
|
|
// try
|
|
// {
|
|
// //States = gds.GetDeviceState(DeviceIdx, TaskIdx);//1Íê³É,2ÈÎÎñºÅ,5É豸ºÅ
|
|
// if (DeviceKind == 13)
|
|
// {
|
|
// DeviceIdx = GetNowDevice(minMidx);
|
|
// }
|
|
// States = CStaticClass.GetDeviceState(DeviceIdx);
|
|
|
|
// }
|
|
// catch (Exception ex)
|
|
// {//20110505
|
|
// RefreshMonitorEventArgs rmea = new RefreshMonitorEventArgs("tsStatus", "Ìáǰ¼ì²âʱ£º" + ex.Message);
|
|
// OnRefreshMonitor(rmea);
|
|
// return false;
|
|
// }
|
|
// if (States == null)//û½ÓÊÕµ½Èκηµ»ØÖµ
|
|
// {
|
|
// RefreshMonitorEventArgs rmea = new RefreshMonitorEventArgs("tsStatus", "·¢ËÍÃüÁîʱ£¬Ìáǰ¼ì²âûÊÕµ½PLCÊý¾Ý£¡");
|
|
// OnRefreshMonitor(rmea);
|
|
|
|
// return false;
|
|
// }
|
|
|
|
// if (((States[1] == 1) || (States[1] >= 30)) && ((DeviceKind != 13) && (DeviceKind != 31)))//ÔËÐлòÕß¹ÊÕÏ
|
|
// {
|
|
// if (States[1] >= 30)
|
|
// {
|
|
// devinfo = Model.CGetInfo.GetDeviceInfo(DeviceIdx);
|
|
// int ErrId = States[1];
|
|
// //20110505
|
|
// errs = Model.CGetInfo.GetErrorInfo(Convert.ToInt32(_DeviceKind.ToString() + States[1].ToString()));
|
|
// AheadDetectUnallow.Append(DeviceIdx + "ÓйÊÕÏ£º" + errs.ErrorName);
|
|
// //20090910
|
|
// //Óйý¼Ç¼µÄ¹ÊÕÏÉ豸µÄÈÎÎñºÅ£¬²»ÔÙÖØ¸´´¦Àí
|
|
// sql.Remove(0, sql.Length);
|
|
// sql.Append("SELECT F_DeviceIndex FROM T_Base_Device where F_DeviceIndex=" ).Append( DeviceIdx ).Append( " and F_ErrorTaskNo=" ).Append( TaskIdx );
|
|
// ;
|
|
// dt = dbo.ExceSQL(sql.ToString()).Tables[0];
|
|
// if (dt.Rows.Count >= 1)
|
|
// {
|
|
// //20110505
|
|
// UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
|
|
// return false;
|
|
// }
|
|
// //¼Ç¼·¢Éú¹ÊÕϵÄÉ豸ÕýÔÚÖ´ÐеÄÈÎÎñºÅ
|
|
// sql.Remove(0, sql.Length);
|
|
// sql.Append("update T_Base_Device set F_ErrorTaskNo= " ).Append( TaskIdx ).Append( " where F_DeviceIndex= " ).Append( DeviceIdx);
|
|
// dbo.ExceSQL(sql.ToString());
|
|
|
|
// if (CStaticClass.IsEquals(devinfo.ReturnMessage, States, 2) == true) return false;
|
|
|
|
// //if ((_DeviceKind == 2) || (_DeviceKind == 4))
|
|
// //{//ÊäËÍ»ú¹ÊÕÏÇåÁã
|
|
// // sdo = CommModeCreate.CreateSendDeviceOrder(DeviceIdx);
|
|
// // sdo.SendDeviceOrder(2, 0, 0, DeviceIdx, 0);
|
|
// //}
|
|
// //if (_DeviceKind == 1) //¶Ñ¶â»ú¡¢RGV
|
|
// //{
|
|
|
|
// // sdo = CommModeCreate.CreateSendDeviceOrder(DeviceIdx);
|
|
// // sdo.SendDeviceOrder(2, 0, 0, DeviceIdx, 0, 0, 0, 0, 0, 0);
|
|
// //}
|
|
// //20110505
|
|
// RefreshMonitorEventArgs rmea = new RefreshMonitorEventArgs("tsStatus", "É豸Ë÷Òý" + DeviceIdx + "ÓйÊÕÏ£º" + errs.ErrorName);
|
|
// OnRefreshMonitor(rmea);
|
|
// rmea = new RefreshMonitorEventArgs("notifyIcon1", "¾¯¸æ:" + devinfo.DeviceName + "," + DeviceIdx + "·¢Éú¹ÊÕÏ£º" + errs.ErrorName);
|
|
// OnRefreshMonitor(rmea);
|
|
|
|
// if (mti == 1)
|
|
// {
|
|
// sql.Remove(0, sql.Length);
|
|
// sql.Append("update IO_Control set ERROR_TEXT='" ).Append( "×¼±¸Ö´ÐйÜÀíÈÎÎñʱ£º" ).Append( devinfo.DeviceName ).Append( "," ).Append( DeviceIdx ).Append( errs.ErrorName ).Append( "' where Control_ID=" ).Append( fid);
|
|
// dboM.ExceSQL(sql.ToString());
|
|
// }
|
|
// sql.Remove(0, sql.Length);
|
|
// sql.Append("update T_Manage_Task set FERRORCODE='" ).Append( "×¼±¸Ö´ÐйÜÀíÈÎÎñʱ£º" ).Append( devinfo.DeviceName ).Append( "," ).Append( DeviceIdx ).Append( errs.ErrorName ).Append( "' where F_ManageTaskKindIndex=" ).Append( mti ).Append( " and FID=" ).Append( fid);
|
|
// dbo.ExceSQL(sql.ToString());
|
|
// CDataChangeEventArgs cea = new CDataChangeEventArgs(null, null);
|
|
// OnDataChange("·¢ËÍÖ¸ÁîÌáǰ¼ì²âʱ£¬",cea);
|
|
|
|
|
|
// }
|
|
// return false;
|
|
// }
|
|
// #endregion
|
|
|
|
//}
|
|
//else
|
|
//{
|
|
// #region ÑÓ¼ª£º20100319 AGVµÄÖ¸Áî67£ºÔÊÐíAGV·Å²ÐÍÐʱ£¬Èç¹ûÓÐ1219µÄËͳöÖ¸Áî¡¢1220µÄÖ¸ÁîÕýÔÚÖ´ÐлòÕßÒÑ·¢ËÍ£¬Ìáǰ¼ì²âʧ°Ü£¬ÐèÒªµÈ´ý
|
|
|
|
|
|
// //
|
|
|
|
// //if (ccf.GetDeviceOrderFromMonitor(minMidx) == 67)
|
|
// //{
|
|
// // dv = dbo.ExceSQL("SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_DeviceIndex = 1219) AND (F_DeviceCommandIndex = 6) AND (F_Status > 0)").Tables[0].DefaultView;
|
|
// // if (dv.Count > 0)
|
|
// // {
|
|
// // return false;
|
|
// // }
|
|
// // dv = dbo.ExceSQL("SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_DeviceIndex = 1220) AND (F_Status > 0)").Tables[0].DefaultView;
|
|
// // if (dv.Count > 0)
|
|
// // {
|
|
// // return false;
|
|
// // }
|
|
// //}
|
|
#endregion
|
|
}
|
|
#region ¸ß¶ËÉ豸UÏßÕýÔÚÔËÐÐ×ÜÊý¿ØÖÆ
|
|
//if ((DeviceKind == 13) && (order==6))
|
|
//{//20120328
|
|
// int arrdevice = ccf.GetDeviceArrowFromMonitor(minMidx);
|
|
// int startdevice = ccf.GetDeviceStartFromMonitor(minMidx);
|
|
// object ob0 = dbo.GetSingle(string.Format("SELECT count(F_MonitorIndex) as UTaskCount FROM T_Monitor_Task where F_DeviceIndex={0} and F_DeviceCommandIndex={1} and F_Status>0", DeviceIdx, order));
|
|
// DataView dvu = dbo.ExceSQL(string.Format("SELECT F_MaxRunTask,F_OutputUDevice,F_InputUDevice FROM T_Base_UArea WHERE (F_UCODE = {0})", DeviceIdx)).Tables[0].DefaultView;
|
|
// if ((dvu.Count>0) && (ob0 != null))
|
|
// {
|
|
// if (arrdevice == Convert.ToInt32(dvu[0]["F_OutputUDevice"]))
|
|
// {
|
|
// //if (Convert.ToInt32(ob0) >= Convert.ToInt32(dvu[0]["F_MaxRunTask"]))
|
|
// //{
|
|
// // AheadDetectUnallow.Append("UÏߣº" + DeviceIdx.ToString() + "ÕýÔÚÔËÐÐÈÎÎñÒѾ³¬ÏÞ£¡");
|
|
// // UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
|
|
// // return false;
|
|
// //}
|
|
|
|
// }
|
|
// else
|
|
// {
|
|
// if ((Convert.ToInt32(ob0) >= (Convert.ToInt32(dvu[0]["F_MaxRunTask"]) - 2)) && (startdevice == Convert.ToInt32(dvu[0]["F_InputUDevice"])))
|
|
// {
|
|
// AheadDetectUnallow.Append("UÏߣº" + DeviceIdx.ToString() + "ÕýÔÚÔËÐÐÈÎÎñÒѾ³¬ÏÞ£¡");
|
|
// UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
|
|
// return false;
|
|
// }
|
|
// if ((Convert.ToInt32(ob0) >= (Convert.ToInt32(dvu[0]["F_MaxRunTask"]) - 1)) && (startdevice != Convert.ToInt32(dvu[0]["F_InputUDevice"])))
|
|
// {
|
|
// //AheadDetectUnallow.Append("UÏߣº" + DeviceIdx.ToString() + "ÕýÔÚÔËÐÐÈÎÎñÒѾ³¬ÏÞ£¡");
|
|
// //UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
|
|
// //return false;
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
|
|
//}
|
|
#endregion
|
|
|
|
#region add for TJBS Ë«Ïò¿ØÖÆ
|
|
//Èë¿âÁ½½ÚÊäËÍÏßÊÇ¿ÕÏÐ ÎÞ»õ
|
|
//if (order == 4 && "11001,11002,11003".Contains(DeviceIdx.ToString())&& CONTROLTASKTYPE == 2)
|
|
//{
|
|
// string strCheckdevicee = string.Empty;
|
|
|
|
// switch (EndDevice)
|
|
// {
|
|
// case 12108:
|
|
// strCheckdevicee = "12109;12108";
|
|
// break;
|
|
// case 12113:
|
|
// strCheckdevicee = "12113;12112";
|
|
// break;
|
|
// case 12114:
|
|
// strCheckdevicee = "12114;12115";
|
|
// break;
|
|
// case 12118:
|
|
// strCheckdevicee = "12118;12119";
|
|
// break;
|
|
// case 12127:
|
|
// strCheckdevicee = "12127;12126";
|
|
// break;
|
|
// case 12122:
|
|
// strCheckdevicee = "12122;12123";
|
|
// break;
|
|
// case 12059:
|
|
// strCheckdevicee = "12059;12060";
|
|
// break;
|
|
// case 12063:
|
|
// strCheckdevicee = "12064;12063";
|
|
// break;
|
|
// case 12065:
|
|
// strCheckdevicee = "12066;12065";
|
|
// break;
|
|
// case 12069:
|
|
// strCheckdevicee = "12069;12070";
|
|
// break;
|
|
// case 12077:
|
|
// strCheckdevicee = "12078;12077";
|
|
// break;
|
|
// case 12073:
|
|
// strCheckdevicee = "12074;12073";
|
|
// break;
|
|
// case 12079:
|
|
// strCheckdevicee = "12079;12080";
|
|
// break;
|
|
// }
|
|
// string[] checkGoods = strCheckdevicee.Split(';');
|
|
// int goodscounts = 0;
|
|
// for (int n = 0; n < checkGoods.Length; n++)
|
|
// {
|
|
|
|
// if (ccf.GetTransDeviceGoodsCounts(checkGoods[n].ToString()) > 0)
|
|
// {
|
|
// goodscounts = goodscounts + ccf.GetTransDeviceGoodsCounts(checkGoods[n].ToString());
|
|
// }
|
|
// }
|
|
// if (goodscounts > 0)
|
|
// {
|
|
// AheadDetectUnallow.Append("ÖÕµãΪ" + EndDevice.ToString() + "´æÔÚ³ö¿âվ̨Óлõ");
|
|
// UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
|
|
// return false;
|
|
// }
|
|
//}
|
|
#endregion
|
|
|
|
#region add for TJBS ¾ù·ÖÂß¼
|
|
//DataView dvChange = dbo.ExceSQL("SELECT F_Change FROM T_Monitor_Task where F_Change =1 and F_MONITORINDEX=" + TaskIdx).Tables[0].DefaultView;
|
|
//if (DeviceIdx == 12043 && order == 6 && EndDevice == 12041 && intN4 == 12048 && statuss ==0&& dvChange.Count == 0)
|
|
//{
|
|
// Model.MDevice devinfo12058;
|
|
// devinfo12058 = Model.CGetInfo.GetDeviceInfo(12058);
|
|
// Model.MDevice devinfo12048;
|
|
// devinfo12048 = Model.CGetInfo.GetDeviceInfo(12048);
|
|
// Model.MDevice devinfo12055;
|
|
// devinfo12055 = Model.CGetInfo.GetDeviceInfo(12055);
|
|
// int intChooseDevice = 0;
|
|
// //¼òµ¥Ð´ 12058 ÄÜ»º´æ2 12055 »º´æ3 12048 ÄÜ»º´æ 5
|
|
// //°´Ë³ÐòÅжÏÁË
|
|
// string strCheckEnddevice = "12058;12055;12048";
|
|
// int intUpN4 = 0;
|
|
// int intTaskCount12058 = ccf.GetTransDeviceGoodsCounts("12058");
|
|
// int intTaskCount12055 = ccf.GetTransDeviceGoodsCounts("12055");
|
|
// int intTaskCount12048 = ccf.GetTransDeviceGoodsCounts("12048");
|
|
// string[] checkGoods = strCheckEnddevice.Split(';');
|
|
// for (int i = 0; i < checkGoods.Length; i++)
|
|
// {
|
|
// int intTaskCount = Convert.ToInt32(dbo.GetSingle("select count(*) from T_MONITOR_TASK where F_NUMPARAM4 = " + checkGoods[i].ToString() + " and F_STATUS <> 0 and F_DEVICECOMMANDINDEX = 6"));
|
|
// if (Convert.ToInt32(checkGoods[i]) == 12058)
|
|
// {
|
|
// intTaskCount12058 += intTaskCount;
|
|
// }
|
|
// else if (Convert.ToInt32(checkGoods[i]) == 12055)
|
|
// {
|
|
// intTaskCount12055 += intTaskCount;
|
|
// }
|
|
// else if (Convert.ToInt32(checkGoods[i])==12048)
|
|
// {
|
|
// intTaskCount12048 += intTaskCount;
|
|
// }
|
|
// }
|
|
// if (intTaskCount12058 <=2 && devinfo12058.RunState <=1)
|
|
// {
|
|
// intChooseDevice = 12058;
|
|
// }
|
|
// else if (intTaskCount12055 <= 2 && devinfo12055.RunState <= 1)
|
|
// {
|
|
// intChooseDevice = 12055;
|
|
// }
|
|
// else if (intTaskCount12048 <= 4 && devinfo12048.RunState <= 1)
|
|
// {
|
|
// intChooseDevice = 12048;
|
|
// }
|
|
// if (intChooseDevice !=0)
|
|
// {
|
|
// object[] obtt = new object[5] { intChooseDevice, fid, TaskIdx, 0,1 };
|
|
// // Ìæ»»Ð¡ÈÎÎñÖÕµãλÖÃ
|
|
// dbo.ExceSQL(string.Format("UPDATE T_Monitor_Task SET F_NUMPARAM4 = {0} ,F_Change = {4} WHERE F_MANAGETASKINDEX={1} and (F_MONITORINDEX ={2}) and (F_STATUS = {3}) ", obtt));
|
|
|
|
// sql.Remove(0, sql.Length);
|
|
// sql.Append("update T_Base_Device set F_LockedState=0,F_MANTASKRESERVE = 0,F_HaveGoods=0 where F_DEVICEINDEX=").Append(DeviceIdx);
|
|
// dbo.ExceSQL(sql.ToString());
|
|
|
|
// return false;
|
|
|
|
// //Ìáǰ¼ì²â ²»ÓøÄ
|
|
// //object[] ob = new object[4] { strAhead, FID, TaskIdx, 0 };
|
|
// //// Ìæ»»Ð¡ÈÎÎñÖÕµãλÖÃ
|
|
// //dbo.ExceSQL(string.Format("UPDATE T_Monitor_Task SET F_AHEADDETECT = '{0}' WHERE F_MANAGETASKINDEX={1} and (F_MONITORINDEX ={2}) and (F_STATUS = {3})", ob));
|
|
|
|
// }
|
|
// else
|
|
// {
|
|
// if (intN4 == 12048)
|
|
// {
|
|
// AheadDetectUnallow.Append("No available platforms exist");
|
|
// UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
|
|
// return false;
|
|
// }
|
|
// }
|
|
|
|
//}
|
|
#endregion
|
|
|
|
#region 202410 HSCP - ³ö¿âÈÎÎñ¼ì²éÏà¹ØÕ¾Ì¨µÄ³öÈë¿âÊôÐÔ
|
|
if (CONTROLTASKTYPE == 2)
|
|
{
|
|
dv = dbo.ExceSQL("select * from T_Base_Station_Model where F_CheckStation = " + EndDevice).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
// վ̨ÉèÖüì²é£¬¼ì²éģʽ
|
|
int StationMode = Convert.ToInt32(dv[0]["F_Station_Type"]);
|
|
if (StationMode == 1)
|
|
{
|
|
AheadDetectUnallow.Append(EndDevice.ToString()).Append("վ̨Èë¿âģʽ");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
|
|
return false;//
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
|
|
#region Ìáǰ¼ì²âÐÅÏ¢´¦Àí
|
|
if ((_AheadDetect != "") && (_AheadDetect != null))
|
|
{
|
|
|
|
|
|
char[] cc = new char[1];
|
|
cc[0] = ';';
|
|
string[] AheadDetect = _AheadDetect.Split(cc);
|
|
string[] sp;
|
|
|
|
//ͨ¹ý³éÏóÀ๤³§»ñµÃIGetDeviceStateµÄÅÉÉúÀà
|
|
//IGetDeviceState GDS;
|
|
int s = 0;
|
|
//int[] sss;
|
|
int fs = 1;
|
|
//int[] fsss;
|
|
//ÌáÈ¡¹âµç¿ª¹ØË÷ÒýÖµ
|
|
int devk = 0;
|
|
#region ²éÕÒËùÓнûÓÃÉ豸//20141201ÕÅÀÚ·¢ÏÖ´íÎó£¬Ó¦¸ÃÔö¼ÓÉ豸ÊÇ·ñ±»Í£ÓÃ
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT F_DeviceIndex FROM T_Base_Device WHERE (F_LockedState = - 1) ");
|
|
DataView dvJY = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;//20141201ÕÅÀÚ·¢ÏÖ´íÎó£¬Ó¦¸ÃÔö¼ÓÉ豸ÊÇ·ñ±»Í£ÓÃ
|
|
dvJY.Sort = "F_DeviceIndex";//20141201ÕÅÀÚ·¢ÏÖ´íÎó£¬Ó¦¸ÃÔö¼ÓÉ豸ÊÇ·ñ±»Í£ÓÃ
|
|
#endregion
|
|
for (int i = AheadDetect.GetLowerBound(0); i <= AheadDetect.GetUpperBound(0); i++)
|
|
{
|
|
if (AheadDetect[i].Trim().Length <= 0) continue;
|
|
#region ¼ì²âÂß¼ÓÐ̽Îï
|
|
|
|
if (AheadDetect[i].Trim().Substring(0, 1).ToUpper() == "H")//¼ì²âÂß¼ÓÐ̽Îï
|
|
{
|
|
devk = ccf.GetDeviceKindIdx(Convert.ToInt32(AheadDetect[i].Trim().Substring(1)));
|
|
if (devk == 9)
|
|
{//»ų́ÐèÒª´Ó¹ÜÀíÉ豸±í¶ÁÈ¡
|
|
//sql.Remove(0, sql.Length);
|
|
//sql.Append("SELECT FID FROM T_ITEMDEVICESTATION WHERE (FCODE = '" ).Append( AheadDetect[i].Trim().Substring(1) ).Append( "') AND (FSTATUS = '1002')");
|
|
//if (dboM.ExceSQL(sql.ToString()).Tables[0].DefaultView.Count > 0)
|
|
//{
|
|
// fs = fs & 1;
|
|
//}
|
|
//else
|
|
//{
|
|
// fs = fs & 0;
|
|
//}
|
|
}
|
|
else
|
|
{
|
|
//±¾µØÉ豸±í¶ÁÈ¡
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT F_DeviceIndex, F_HaveGoods FROM T_Base_Device where F_DeviceIndex=").Append(
|
|
Convert.ToInt32(AheadDetect[i].Trim().Substring(1)));
|
|
dvdv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dvdv.Count > 0)
|
|
{
|
|
int havegoods = -1;
|
|
if (Convert.ToInt32(dvdv[0]["F_HaveGoods"]) == 0)//20110505
|
|
{
|
|
havegoods = 0;
|
|
AheadDetectUnallow.Append(AheadDetect[i].Trim().Substring(1) + "É豸Âß¼ÎÞÎ");
|
|
}
|
|
else
|
|
{
|
|
havegoods = 1;
|
|
}
|
|
fs = fs & havegoods;
|
|
}
|
|
}
|
|
continue;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ¼ì²âÂß¼ÎÞ̽Îï
|
|
|
|
if (AheadDetect[i].Trim().Substring(0, 1).ToUpper() == "N")//¼ì²âÂß¼ÎÞ̽Îï
|
|
{
|
|
devk = ccf.GetDeviceKindIdx(Convert.ToInt32(AheadDetect[i].Trim().Substring(1)));
|
|
if (devk == 9)
|
|
{//»ų́ÐèÒª´Ó¹ÜÀíÉ豸±í¶ÁÈ¡;20101028¹ÜÀíÒÀÀµÈÎÎñ¿ØÖÆ»ų́µÄվ̨ÊÇ·ñÓÐÎï
|
|
//if (dboM.ExceSQL("SELECT FID FROM T_ITEMDEVICESTATION WHERE (FCODE = '" + AheadDetect[i].Trim().Substring(1) + "') AND (FSTATUS = '1002')").Tables[0].DefaultView.Count > 0)
|
|
//{
|
|
// fs = fs & 1;
|
|
//}
|
|
//else
|
|
//{
|
|
// fs = fs & 0;
|
|
//}
|
|
}
|
|
else
|
|
{
|
|
//±¾µØÉ豸±í¶ÁÈ¡
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT F_DeviceIndex, F_HaveGoods FROM T_Base_Device where F_DeviceIndex=").Append(
|
|
Convert.ToInt32(AheadDetect[i].Trim().Substring(1)));
|
|
dvdv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dvdv.Count > 0)
|
|
{
|
|
if (Convert.ToInt32(dvdv[0]["F_HaveGoods"]) > 0)//20110505
|
|
{
|
|
AheadDetectUnallow.Append(AheadDetect[i].Trim().Substring(1) + "É豸Âß¼ÓÐÎ");
|
|
}
|
|
s = s + Convert.ToInt32(dvdv[0]["F_HaveGoods"]);
|
|
}
|
|
}
|
|
continue;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ¼ì²âÉ豸ÊÇ·ñ¿ÕÏÐ
|
|
|
|
//20090803¼ì²âÉ豸ÊÇ·ñ¿ÕÏÐidle
|
|
if (AheadDetect[i].Trim().Substring(0, 1).ToUpper() == "I")//¼ì²âÉ豸ÊÇ·ñ¿ÕÏÐidle
|
|
{
|
|
int idev = Convert.ToInt32(AheadDetect[i].Trim().Substring(1));
|
|
if (idev.ToString().Length == 6)
|
|
{
|
|
//idev = Convert.ToInt32(idev.ToString());
|
|
idev = Convert.ToInt32(idev.ToString().Substring(0, 5));//
|
|
}
|
|
States = CStaticClass.GetDeviceState(idev);
|
|
// 202411 HSCP ¼ì²éÉ豸ÊÇ·ñ¿ÕÏУ¬È¥³ýÐéÄâÉ豸
|
|
if (States != null && idev != 15310 && idev != 15320)
|
|
{
|
|
int kind = ccf.GetDeviceKindIdx(Convert.ToInt32(AheadDetect[i].Trim().Substring(1)));
|
|
//if ((States[1] == 5) && (ccf.GetDeviceKindIdx(Convert.ToInt32(AheadDetect[i].Trim().Substring(1))) == 2))
|
|
//{//20120409Ö»ÓÐÊäËÍ»úµÄÍê³É¿É×÷Ϊ¿ÕÏÐ
|
|
// States[1] = 0;
|
|
//}
|
|
if ((DeviceHandTaskIfRun(Convert.ToInt32(AheadDetect[i].Trim().Substring(1))) == true) && (kind == 1))
|
|
{//20120207
|
|
AheadDetectUnallow.Append(AheadDetect[i].Trim().Substring(1) + "ÊÖ¹¤ÈÎÎñ»òÕß±ÜÈÃÈÎÎñÕýÔÚÔËÐУ¡");
|
|
States[1] = 1;
|
|
}
|
|
if (States[1] != 0)//20110505
|
|
{
|
|
AheadDetectUnallow.Append(AheadDetect[i].Trim().Substring(1) + "É豸²»¿ÕÏУ¡");
|
|
}
|
|
s = s + States[1];
|
|
}
|
|
if (dvJY.Find(idev) >= 0)
|
|
{//20141201ÕÅÀÚ·¢ÏÖ´íÎó£¬Ó¦¸ÃÔö¼ÓÉ豸ÊÇ·ñ±»Í£ÓÃ
|
|
AheadDetectUnallow.Append(AheadDetect[i].Trim().Substring(1) + "É豸±»Í£Óã¡");
|
|
s += 1;
|
|
}
|
|
continue;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ¼ì²âF_NumParam1£¬F_NumParam4É豸ÎÞÕýÔÚÔËÐеÄÈÎÎñ
|
|
|
|
if (AheadDetect[i].Trim().Substring(0, 1).ToUpper() == "U")//¼ì²âF_NumParam1£¬F_NumParam4É豸ÎÞÕýÔÚÔËÐеÄÈÎÎñ
|
|
{
|
|
sql.Clear();
|
|
sql.Append(string.Format("SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_NumParam1 = {0} or F_NumParam4 = {0}) AND (F_Status > 0)", Convert.ToInt32(AheadDetect[i].Trim().Substring(1))));
|
|
dvdv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dvdv.Count > 0)
|
|
{
|
|
s = s + 1;
|
|
AheadDetectUnallow.Append(AheadDetect[i].Trim().Substring(1) + "ÓÐÈÎÎñÕýÔÚÖ´ÐУ¡");
|
|
}
|
|
else
|
|
{
|
|
s = s + 0;
|
|
}
|
|
|
|
continue;
|
|
}
|
|
#endregion
|
|
|
|
#region ¼ì²â»ý·ÅÏßÕýÔÚÖ´ÐÐÈÎÎñ¸öÊý
|
|
|
|
if (AheadDetect[i].Trim().Substring(0, 1).ToUpper() == "J")//¼ì²â»ý·ÅÏßÕýÔÚÖ´ÐÐÈÎÎñ¸öÊý£¨J12008,2£©
|
|
{
|
|
cc[0] = ',';
|
|
sp = AheadDetect[i].Trim().Substring(1).Split(cc);
|
|
if (sp.GetLength(0) == 2)
|
|
{
|
|
sql.Clear();
|
|
sql.Append(string.Format("SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_DeviceIndex={0}) AND (F_Status > 0)", Convert.ToInt32(sp[0])));
|
|
dvdv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dvdv.Count >= Convert.ToInt32(sp[1]))
|
|
{
|
|
s = s + 1;
|
|
AheadDetectUnallow.Append(AheadDetect[i].Trim().Substring(1) + "»ý·ÅÈÎÎñ³¬ÏÞ£¡");
|
|
}
|
|
else
|
|
{
|
|
s = s + 0;
|
|
}
|
|
}
|
|
continue;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ¼ì²âÉ豸ÊÇ·ñ±»¶Ñ¶â»úÔ¤Ô¼
|
|
//20120409
|
|
if (AheadDetect[i].Trim().Substring(0, 1).ToUpper() == "R" && DeviceKind == 1)////20140309¼ì²âÉ豸ÊÇ·ñ±»¶Ñ¶â»úÔ¤Ô¼
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("select F_ManTaskReserve from T_Base_Device where F_ManTaskReserve>0 and F_DeviceIndex=").Append(Convert.ToInt32(AheadDetect[i].Trim().Substring(1)));
|
|
object obr = dbo.GetSingle(sql.ToString());
|
|
if (obr != null)
|
|
{
|
|
if (obr.ToString() != (mti.ToString() + fid.ToString()))
|
|
{
|
|
s = s + 1;
|
|
AheadDetectUnallow.Append(AheadDetect[i].Trim().Substring(1) + "±»µ÷¶ÈÈÎÎñ:").Append(obr.ToString()).Append("Ô¤Ô¼£¡");
|
|
}
|
|
else
|
|
{
|
|
s = s + 0;
|
|
}
|
|
}
|
|
continue;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ¼ì²âÉ豸¹âµçÐźÅ
|
|
|
|
//¼ì²âÉ豸µÄ¹âµçÐźţºD-12001.0±íʾÊäËÍ»ú12001µÄÈë¿Ú¿ª¹ØÓÐÎD12001.1±íʾÊäËÍ»ú12001µÄÈë¿Ú¿ª¹ØÎÞÎï
|
|
//D-12001.2±íʾÊäËÍ»ú12001µÄ¶¥Éý¸ß루¸ßµ½Î»£©£»D12001.3±íʾÊäËÍ»ú12001µÄ¶¥Éý²»ÔÚµÍ루²»Êǵ͵½Î»£©
|
|
if (AheadDetect[i].Trim().Substring(0, 1).ToUpper() == "D")
|
|
{
|
|
int devicebyte = 0, devbit = 0;
|
|
DS = AheadDetect[i].Trim().Substring(1).Split(dd);
|
|
int.TryParse(DS[0], out devicebyte);
|
|
int.TryParse(DS[1], out devbit);
|
|
//ÅжÏÊÇ·ñ¼ì²â¸ºÊýË÷ÒýÖµ£¨¸ºÊý´ú±íÊÇ·ñÂú×㿪¹ØÁ¿£½£±µÄÖ´ÐÐǰÌᣩ
|
|
if (devicebyte < 0)
|
|
{
|
|
#region ¸ºÊý´ú±íֵΪ£±µÄ¿ª¹ØÁ¿¼ì²â
|
|
|
|
int fsn = CStaticClass.GetDevicePhotoelectric(-devicebyte, devbit);//20101124
|
|
|
|
if (fsn != 1)//20110505
|
|
{
|
|
StringBuilder kg = new StringBuilder();
|
|
switch (devbit)
|
|
{
|
|
case 0:
|
|
kg.Append(".0ÓÐÎï");
|
|
break;
|
|
case 1:
|
|
kg.Append(".1ÓÐÎï");
|
|
break;
|
|
case 2:
|
|
|
|
if (ccf.GetDeviceKindIdx(-devicebyte) == 31)
|
|
{
|
|
kg.Append("¸ßλ");
|
|
}
|
|
else
|
|
{
|
|
kg.Append(".2ÓÐÎï");
|
|
|
|
}
|
|
break;
|
|
case 3:
|
|
kg.Append(".3ÔÊÐíÊäËÍÏß¶¯×÷");
|
|
|
|
break;
|
|
case 4:
|
|
kg.Append(".4ÔÊÐíÒÆ¶¯É豸¶¯×÷");
|
|
break;
|
|
case 5:
|
|
kg.Append("ÓÐÎï");
|
|
break;
|
|
case 6:
|
|
kg.Append("¸ßλ");
|
|
break;
|
|
case 7:
|
|
kg.Append("µÍλ");
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
AheadDetectUnallow.Append(Convert.ToInt32((-devicebyte)).ToString() + kg.ToString() + "¹âµç¿ª¹Ø²»ÕÚµ²£¡");
|
|
}
|
|
fs = fs & fsn;
|
|
|
|
#endregion
|
|
}
|
|
else
|
|
{//
|
|
#region ÕýÊýÖµ²»ÄÜΪ£±µÄ¿ª¹ØÁ¿¼ì²â
|
|
|
|
int sssn = CStaticClass.GetDevicePhotoelectric(devicebyte, devbit);
|
|
|
|
if (sssn != 0)//20110505
|
|
{
|
|
StringBuilder kg = new StringBuilder();
|
|
switch (devbit)
|
|
{
|
|
case 0:
|
|
kg.Append(".0ÓÐÎï");
|
|
break;
|
|
case 1:
|
|
kg.Append(".1ÓÐÎï");
|
|
break;
|
|
case 2:
|
|
|
|
if (ccf.GetDeviceKindIdx(devicebyte) == 31)
|
|
{
|
|
kg.Append("¸ßλ");
|
|
}
|
|
else
|
|
{
|
|
kg.Append(".2ÓÐÎï");
|
|
|
|
}
|
|
break;
|
|
case 3:
|
|
kg.Append(".3ÔÊÐíÊäËÍÏß¶¯×÷");
|
|
|
|
break;
|
|
case 4:
|
|
kg.Append(".4ÔÊÐíÒÆ¶¯É豸¶¯×÷");
|
|
break;
|
|
case 5:
|
|
kg.Append("ÓÐÎï");
|
|
break;
|
|
case 6:
|
|
kg.Append("¸ßλ");
|
|
break;
|
|
case 7:
|
|
kg.Append("µÍλ");
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
AheadDetectUnallow.Append(devicebyte.ToString() + kg.ToString() + "¹âµç¿ª¹ØÕÚµ²£¡");
|
|
}
|
|
s = s + sssn;
|
|
#endregion
|
|
}
|
|
|
|
|
|
}
|
|
|
|
#endregion
|
|
//Ë«ÉìÔ¶»õλÇúÈ¡»õʱÅжÏÊÇ·ñÓнü»õλµÄÈÎÎñÈç¹ûÓв»·¢ËÍ
|
|
#region Ë«ÉìλµÄ¶Ñ¶â»úÔÚÖ´ÐÐÆðµãÊÇÀïλ(1,4ÅÅ)µÄÈÎÎñʱ,ÅжÁÊÇ·ñÓÐÆðµãÊÇÍâλ(2,3ÅÅ)µÄÈÎÎñ ËÍ»õµ½»õλʱ(ÖÕµãΪ2,3)ÅжÏÓÐûÓÐ(1,4)µÄÈÎÎñ£¬¿ØÖƽüÔ¶²æÈ¡ËÍ»õÏȺó
|
|
if (devinfo.StackReach == 2 && DeviceKind == 1 && (DeviceOrder == 4))// Ë«Éì¶Ñ¶â»ú£¬ È¡»õ
|
|
{
|
|
int[] zxy = ccf.GetCoordinatesFromMonitorTask(minMidx);
|
|
string neighborzxy = string.Empty;
|
|
string sqlstrzxy = string.Empty;//
|
|
string sqlman = string.Empty;
|
|
//bool insidecell = false;//µ±Ç°ÈÎÎñ¶ÔÓ¦µÄÀïλ»¹ÊÇÍâλ
|
|
bool check = false;
|
|
if (zxy != null)
|
|
{
|
|
int getZ = zxy[0];//È¡»õµÄÅÅ×ø±ê
|
|
int sendZ = zxy[3]; //ËÍ»õλÖöÔÓ¦µÄÅÅ×ø±ê
|
|
int newZ, newX, newY;
|
|
int tempZ = getZ;
|
|
tempZ = getZ % 4;
|
|
|
|
if (tempZ == 1 || tempZ == 0)//Àïλȡ»õʱ£¬ÒªÅжÁÊÇ·ñÓÐÍâλµÄÈ¡»õÈÎÎñ
|
|
{//»ñÈ¡ÍâÎ»×ø±ê
|
|
if (tempZ == 1)
|
|
{
|
|
newZ = getZ + 1;
|
|
}
|
|
else
|
|
{
|
|
newZ = getZ - 1;
|
|
}
|
|
neighborzxy = string.Format("{0:D3}-{1:D3}-{2:D3}", newZ, zxy[1], zxy[2]);//»ñµÃÍâÎ»×ø±ê
|
|
sqlstrzxy = string.Format("SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_DeviceCommandIndex =4) and (F_NumParam1 = {0}) AND (F_NumParam2 = {1}) AND (F_NumParam3 = {2}) and (F_DeviceIndex={3})", newZ, zxy[1], zxy[2], DeviceIdx);
|
|
//sqlstrzxy
|
|
sqlman = string.Format("SELECT FID FROM T_Manage_Task WHERE (FSTATUS = 0) AND(FSTARTDEVICE = {0}) AND (FSTARTCELL = '{1}') ", StartDevice, neighborzxy);
|
|
//sqlstrzxy
|
|
|
|
|
|
check = true;
|
|
|
|
if (check)
|
|
{
|
|
dvdv = dbo.ExceSQL(sqlstrzxy).Tables[0].DefaultView;
|
|
if (dvdv.Count > 0)//
|
|
{
|
|
|
|
AheadDetectUnallow.Append(string.Format("´æÔÚÏàÁÚ»õλ{0}µÄÓÅÏÈÈÎÎñ£¬¸ÃÈÎÎñÔÝʱ²»ÄÜÖ´ÐÐ! ", neighborzxy));
|
|
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
|
|
return false;//²»ÄÜÖ´Ðгö¿âÈÎÎñ
|
|
|
|
|
|
|
|
}
|
|
dvdv = dbo.ExceSQL(sqlman).Tables[0].DefaultView;
|
|
if (dvdv.Count > 0)//
|
|
{
|
|
|
|
AheadDetectUnallow.Append(string.Format("´æÔÚÏàÁÚ»õλ{0}µÄÓÅÏÈÈÎÎñ£¬¸ÃÈÎÎñÔÝʱ²»ÄÜÖ´ÐÐ! ", neighborzxy));
|
|
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
|
|
return false;//²»ÄÜÖ´Ðгö¿âÈÎÎñ
|
|
}
|
|
}
|
|
}
|
|
tempZ = sendZ;
|
|
tempZ = sendZ % 4;
|
|
if (tempZ == 2 || tempZ == 3)//ÍâλËÍ»õʱ£¬ÒªÅжÁÊÇ·ñÓÐÀïλµÄËÍ»õÈÎÎñ
|
|
{//»ñÈ¡ÀïÎ»×ø±ê
|
|
if (tempZ == 2)
|
|
{
|
|
newZ = sendZ - 1;
|
|
}
|
|
else
|
|
{
|
|
newZ = sendZ + 1;
|
|
}
|
|
neighborzxy = string.Format("{0:D3}-{1:D3}-{2:D3}", newZ, zxy[4], zxy[5]);//»ñµÃÍâÎ»×ø±ê
|
|
sqlstrzxy = string.Format("SELECT F_MonitorIndex FROM T_Monitor_Task WHERE ( F_DeviceCommandIndex =5) and (F_NumParam4 = {0}) AND (F_NumParam5 = {1}) AND (F_NumParam6 = {2}) and (F_DeviceIndex={3})", newZ, zxy[4], zxy[5], DeviceIdx);
|
|
sqlman = string.Format("SELECT FID FROM T_Manage_Task WHERE (FSTATUS = 0) AND(FENDDEVICE = {0}) AND (FENDCELL = '{1}') ", EndDevice, neighborzxy);
|
|
check = true;
|
|
if (check)
|
|
{
|
|
dvdv = dbo.ExceSQL(sqlstrzxy).Tables[0].DefaultView;
|
|
if (dvdv.Count > 0)//
|
|
{
|
|
|
|
AheadDetectUnallow.Append(string.Format("´æÔÚÏàÁÚ»õλ{0}µÄÓÅÏÈÈÎÎñ£¬¸ÃÈÎÎñÔÝʱ²»ÄÜÖ´ÐÐ! ", neighborzxy));
|
|
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
|
|
return false;//²»ÄÜÖ´Ðгö¿âÈÎÎñ
|
|
}
|
|
dvdv = dbo.ExceSQL(sqlman).Tables[0].DefaultView;
|
|
if (dvdv.Count > 0)//
|
|
{
|
|
AheadDetectUnallow.Append(string.Format("´æÔÚÏàÁÚ»õλ{0}µÄÓÅÏÈÈÎÎñ£¬¸ÃÈÎÎñÔÝʱ²»ÄÜÖ´ÐÐ! ", neighborzxy));
|
|
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
|
|
return false;//²»ÄÜÖ´Ðгö¿âÈÎÎñ
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
#endregion
|
|
|
|
|
|
}
|
|
|
|
#region ·ÇÊÖ¹¤ÈÎÎñ£¬Èç¹ûÓÐÊÖ¹¤ÈÎÎñµÈ´ýÖ´ÐÐÏÈÖ´ÐÐÊÖ¹¤ÈÎÎñ
|
|
if (mti != 4)
|
|
{//20120405
|
|
if (DeviceHandTaskIfWaitRun(devinfo.DeviceIndex) == true)
|
|
{
|
|
AheadDetectUnallow.Append(devinfo.DeviceIndex.ToString() + "ÊÖ¹¤ÈÎÎñ»òÕß±ÜÈÃÈÎÎñµÈ´ýÔËÐУ¡");
|
|
s += 1;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region ¼ì²âÏò¹ÜÀíÉêÇëÈë¿âÈÎÎñÌõÂëºÍPLCASK¼Ç¼ÊÇ·ñÆ¥Åä
|
|
//20130709Ôö¼ÓÊäËÍվ̨Ïò¹ÜÀíÉêÇëÈë¿âÈÎÎñ£¬»òÕßÌõÂë±È¶ÔµÄÈÎÎñ£¬É¨ÃèºóÈ˹¤ËæÒâ°á×ßÏä×ӵı£»¤£¬Èë¿âÈÎÎñÌõÂëºÍPLCAsk¼Ç¼µÄ²»Ïàͬ²»ÔÙÖ´ÐÐÈÎÎñ
|
|
//sql.Remove(0, sql.Length);
|
|
//sql.Append("SELECT T_Base_Device.F_DeviceIndex FROM T_Base_Device,T_Base_PLC_Ask WHERE ( T_Base_Device.F_DeviceIndex = T_Base_PLC_Ask.F_DeviceIndex) and (T_Base_Device.F_DeviceKindIndex = 7) AND T_Base_PLC_Ask.F_BindingDevice = ").Append(devinfo.DeviceIndex);
|
|
//object obr1 = dbo.GetSingle(sql.ToString());
|
|
//if (obr1 != null)
|
|
//{
|
|
// sql.Remove(0, sql.Length);
|
|
// sql.Append("SELECT F_BarCode FROM T_Base_PLC_Ask where F_BindingDevice=").Append(devinfo.DeviceIndex);
|
|
// object obr = dbo.GetSingle(sql.ToString());
|
|
// if (obr != null)
|
|
// {
|
|
// if ((obr.ToString().IndexOf(ccf.GetBarCodeFromMonitor(minMidx)) < 0) && (ccf.GetBarCodeFromMonitor(minMidx).IndexOf(obr.ToString()) < 0))
|
|
// {
|
|
// s = s + 1;
|
|
// AheadDetectUnallow.Append(devinfo.DeviceIndex.ToString() + "¼Ç¼µÄÌõÂë:").Append(obr.ToString()).Append("£¬ºÍÈÎÎñÌõÂë").Append(ccf.GetBarCodeFromMonitor(minMidx)).Append("²»Æ¥Å䣡");
|
|
// }
|
|
|
|
// }
|
|
|
|
//}
|
|
|
|
#endregion
|
|
if ((s != 0) || (fs != 1))
|
|
{
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
|
|
return false;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
#region Óл¥³âÉ豸µÄ¶Ñ¶â»ú20111020
|
|
if (DeviceKind == 1 && devinfo.VirtualStack > 0)
|
|
{
|
|
int mutex = ccf.GetStackMutexDevice(DeviceIdx);
|
|
if (mutex > 0)
|
|
{//¼ì²é»¥³âÉ豸¿ÕÏÐʱµÄλÖúÍÔËÐеÄÄ¿±êλÖÃ
|
|
Model.MDevice mutexdev = Model.CGetInfo.GetDeviceInfo(mutex);
|
|
|
|
int mutexDeviceLockedState = ccf.GetDeviceLockedState(mutex);
|
|
if (mutexDeviceLockedState == -1) return true;//20120110
|
|
int mutexManTaskReserve = ccf.GetManTaskReserve(mutex);
|
|
if ((mutexdev.RunState == 0) && (mutexManTaskReserve <= 0) && (mutexDeviceLockedState == 0))
|
|
{//
|
|
#region mutex¿ÕÏС¢ÎÞÈÎÎñ¡¢ÎÞ¹ÜÀíÈÎÎñÔ¤Ô¼Ëø
|
|
|
|
int xcoor = Model.CGeneralFunction.GetXCoorFromMonitor(TaskIdx, DeviceIdx, ccf.GetDeviceOrderFromMonitor(TaskIdx));
|
|
int zcoor = Model.CGeneralFunction.GetZCoorFromMonitor(TaskIdx, DeviceIdx, ccf.GetDeviceOrderFromMonitor(TaskIdx));
|
|
int BCcoor = GetBarcodeCoor(xcoor, zcoor);
|
|
if (mutex > DeviceIdx)
|
|
{//mutex=35002
|
|
|
|
if ((BCcoor + StackMutexXCoor) >= mutexdev.XCoor)//mdev.XCoorÈç¹ûÊÇÌõÂë´øÖµÐèҪת»»ÎªÁÐÖµ
|
|
{
|
|
InsertStackMutexOrder(mutex, 2, (BCcoor + StackMutexXCoor), 5);
|
|
if (mutexdev.XCoor > 52000)//20120110
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
if (devinfo.XCoor <= mutexdev.XCoor - minStackMutexXCoor)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{//mutex35001
|
|
if (BCcoor >= (StackMutexXCoor + StackZeroXCoor))
|
|
{
|
|
BCcoor = (BCcoor - StackMutexXCoor);
|
|
}
|
|
else
|
|
{
|
|
return true;//¶Ô¿ª±¨¾¯°É£¬¹ÜÀíÏÂÈÎÎñ´íÁË£¬»òÕß·ÖÅä¶Ñ¶â»úÉ豸´íÎó
|
|
}
|
|
if (BCcoor <= mutexdev.XCoor)//mdev.XCoorÈç¹ûÊÇÌõÂë´øÖµÐèҪת»»ÎªÁÐÖµ
|
|
{
|
|
InsertStackMutexOrder(mutex, 2, BCcoor, 5);
|
|
if (mutexdev.XCoor < 4481)//20120110
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
if (devinfo.XCoor > mutexdev.XCoor + minStackMutexXCoor)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
else
|
|
{//mutexÓÐÈÎÎñÔËÐÐ
|
|
int xcoor = Model.CGeneralFunction.GetXCoorFromMonitor(TaskIdx, DeviceIdx, ccf.GetDeviceOrderFromMonitor(TaskIdx));
|
|
int zcoor = Model.CGeneralFunction.GetZCoorFromMonitor(TaskIdx, DeviceIdx, ccf.GetDeviceOrderFromMonitor(TaskIdx));
|
|
int bccoor = GetBarcodeCoor(xcoor, zcoor);
|
|
int mutXcoor; int mutZcoor;
|
|
GetStackRunX_Zcoor(mutex, out mutXcoor, out mutZcoor);
|
|
if (mutXcoor > 0)
|
|
{
|
|
#region »¥³âÓÐÈÎÎñÕýÔÚÔËÐÐ
|
|
|
|
int mutbccoor = GetBarcodeCoor(mutXcoor, mutZcoor);
|
|
if (mutex > DeviceIdx)
|
|
{
|
|
if (mutbccoor <= (bccoor + StackMutexXCoor))
|
|
{
|
|
if (mutbccoor > 52000)
|
|
{//20120110
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
else
|
|
{//mutexС
|
|
if (bccoor >= (StackMutexXCoor + StackZeroXCoor))
|
|
{
|
|
if (mutbccoor >= (bccoor - StackMutexXCoor))
|
|
{
|
|
|
|
if (mutbccoor < 4481)//20120110
|
|
{//20120110
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (bccoor >= 52000)
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
else
|
|
{//ÓÐÈÎÎñ£¬±»Ô¤Ô¼£¬µ«Ã»ÔËÐÐÈÎÎñ,¿ÉÄܱ¨¾¯»òÕß´¥ÃþÆÁ¿ØÖÆ
|
|
if ((mutexdev.RunState > 0) || (mutexDeviceLockedState != 0))
|
|
{// ±¨¾¯»òÕß±»ÈÎÎñËø¶¨
|
|
#region »¥³âÉ豸²»¿ÕÏÐ
|
|
|
|
if (mutex > DeviceIdx)
|
|
{//mutex=35002
|
|
if (mutexdev.XCoor <= (bccoor + StackMutexXCoor))
|
|
{
|
|
return false;//»òÕß·ÅÐÐÖ±½Ó±¨¾¯
|
|
}
|
|
|
|
}
|
|
else
|
|
{//mutex=35001
|
|
if (bccoor >= (StackMutexXCoor + StackZeroXCoor))
|
|
{
|
|
if (mutexdev.XCoor >= (bccoor - StackMutexXCoor))
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
else
|
|
{
|
|
#region mutex±»¹ÜÀíÈÎÎñÔ¤Ô¼ÁË£¬µ«ÊÇ»¹Ã»ÔËÐУ¨¡¾ËÍ»õ¡¿µÈ´ýÔËÐУ©
|
|
int deviceorder = GetDeviceOrderFromManTaskReserve(mutexManTaskReserve, mutex);
|
|
if (deviceorder == -1) return false;
|
|
GetStackRunReserveX_Zcoor(mutex, out mutXcoor, out mutZcoor);
|
|
if (mutex > DeviceIdx)
|
|
{
|
|
if (mutexdev.XCoor <= (bccoor + StackMutexXCoor))
|
|
{
|
|
//È¥»õλ¸ß¶ÈºÏÊÊλÖñÜÈ㬻òÕßµ½52ÁУ¨60000£©
|
|
InsertStackMutexOrder(mutex, deviceorder, (bccoor + StackMutexXCoor), GetLayerHigh(mutZcoor, mutXcoor));
|
|
if (mutexdev.XCoor > 52000)//20120110
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
if (devinfo.XCoor < mutexdev.XCoor - minStackMutexXCoor)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
else
|
|
{//mutexС
|
|
if (bccoor >= (StackMutexXCoor + StackZeroXCoor))
|
|
{
|
|
if (mutexdev.XCoor >= (bccoor - StackMutexXCoor))
|
|
{
|
|
//È¥»õλ¸ß¶ÈºÏÊÊλÖñÜÈ㬻òÕßµ½0ÁУ¨2000£©
|
|
InsertStackMutexOrder(mutex, deviceorder, (bccoor - StackMutexXCoor), GetLayerHigh(mutZcoor, mutXcoor));
|
|
if (mutexdev.XCoor < 4481)
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
if (devinfo.XCoor > mutexdev.XCoor + minStackMutexXCoor)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
|
|
#region ¶¥Éý»úÏÈ¿ØÖƽü²æÊäËÍ»úËͳö
|
|
////20111226
|
|
//string r1 = "12001,42001,32001,12009,42009,32009,12017,42017,32017";
|
|
//if ((r1.IndexOf(DeviceIdx.ToString()) >= 0) &&(devinfo.IfCorrelDoubleFork!="1"))
|
|
//{
|
|
// if (IFExitTopPriDeviceIdxTaskWait(DeviceIdx+1) == true)
|
|
// {
|
|
// return false;
|
|
// }
|
|
//}
|
|
#endregion
|
|
|
|
#region ¶¥Éý»ú¹¹×Ô¹ØÁªÈë¿âÈÎÎñµ¥¶À´¦Àí//20101011
|
|
|
|
//20100406Èë¿â¶¥Éýʱ±ØÒª¼ì²â£º1102ÄÚ̽Îï¡°-11021¡±£»1121µÍµ½Î»¡°-11212¡±£»ÓйØÁªÈÎÎñʱ£¬1102Íâ̽Îï¡°-11022¡±£»
|
|
if ((ccf.GetCorrel_DeviceIndex(devinfo.DeviceIndex, true) == "0") && (CONTROLTASKTYPE == 1) && (devinfo.IfCorrelDoubleFork == "1"))//¶¥ÉýÉ豸×Ô¹ØÁª£¬Èë¿âÈÎÎñ20101124Ôö¼Ó¶¥ÉýÉ豸ÊÇ·ñË«²æÅжÏ
|
|
{
|
|
string[] CorrelInfo = ccf.GetOwnCorrel_DeviceInfo(devinfo.DeviceIndex);
|
|
if (CorrelInfo == null)
|
|
{
|
|
//20110505
|
|
AheadDetectUnallow.Append("¶¥Éý»ú¹¹" + devinfo.DeviceIndex.ToString() + "ûÓÐ×Ô¹ØÁª£¡");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
|
|
return false;
|
|
|
|
}
|
|
if ((CStaticClass.GetDevicePhotoelectric(CorrelInfo[5]) == 1) && (CStaticClass.GetDevicePhotoelectric(CorrelInfo[2]) == 1))//½üÏïµÀÓÐÎ¶¥ÉýµÍλ//20101124
|
|
{
|
|
#region µÈ´ý¹ØÁªÈÎÎñÅä¶Ô
|
|
//ÔÚCStaticClass.DoubleForkWaitTime¹æ¶¨Ê±¼äÄڵȴý£»1102£¨11027£©×ª¶¯µÈ´ý
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT F_TaskIndex,F_DeviceIndex,F_Remark FROM T_Base_PLC_Ask WHERE (F_TaskIndex =").Append(TaskIdx).Append(") AND (F_Remark <> '') AND (F_DeviceIndex=").Append(devinfo.DeviceIndex).Append(")");
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
|
|
//(Convert.ToDateTime(dv[0]["F_Remark"]).AddSeconds(Convert.ToInt32(CStaticClass.DoubleForkWaitTime)) > DateTime.Now) ||
|
|
if ((GetIOControlStatus(minMidx) != Model.CGeneralFunction.TASKSINGLEFORKRUN) ||
|
|
((CStaticClass.GetDevicePhotoelectric(CorrelInfo[6]) == 1) && (CStaticClass.GetDevicePhotoelectric(CorrelInfo[4]) == 0)))//20101124
|
|
{
|
|
if ((CStaticClass.GetDevicePhotoelectric(CorrelInfo[6]) == 1)
|
|
&& (CStaticClass.GetDevicePhotoelectric(CorrelInfo[4]) == 0))//Íâ̽ÎÔËÐÐ//20101124
|
|
{
|
|
//²éÕÒ±¾µØ¹ÜÀíÈÎÎñ×ö¶à²æ¹ØÁªÅä¶Ô£¬¹ØÁªÈÎÎñ·ÖÅä½ü²æ
|
|
int mfid = GetEnableDoubleForkManageTask(1, devinfo.DeviceIndex, fid);
|
|
if (mfid > 0)
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("update T_Manage_Task set F_RELATIVECONTORLID=").Append(mfid).Append(" where F_ManageTaskKindIndex=").Append(mti).Append(" and FID=").Append(fid);
|
|
dbo.ExecuteSql(sql.ToString());
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("update T_Manage_Task set FUseAwayFork='0',F_RELATIVECONTORLID=").Append(fid).Append(" where F_ManageTaskKindIndex=").Append(mti).Append(" and FID=").Append(mfid);
|
|
dbo.ExecuteSql(sql.ToString());
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("update T_Monitor_Task set F_UseAwayFork='0' where F_ManageTASKKINDINDEX=").Append(mti).Append(" and F_ManageTaskIndex=").Append(mfid).Append("");
|
|
dbo.ExecuteSql(sql.ToString());
|
|
//ÓÉÓÚÒѾ·ÖÅä·¾¶²»Ò»¶¨·ûºÏÔ¶½ü»õ²æµÄ·ÖÅäÔÔò£¬ÐèÒª¸ÄµÀ
|
|
AlterRoutePath(mti, mfid, CONTROLTASKTYPE, '0', devinfo.DeviceIndex);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
//20110505
|
|
AheadDetectUnallow.Append("¶¥Éý»ú¹¹" + devinfo.DeviceIndex.ToString() + "µÈ´ý¹ØÁªÈÎÎñ£¡");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
|
|
return false;
|
|
}
|
|
}
|
|
else
|
|
{//³¬¹ýµÈ´ýʱ¼ä»òÕß¹ÜÀíÇ¿ÖÆÖ´Ðе¥²æÈÎÎñ
|
|
if (CStaticClass.GetDevicePhotoelectric(CorrelInfo[4]) == 1)//20101124
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("update T_Base_PLC_Ask set F_Remark='").Append(dtime).Append("' where (F_DeviceIndex=").Append(devinfo.DeviceIndex).Append(")");
|
|
dbo.ExecuteSql(sql.ToString());
|
|
//20110505
|
|
AheadDetectUnallow.Append("¶¥Éý»ú¹¹" + devinfo.DeviceIndex.ToString() + "µÈ´ý¹ØÁªÈÎÎñ£¡");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
|
|
return false;
|
|
}
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("update T_Base_PLC_Ask set F_TaskIndex=0,F_Remark='' where (F_DeviceIndex=").Append(devinfo.DeviceIndex).Append(")");
|
|
dbo.ExecuteSql(sql.ToString());
|
|
return true;
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT F_TaskIndex,F_DeviceIndex,F_Remark FROM T_Base_PLC_Ask WHERE (F_TaskIndex =0) AND (F_Remark = '') AND (F_DeviceIndex=").Append(devinfo.DeviceIndex).Append(")");
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("update T_Base_PLC_Ask set F_TaskIndex=").Append(TaskIdx).Append(",F_Remark='").Append(dtime).Append("' where (F_DeviceIndex=").Append(devinfo.DeviceIndex).Append(")");
|
|
dbo.ExecuteSql(sql.ToString());
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("update T_Monitor_Task set F_UseAwayFork='1' where F_ManageTASKKINDINDEX=").Append(mti).Append(" and F_ManageTaskIndex=").Append(fid).Append("");
|
|
dbo.ExecuteSql(sql.ToString());
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("update T_Manage_Task set FUseAwayFork='1' where F_ManageTASKKINDINDEX=").Append(mti).Append(" and FID=").Append(fid).Append("");
|
|
dbo.ExecuteSql(sql.ToString());
|
|
//ÓÉÓÚÒѾ·ÖÅä·¾¶²»Ò»¶¨·ûºÏÔ¶½ü»õ²æµÄ·ÖÅäÔÔò£¬ÐèÒª¸ÄµÀ
|
|
AlterRoutePath(mti, fid, CONTROLTASKTYPE, '1', devinfo.DeviceIndex);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
else
|
|
{
|
|
//20110505
|
|
AheadDetectUnallow.Append("¶¥Éý»ú¹¹" + devinfo.DeviceIndex.ToString() + "²»Âú×ã¹ØÁª×´Ì¬£¡");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
|
|
return false;
|
|
}
|
|
|
|
}
|
|
|
|
#endregion
|
|
#region Ë«ÉìλµÄ¶Ñ¶â»úÔÚÖ´ÐÐÆðµãÊÇÀïλ(1,4ÅÅ)µÄÈÎÎñʱ,ÅжÁÊÇ·ñÓÐÆðµãÊÇÍâλ(2,3ÅÅ)µÄÈÎÎñ ËÍ»õµ½»õλʱ(ÖÕµãΪ2,3)ÅжÏÓÐûÓÐ(1,4)µÄÈÎÎñ£¬¿ØÖƽüÔ¶²æÈ¡ËÍ»õÏȺó
|
|
if (devinfo.StackReach == 2 && DeviceKind == 1 && (DeviceOrder == 4))// Ë«Éì¶Ñ¶â»ú£¬ È¡»õ
|
|
{
|
|
int[] zxy = ccf.GetCoordinatesFromMonitorTask(minMidx);
|
|
string neighborzxy = string.Empty;
|
|
string sqlstrzxy = string.Empty;//
|
|
string sqlman = string.Empty;
|
|
//bool insidecell = false;//µ±Ç°ÈÎÎñ¶ÔÓ¦µÄÀïλ»¹ÊÇÍâλ
|
|
bool check = false;
|
|
if (zxy != null)
|
|
{
|
|
int getZ = zxy[0];//È¡»õµÄÅÅ×ø±ê
|
|
int sendZ = zxy[3]; //ËÍ»õλÖöÔÓ¦µÄÅÅ×ø±ê
|
|
int newZ, newX, newY;
|
|
int tempZ = getZ;
|
|
|
|
|
|
// if (tempZ>4)
|
|
//{
|
|
tempZ = getZ % 4;
|
|
//}
|
|
|
|
|
|
if (tempZ == 1 || tempZ == 0)//Àïλȡ»õʱ£¬ÒªÅжÁÊÇ·ñÓÐÍâλµÄÈ¡»õÈÎÎñ
|
|
{//»ñÈ¡ÍâÎ»×ø±ê
|
|
if (tempZ == 1)
|
|
{
|
|
newZ = getZ + 1;
|
|
}
|
|
else
|
|
{
|
|
newZ = getZ - 1;
|
|
}
|
|
neighborzxy = string.Format("{0:D3}-{1:D3}-{2:D3}", newZ, zxy[1], zxy[2]);//»ñµÃÍâÎ»×ø±ê
|
|
sqlstrzxy = string.Format("SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_DeviceCommandIndex =4) and (F_NumParam1 = {0}) AND (F_NumParam2 = {1}) AND (F_NumParam3 = {2}) and (F_DeviceIndex={3})", newZ, zxy[1], zxy[2], DeviceIdx);
|
|
//sqlstrzxy
|
|
sqlman = string.Format("SELECT FID FROM T_Manage_Task WHERE (FSTATUS = 0) AND(FSTARTDEVICE = {0}) AND (FSTARTCELL = '{1}') ", StartDevice, neighborzxy);
|
|
//sqlstrzxy
|
|
|
|
|
|
check = true;
|
|
|
|
if (check)
|
|
{
|
|
dvdv = dbo.ExceSQL(sqlstrzxy).Tables[0].DefaultView;
|
|
if (dvdv.Count > 0)//
|
|
{
|
|
|
|
AheadDetectUnallow.Append(string.Format("´æÔÚÏàÁÚ»õλ{0}µÄÓÅÏÈÈÎÎñ£¬¸ÃÈÎÎñÔÝʱ²»ÄÜÖ´ÐÐ! ", neighborzxy));
|
|
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
|
|
return false;//²»ÄÜÖ´Ðгö¿âÈÎÎñ
|
|
|
|
|
|
|
|
}
|
|
dvdv = dbo.ExceSQL(sqlman).Tables[0].DefaultView;
|
|
if (dvdv.Count > 0)//
|
|
{
|
|
|
|
AheadDetectUnallow.Append(string.Format("´æÔÚÏàÁÚ»õλ{0}µÄÓÅÏÈÈÎÎñ£¬¸ÃÈÎÎñÔÝʱ²»ÄÜÖ´ÐÐ! ", neighborzxy));
|
|
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
|
|
return false;//²»ÄÜÖ´Ðгö¿âÈÎÎñ
|
|
}
|
|
}
|
|
}
|
|
tempZ = sendZ;
|
|
//if (tempZ>4)
|
|
//{
|
|
tempZ = sendZ % 4;
|
|
//}
|
|
if (tempZ == 2 || tempZ == 3)//ÍâλËÍ»õʱ£¬ÒªÅжÁÊÇ·ñÓÐÀïλµÄËÍ»õÈÎÎñ
|
|
{//»ñÈ¡ÀïÎ»×ø±ê
|
|
if (tempZ == 2)
|
|
{
|
|
newZ = sendZ - 1;
|
|
}
|
|
else
|
|
{
|
|
newZ = sendZ + 1;
|
|
}
|
|
neighborzxy = string.Format("{0:D3}-{1:D3}-{2:D3}", newZ, zxy[4], zxy[5]);//»ñµÃÍâÎ»×ø±ê
|
|
sqlstrzxy = string.Format("SELECT F_MonitorIndex FROM T_Monitor_Task WHERE ( F_DeviceCommandIndex =5) and (F_NumParam4 = {0}) AND (F_NumParam5 = {1}) AND (F_NumParam6 = {2}) and (F_DeviceIndex={3})", newZ, zxy[4], zxy[5], DeviceIdx);
|
|
sqlman = string.Format("SELECT FID FROM T_Manage_Task WHERE (FSTATUS = 0) AND(FENDDEVICE = {0}) AND (FENDCELL = '{1}') ", EndDevice, neighborzxy);
|
|
check = true;
|
|
if (check)
|
|
{
|
|
dvdv = dbo.ExceSQL(sqlstrzxy).Tables[0].DefaultView;
|
|
if (dvdv.Count > 0)//
|
|
{
|
|
|
|
AheadDetectUnallow.Append(string.Format("´æÔÚÏàÁÚ»õλ{0}µÄÓÅÏÈÈÎÎñ£¬¸ÃÈÎÎñÔÝʱ²»ÄÜÖ´ÐÐ! ", neighborzxy));
|
|
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
|
|
return false;//²»ÄÜÖ´Ðгö¿âÈÎÎñ
|
|
}
|
|
dvdv = dbo.ExceSQL(sqlman).Tables[0].DefaultView;
|
|
if (dvdv.Count > 0)//
|
|
{
|
|
AheadDetectUnallow.Append(string.Format("´æÔÚÏàÁÚ»õλ{0}µÄÓÅÏÈÈÎÎñ£¬¸ÃÈÎÎñÔÝʱ²»ÄÜÖ´ÐÐ! ", neighborzxy));
|
|
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
|
|
return false;//²»ÄÜÖ´Ðгö¿âÈÎÎñ
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
#endregion
|
|
|
|
|
|
//20101011
|
|
#region Ë«²æ¶Ñ¶â»úµÄÈ¡»õÈÎÎñÔÚ´ËÅжÏÊÇ·ñ¹ØÁªË«²æ¡¢Ñé֤˫²æÈÎÎñÊÇ·ñΪ˫²æ¼«ÏÞ»õλ
|
|
if ((devinfo.DeviceKind == 1) && (devinfo.IfCorrelDoubleFork == "1") && (ccf.GetDeviceOrderFromMonitor(minMidx) == 4))
|
|
{
|
|
string[] DevLanewayIOInfo = ccf.GetDeviceLaneGateInfoFromStackCoor(devinfo.DeviceIndex, minMidx);
|
|
if (DevLanewayIOInfo == null)
|
|
{
|
|
//²»ÊÇÏïµÀ¿ÚµÄÈ¡»õÈÎÎñ²»ÐèÒª¹ØÁª
|
|
CommonClassLib.CCarryConvert.WriteDarkCasket("µ¥²æÖ´ÐÐÔÒò", minMidx.ToString(), devinfo.DeviceIndex.ToString(), "²»ÊÇÏïµÀ¿ÚµÄÈ¡»õÈÎÎñ²»ÐèÒª¹ØÁª");
|
|
return true;
|
|
}
|
|
Dictionary<int, string[]> corrinfo = Model.CGeneralFunction.GetDoubleForkMonitorInfo(minMidx, devinfo.DeviceIndex);
|
|
|
|
if (corrinfo == null)//20110412û¹ØÁªÈÎÎñ
|
|
{
|
|
#region 20110412¶Ñ¶â»úÔÚ¶¥Éý»úÈ¡µ¥²æÈÎÎñ£¬ÑéÖ¤ÊÇ·ñÐèÒª»»»õ²æ
|
|
string ChangeForkCell = ccf.IfLimitCellChangeFork(minMidx, devinfo.DeviceIndex);
|
|
|
|
if (ChangeForkCell != "-")//Ö÷ÈÎÎñÐèÒªµ¹»»»õ²æ
|
|
{
|
|
ccf.ChangeEndCellCode(minMidx, ChangeForkCell, devinfo.DeviceIndex);
|
|
return false;//20140423richardÈç¹û²»·µ»Øfalse£¬»¹»áʹÓÃÔÀ´µÄ×ø±ê¼ÌÐø·¢ËÍ
|
|
}
|
|
#endregion
|
|
|
|
#region û¹ØÁªÈÎÎñ
|
|
|
|
//string IfCorrel = ccf.GetCorrel_DeviceIndex(minMidx);//20110505
|
|
//if (IfCorrel == "")//ÎÞ¹ØÁª
|
|
//{
|
|
//}
|
|
//else if (IfCorrel == "0")//×Ô¹ØÁª
|
|
//{
|
|
// //20110108
|
|
// dbo.ExecuteSql("update T_Monitor_Task set F_UseAwayFork='1' where F_ManageTASKKINDINDEX=" + mti + " and F_ManageTaskIndex=" + fid + "");
|
|
// dbo.ExecuteSql("update T_Manage_Task set FUseAwayFork='1' where F_ManageTASKKINDINDEX=" + mti + " and FID=" + fid + "");
|
|
|
|
// #region 20110412¶Ñ¶â»úÔÚ¶¥Éý»úÈ¡µ¥²æÈÎÎñ£¬ÑéÖ¤ÊÇ·ñÐèÒª»»»õ²æ
|
|
// string ChangeForkCell = ccf.IfLimitCellChangeFork(minMidx, devinfo.DeviceIndex);
|
|
|
|
// if (ChangeForkCell != "-")//Ö÷ÈÎÎñÐèÒªµ¹»»»õ²æ
|
|
// {
|
|
// ccf.ChangeEndCellCode(minMidx, ChangeForkCell, devinfo.DeviceIndex);
|
|
|
|
// }
|
|
// #endregion
|
|
//}
|
|
|
|
//else
|
|
//{//ÓйØÁªÕ¾Ì¨
|
|
// #region Ë«²æ¶ÔµÈվ̨µÄµ¥ÈÎÎñÔڴ˵ȴý¹ØÁª£¬Ë«²æ¼«ÏÞ»õλ²»¹ØÁª
|
|
|
|
// if ((CStaticClass.GetDevicePhotoelectric(DevLanewayIOInfo[3]) == 1) && (CStaticClass.GetDevicePhotoelectric(DevLanewayIOInfo[1]) == 1))//Óлõ£¬¶¥Éý¸ßλ
|
|
// {
|
|
// #region ¶¥Éý¸ßλÓлõ
|
|
// bool isend;
|
|
// return GetCorrManageTask(DevLanewayIOInfo, TaskIdx, CONTROLTASKTYPE, mti, fid, dtime,out isend);
|
|
|
|
// #endregion
|
|
// }
|
|
// else
|
|
// {
|
|
// CommonClassLib.CCarryConvert.WriteDarkCasket("µ¥²æÖ´ÐÐÔÒò", minMidx.ToString(), devinfo.DeviceIndex.ToString(), "¶¥Éý¸ßλºÍÓÐÎïÐźŲ»Âú×ãÌõ¼þ");
|
|
// }
|
|
// #endregion
|
|
|
|
//}
|
|
|
|
#endregion
|
|
}
|
|
else
|
|
{
|
|
#region ÓйØÁªÈÎÎñÐÅÏ¢
|
|
#region ÅжÏÊÇ·ñ»¹ÓпɹØÁªµÄ¹ØÁªÕ¾Ì¨ÈÎÎñ20120906
|
|
//bool isend;
|
|
//GetCorrManageTask(DevLanewayIOInfo, TaskIdx, CONTROLTASKTYPE, mti, fid, dtime,out isend);
|
|
//if (isend == false) return false;
|
|
#endregion
|
|
foreach (int CorrTaskindex in corrinfo.Keys)
|
|
{
|
|
#region Ë«²æÈÎÎñÔÚ´ËÑéÖ¤£¬ÊÇ·ñΪ˫²æ¼«ÏÞ»õλ£¬Ë«¼«ÏÞ»õλʹÓÃË«²æµ¹¿â»õλÐÞ¸ÄÈÎÎñ
|
|
//°Ñµ¹¿â»õλ×÷Ϊȡ»õºÍËÍ»õ¶¯×÷µÄÄ¿±ê»õ룬Ôö¼ÓÈ¡»õºÍËÍ»õ¶¯×÷¶ÔÓÚµ¹¿â»õλµÄÂß¼ÓÐÎïµÄÌáǰ¼ì²â
|
|
//±¨¸æµ¹¿â»õλÍê³Éʱ£¬×·¼Óµ¹¿â»õλ---¡·ÐèÒª»»²æµÄ¼«ÏÞ»õλµÄÈ¡»õºÍËÍ»õÈÎÎñ
|
|
|
|
#region ¼ì²é¹ØÁªÈÎÎñ
|
|
string ChangeForkCell1 = ccf.IfLimitCellChangeFork(CorrTaskindex, devinfo.DeviceIndex);
|
|
|
|
#endregion
|
|
if (ChangeForkCell1 != "-") //¹ØÁªÈÎÎñÐèÒªµ¹»»»õ²æ
|
|
{
|
|
ccf.ChangeEndCellCode(CorrTaskindex, ChangeForkCell1, devinfo.DeviceIndex);
|
|
return false;//20140423richardÈç¹û²»·µ»Øfalse£¬»¹»áʹÓÃÔÀ´µÄ×ø±ê¼ÌÐø·¢ËÍ
|
|
}
|
|
#endregion
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
#endregion
|
|
|
|
#region Ë«²æAGVµÄÈë¿âÈ¡»õÈÎÎñÔÚ´ËÅжÏÊÇ·ñ¹ØÁªË«²æ¡¢Ñé֤˫²æÈÎÎñÊÇ·ñΪ˫²æ¼«ÏÞ»õλ
|
|
if ((devinfo.DeviceKind == 6) && (devinfo.IfCorrelDoubleFork == "1") && (ccf.GetDeviceOrderFromMonitor(minMidx) == 2) && ((CONTROLTASKTYPE == 1) || (CONTROLTASKTYPE == 4)))
|
|
{
|
|
|
|
Dictionary<int, string[]> corrinfo = Model.CGeneralFunction.GetDoubleForkMonitorInfo(minMidx, devinfo.DeviceIndex);
|
|
|
|
if (corrinfo == null)
|
|
{
|
|
#region Ë«²æ¶ÔµÈվ̨µÄµ¥ÈÎÎñÔڴ˵ȴý¹ØÁª£¬Ë«²æ¼«ÏÞ»õλ²»¹ØÁª
|
|
if (GetIOControlStatus(TaskIdx) != Model.CGeneralFunction.TASKSINGLEFORKRUN)
|
|
{//Ã»Ç¿ÖÆµ¥²æÖ´ÐÐ
|
|
|
|
//²éÕÒ¹ØÁªÕ¾Ì¨
|
|
int agvCorrel = GetAGVCorrelIndex(TaskIdx);
|
|
if (agvCorrel != -1)
|
|
{
|
|
//²éÕÒ±¾µØ¹ÜÀíÈÎÎñ×ö¶à²æ¹ØÁªÅä¶Ô£¬¹ØÁªÈÎÎñ·ÖÅä»õ²æ
|
|
int mfid = GetAGVEnableDoubleForkManageTask(CONTROLTASKTYPE, agvCorrel, devinfo.DeviceIndex);
|
|
if (mfid > 0)
|
|
{
|
|
#region Ë«²æÍ¬ÎªÇ°¼«ÏÞºóÕߺó¼«ÏÞ²»¹ØÁª£¬µ¥¶ÀÖ´ÐÐ
|
|
if ((IfInSameLimitX(fid, mfid, mti) == true) && (mti == 1))
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append(" update IO_CONTROL set CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKSINGLEFORKRUN).Append(" WHERE (CONTROL_ID = ").Append(fid).Append(")");
|
|
dboM.ExecuteSql(sql.ToString());
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append(" update IO_CONTROL set CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKSINGLEFORKRUN).Append(" WHERE (CONTROL_ID = ").Append(mfid).Append(")");
|
|
dboM.ExecuteSql(sql.ToString());
|
|
return true;
|
|
}
|
|
#endregion
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("update T_Manage_Task set F_RELATIVECONTORLID=").Append(mfid).Append(" where F_ManageTaskKindIndex=").Append(mti).Append(" and FID=").Append(fid);
|
|
dbo.ExecuteSql(sql.ToString());
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("update T_Manage_Task set F_RELATIVECONTORLID=").Append(fid).Append(" where F_ManageTaskKindIndex=").Append(mti).Append(" and FID=").Append(mfid);
|
|
dbo.ExecuteSql(sql.ToString());
|
|
return true;
|
|
}
|
|
|
|
else
|
|
{
|
|
//20110505
|
|
AheadDetectUnallow.Append("Ë«²æAGVÔÚË«²æÐ£±íվ̨ȡ»õ" + "£¬µÈ´ý¶à²æ¹ØÁªÕ¾Ì¨" + agvCorrel.ToString() + "µÄÈÎÎñ£¡");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
|
|
return false;
|
|
}
|
|
}
|
|
else
|
|
return true;
|
|
}
|
|
else
|
|
{//¹ÜÀíÇ¿ÖÆÖ´Ðе¥²æÈÎÎñ
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
}
|
|
|
|
}
|
|
#endregion
|
|
|
|
#region Ë«²æAGVµÄ³ö¿â¿ÚÊäËÍ»úÈ¡»õÈÎÎñÔÚ´ËÅжÏÊÇ·ñ¹ØÁªË«²æ20110412
|
|
if ((devinfo.DeviceKind == 6) && (devinfo.IfCorrelDoubleFork == "1") && ((ccf.GetDeviceOrderFromMonitor(minMidx) == 2)
|
|
|| (ccf.GetDeviceOrderFromMonitor(minMidx) == 4)) && (CONTROLTASKTYPE == 2))
|
|
{
|
|
|
|
Dictionary<int, string[]> corrinfo = Model.CGeneralFunction.GetDoubleForkMonitorInfo(minMidx, devinfo.DeviceIndex);
|
|
|
|
if (corrinfo == null)
|
|
{
|
|
#region Ë«²æ¶ÔµÈվ̨µÄµ¥ÈÎÎñÔڴ˵ȴý¹ØÁª£¬Ë«²æ¼«ÏÞ»õλ²»¹ØÁª
|
|
if (GetIOControlStatus(TaskIdx) != Model.CGeneralFunction.TASKSINGLEFORKRUN)//20110429²âÊÔÓ¦¸ÃΪGetIOControlStatus(TaskIdx)£¡=
|
|
{//Ã»Ç¿ÖÆµ¥²æÖ´ÐÐ
|
|
|
|
//²éÕÒ¹ØÁªÕ¾Ì¨
|
|
int agvCorrel = GetAGVCorrelConveyorIndex(TaskIdx);
|
|
if (agvCorrel != -1)
|
|
{
|
|
#region ²éÕÒ¶ÓÁÐÖÐÊÇ·ñÓÐagvCorrelµÄÈÎÎñ£ºÈç¹ûûÓУ¬²»Ôٵȴý£¬µ¥²æÖ´ÐУ»
|
|
|
|
if (GetAGVEnableDoubleForkManageTask(2, agvCorrel, devinfo.DeviceIndex) <= 0)//ûÓÐÄܹØÁªµÄÈÎÎñ£¬²»Ôٵȴý£¬µ¥²æÖ´ÐÐ
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append(" update IO_CONTROL set CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKSINGLEFORKRUN).Append(" WHERE (CONTROL_ID = ").Append(fid).Append(")");
|
|
dboM.ExecuteSql(sql.ToString());
|
|
return true;
|
|
}
|
|
|
|
#endregion
|
|
#region 20110412ÓÐÄܹØÁªµÄÈÎÎñ£¬ÅжÏagvCorrelÊÇ·ñÓÐÎï¶øÇÒÈÎÎñÒѾµ½È¡»õ״̬
|
|
int[] cstates = CStaticClass.GetDeviceState(agvCorrel);
|
|
int cssstate = -1;
|
|
if (cstates != null)
|
|
{
|
|
cssstate = cstates[1];
|
|
}
|
|
if ((cssstate != 0) || (CStaticClass.GetDevicePhotoelectric(agvCorrel - 2, 0) != 1) || (CStaticClass.GetDevicePhotoelectric(agvCorrel, 2) != 1))//20110412¶¥Éý»ú¿ÕÏС¢Óлõ¡¢µÍλ
|
|
{
|
|
//20110505
|
|
AheadDetectUnallow.Append("Ë«²æAGVÔÚË«²æÐ£±íվ̨ȡ»õ" + "£¬µÈ´ý¶à²æ¹ØÁªÕ¾Ì¨" + agvCorrel.ToString() + "µÄÈÎÎñ£¡");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
|
|
return false;
|
|
}
|
|
#endregion
|
|
//²éÕÒ±¾µØ¹ÜÀíÈÎÎñ×öË«²æÔÚÊäËÍ»úÈ¡»õÈÎÎñ¹ØÁªÅä¶Ô£¬¹ØÁªÈÎÎñ·ÖÅä»õ²æ
|
|
int mfid = GetAGVFromConveyorDoubleForkGetGoodManageTask(2, agvCorrel, devinfo.DeviceIndex);
|
|
if (mfid > 0)
|
|
{
|
|
#region Öյ㲻Ïàͬ£¬µ¥²æ·Ö±ðÖ´ÐÐ
|
|
if (IFHaveSameEndDevice(fid, mfid, mti) == false)
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append(" update IO_CONTROL set CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKSINGLEFORKRUN).Append(" WHERE (CONTROL_ID = ").Append(fid).Append(")");
|
|
dboM.ExecuteSql(sql.ToString());
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append(" update IO_CONTROL set CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKSINGLEFORKRUN).Append(" WHERE (CONTROL_ID = ").Append(mfid).Append(")");
|
|
dboM.ExecuteSql(sql.ToString());
|
|
return true;
|
|
}
|
|
#endregion
|
|
#region Ë«²æÍ¬ÎªÇ°¼«ÏÞºóÕߺó¼«ÏÞ²»¹ØÁª£¬µ¥¶ÀÖ´ÐÐ
|
|
//if ((IfInSameLimitX(fid, mfid, mti) == true) && (mti == 1))
|
|
//{
|
|
// sql.Remove(0, sql.Length);
|
|
// sql.Append(" update IO_CONTROL set CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKSINGLEFORKRUN).Append(" WHERE (CONTROL_ID = ").Append(fid).Append(")");
|
|
// dboM.ExecuteSql(sql.ToString());
|
|
// sql.Remove(0, sql.Length);
|
|
// sql.Append(" update IO_CONTROL set CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKSINGLEFORKRUN).Append(" WHERE (CONTROL_ID = ").Append(mfid).Append(")");
|
|
// dboM.ExecuteSql(sql.ToString());
|
|
// return true;
|
|
//}
|
|
#endregion
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("update T_Manage_Task set F_RELATIVECONTORLID=").Append(mfid).Append(" where F_ManageTaskKindIndex=").Append(mti).Append(" and FID=").Append(fid);
|
|
dbo.ExecuteSql(sql.ToString());
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("update T_Manage_Task set F_RELATIVECONTORLID=").Append(fid).Append(" where F_ManageTaskKindIndex=").Append(mti).Append(" and FID=").Append(mfid);
|
|
dbo.ExecuteSql(sql.ToString());
|
|
return true;
|
|
}
|
|
|
|
else
|
|
{
|
|
//20110505
|
|
AheadDetectUnallow.Append("Ë«²æAGVÔÚÊäËÍ»úÈ¡»õ" + "£¬Ã»ÕÒµ½¶à²æ¹ØÁªÈÎÎñ£¬¹ØÁªÕ¾Ì¨" + agvCorrel.ToString() + "ÓÐÒì³£ÎïÌåÕÚµ²¿ª¹Ø£¡");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
|
|
return false;
|
|
}
|
|
}
|
|
else
|
|
return true;
|
|
}
|
|
else
|
|
{//¹ÜÀíÇ¿ÖÆÖ´Ðе¥²æÈÎÎñ
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
}
|
|
|
|
}
|
|
#endregion
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
RefreshMonitorEventArgs rme = new RefreshMonitorEventArgs("tsStatus", "·¢ËÍÖ¸ÁîÌáǰ¼ì²âʱ·¢Éú´íÎó£º" + ex.StackTrace + ex.Message);
|
|
OnRefreshMonitor(rme);
|
|
return false;
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
dvdv.Dispose();
|
|
}
|
|
}
|
|
|
|
private bool IFExitTopPriDeviceIdxTaskWait(int DeviceIdx)
|
|
{
|
|
sql.Clear();
|
|
DataView dv0 = new DataView(); DataView dv = new DataView();
|
|
try
|
|
{
|
|
sql.Append(string.Format("SELECT F_ManageTaskIndex, F_ManageTASKKINDINDEX FROM T_Monitor_Task WHERE (F_DeviceIndex = {0})", DeviceIdx));
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
for (int i = 0; i < dv.Count; i++)
|
|
{
|
|
sql.Clear();
|
|
if (CStaticClass.DBFactory == "OracleDBFactory")
|
|
{//20151120µ÷¶ÈϵͳoracleµÄÌØÊâÓï¾ä
|
|
sql.Append(string.Format("SELECT F_DeviceIndex,F_Status FROM T_Monitor_Task WHERE rownum=1 and (F_ManageTASKKINDINDEX = {0}) and F_ManageTaskIndex={1} order by F_MonitorIndex asc", Convert.ToInt32(dv[i]["F_ManageTASKKINDINDEX"]), Convert.ToInt32(dv[i]["F_ManageTASKINDEX"])));
|
|
}
|
|
else
|
|
{
|
|
sql.Append(string.Format("SELECT top 1 F_DeviceIndex,F_Status FROM T_Monitor_Task WHERE (F_ManageTASKKINDINDEX = {0}) and F_ManageTaskIndex={1} order by F_MonitorIndex asc", Convert.ToInt32(dv[i]["F_ManageTASKKINDINDEX"]), Convert.ToInt32(dv[i]["F_ManageTASKINDEX"])));
|
|
}
|
|
dv0 = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;//20151120µ÷¶ÈϵͳoracleµÄÌØÊâÓï¾ä
|
|
if (dv0.Count > 0)
|
|
{
|
|
if ((dv0[0]["F_DeviceIndex"].ToString() == DeviceIdx.ToString()) && (dv0[0]["F_Status"].ToString() == "0"))
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
dv0.Dispose();
|
|
}
|
|
}
|
|
|
|
private int GetBarcodeCoor(int xcoor, int zcoor)
|
|
{
|
|
DataView dv = new DataView();
|
|
try
|
|
{
|
|
dv = dbo.ExceSQL(string.Format("SELECT BarcodeCoor FROM T_Base_BarcodeCoor WHERE (XCoor = {0}) AND (ZCoor = {1})", xcoor, zcoor)).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
return Convert.ToInt32(dv[0][0]);
|
|
}
|
|
else
|
|
{
|
|
dv = dbo.ExceSQL(string.Format("SELECT BarcodeCoor FROM T_Base_BarcodeCoor WHERE (XCoor1 = {0}) AND (ZCoor1 = {1})", xcoor, zcoor)).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
return Convert.ToInt32(dv[0][0]);
|
|
}
|
|
else
|
|
{
|
|
return 0;
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// »ñµÃ·¢ËÍÐÅÏ¢
|
|
/// </summary>
|
|
/// <param name="minMidx">É豸ָÁîË÷Òý</param>
|
|
public bool GetSendInfo(int minMidx)
|
|
{
|
|
DataView dvD = new DataView();
|
|
try
|
|
{
|
|
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT F_DeviceKindIndex,F_NumParam1,F_NumParam2,F_NumParam3,F_NumParam4,").Append(
|
|
"F_NumParam5,F_NumParam6,F_TxtParam,F_AheadDetect,F_ManTaskReserve,F_LockedState,").Append(
|
|
"F_Associate,F_SerialNumber,F_RouteID,F_DeviceIndex,F_DeviceCommandIndex,").Append(
|
|
"F_MonitorIndex,F_ManageTaskIndex,F_ManageTaskKindIndex,F_OutsideAltDevice,").Append(
|
|
"F_InsideAltDevice,F_StartDevice,F_EndDevice,F_RouteKind,F_UseAwayFork,F_AgvNo ").Append(
|
|
" FROM V_Monitor_Route_Device where F_MonitorIndex=").Append(minMidx);
|
|
|
|
dvD = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
|
|
if (dvD.Count > 0)
|
|
{
|
|
if (dvD[0]["F_AheadDetect"] != DBNull.Value)
|
|
{
|
|
_AheadDetect = dvD[0]["F_AheadDetect"].ToString();
|
|
}
|
|
else
|
|
{
|
|
_AheadDetect = "";
|
|
}
|
|
if (dvD[0]["F_ManTaskReserve"] != DBNull.Value)
|
|
{
|
|
_ManTaskReserve = Convert.ToInt32(dvD[0]["F_ManTaskReserve"]);
|
|
}
|
|
else
|
|
{
|
|
_ManTaskReserve = 0;
|
|
}
|
|
if (dvD[0]["F_Associate"] != DBNull.Value)
|
|
{
|
|
_Associate = Convert.ToInt32(dvD[0]["F_Associate"]);
|
|
}
|
|
else
|
|
{
|
|
_Associate = 0;
|
|
}
|
|
if (dvD[0]["F_LockedState"] != DBNull.Value)
|
|
{
|
|
_LockedState = Convert.ToInt32(dvD[0]["F_LockedState"]);
|
|
}
|
|
else
|
|
{
|
|
_LockedState = 0;
|
|
}
|
|
if (dvD[0]["F_NumParam1"] != DBNull.Value)
|
|
{
|
|
_NumParam1 = Convert.ToInt32(dvD[0]["F_NumParam1"]);
|
|
}
|
|
else
|
|
{
|
|
_NumParam1 = 0;
|
|
}
|
|
if (dvD[0]["F_NumParam2"] != DBNull.Value)
|
|
{
|
|
_NumParam2 = Convert.ToInt32(dvD[0]["F_NumParam2"]);
|
|
}
|
|
else
|
|
{
|
|
_NumParam2 = 0;
|
|
}
|
|
if (dvD[0]["F_NumParam3"] != DBNull.Value)
|
|
{
|
|
_NumParam3 = Convert.ToInt32(dvD[0]["F_NumParam3"]);
|
|
}
|
|
else
|
|
{
|
|
_NumParam3 = 0;
|
|
}
|
|
if (dvD[0]["F_NumParam4"] != DBNull.Value)
|
|
{
|
|
_NumParam4 = Convert.ToInt32(dvD[0]["F_NumParam4"]);
|
|
}
|
|
else
|
|
{
|
|
_NumParam4 = 0;
|
|
}
|
|
if (dvD[0]["F_NumParam5"] != DBNull.Value)
|
|
{
|
|
_NumParam5 = Convert.ToInt32(dvD[0]["F_NumParam5"]);
|
|
}
|
|
else
|
|
{
|
|
_NumParam5 = 0;
|
|
}
|
|
if (dvD[0]["F_NumParam6"] != DBNull.Value)
|
|
{
|
|
_NumParam6 = Convert.ToInt32(dvD[0]["F_NumParam6"]);
|
|
}
|
|
else
|
|
{
|
|
_NumParam6 = 0;
|
|
}
|
|
if (dvD[0]["F_TxtParam"] != DBNull.Value)
|
|
{
|
|
_TxtParam = dvD[0]["F_TxtParam"].ToString();
|
|
}
|
|
else
|
|
{
|
|
_TxtParam = "-";
|
|
}
|
|
_serialNumber = Convert.ToInt32(dvD[0]["F_SerialNumber"]);
|
|
_routeID = Convert.ToInt32(dvD[0]["F_RouteID"]);
|
|
_DeviceIdx = Convert.ToInt32(dvD[0]["F_DeviceIndex"]);
|
|
_DeviceOrder = Convert.ToInt32(dvD[0]["F_DeviceCommandIndex"]);
|
|
_ManageKindIdx = Convert.ToInt32(dvD[0]["F_ManageTaskKindIndex"]);
|
|
_ManageTaskIdx = Convert.ToInt32(dvD[0]["F_ManageTaskIndex"]);
|
|
_DeviceKind = Convert.ToInt32(dvD[0]["F_DeviceKindIndex"]);
|
|
if (dvD[0]["F_OutsideAltDevice"] != DBNull.Value)
|
|
{
|
|
_OutsideAltDevice = Convert.ToInt32(dvD[0]["F_OutsideAltDevice"]);
|
|
}
|
|
else
|
|
{
|
|
_OutsideAltDevice = 0;
|
|
}
|
|
if (dvD[0]["F_InsideAltDevice"] != DBNull.Value)
|
|
{
|
|
_InsideAltDevice = Convert.ToInt32(dvD[0]["F_InsideAltDevice"]);
|
|
}
|
|
else
|
|
{
|
|
_InsideAltDevice = 0;
|
|
}
|
|
_StartDevice = Convert.ToInt32(dvD[0]["F_StartDevice"]);
|
|
_EndDevice = Convert.ToInt32(dvD[0]["F_EndDevice"]);
|
|
_RouteKind = Convert.ToInt32(dvD[0]["F_RouteKind"]);
|
|
|
|
if (dvD[0]["F_AgvNo"] != DBNull.Value)
|
|
{
|
|
_AgvNo = Convert.ToInt32(dvD[0]["F_AgvNo"]);
|
|
}
|
|
else
|
|
{
|
|
_AgvNo = 65535;
|
|
}
|
|
return true;
|
|
}
|
|
else
|
|
{//20120420
|
|
CControlError = string.Format("·¢ËÍÃüÁîµ÷ÓÃGetSendInfoʱ£ºÂ·¾¶±íÀ{0}¡¿É豸Ë÷Òý²»´æÔÚ£¡", GetDeviceFromMonitor(minMidx).ToString());
|
|
|
|
return false;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
dvD.Dispose();
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// ·¢ËÍÖ¸¶¨µ÷¶ÈÈÎÎñºÅµÄÃüÁî
|
|
/// </summary>
|
|
/// <param name="MonitorIndex"></param>
|
|
/// <returns></returns>
|
|
public bool SendMonitorTask(int MonitorIndex)
|
|
{
|
|
try
|
|
{
|
|
lock (thisLock)
|
|
{
|
|
char[] sep = new char[1] { '-' };
|
|
int msgIdx = 0;//ÏûÏ¢±àºÅ
|
|
bool sendok;
|
|
|
|
#region ¶à²æ¹ØÁªÉ豸ָÁÈç¹û²»ÄÜͬ²½Ö´ÐУ¬·¢Ë;àÀë¶Ñ¶â»úµ±Ç°Î»ÖýüµÄÉ豸ָÁî
|
|
MonitorIndex = GetDoubleForkMinRouteTask(MonitorIndex);
|
|
if (MonitorIndex == -1) { return false; }
|
|
#endregion
|
|
|
|
//»ñµÃÒª·¢Ë͵ÄÐÅÏ¢
|
|
if (GetSendInfo(MonitorIndex) == false) { return false; }
|
|
int deviceIdx = _DeviceIdx;
|
|
int deviceKind = _DeviceKind;
|
|
int deviceOrder = _DeviceOrder;
|
|
int manageKindIdx = ccf.GetManageTaskKindIndexFromMonitor(MonitorIndex);
|
|
int manageTaskIdx = ccf.GetManageTaskIndexfromMonitor(MonitorIndex);
|
|
devinfo = Model.CGetInfo.GetDeviceInfo(deviceIdx);
|
|
// 202411 HSCP - ÐéÄâ´©Ë󳵺ÍÐéÄâ¶Ñ¶â»ú²»¼ì²éÁ¬½Ó״̬
|
|
if (((deviceKind == 4) && (devinfo.XCoor == 0) && (deviceIdx != 15310) && (deviceIdx != 15320)) && (devinfo.VirtualStack != deviceIdx))//20130510
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append(_DeviceIdx.ToString() + "µÄ¹âͨѶ±»ÕÚµ²£¬»òÕßûÉϵ磡");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
|
|
if (ccf.GetManageTaskKindIndexFromMonitor(MonitorIndex) == 4)
|
|
{
|
|
#region ÊÖ¹¤ÈÎÎñ
|
|
string ah = "I" + deviceIdx.ToString();
|
|
if ((deviceKind != 1) && ((deviceKind != 4)))
|
|
{
|
|
ah = "";
|
|
}
|
|
if (AheadDetectOK(MonitorIndex, ah) == false) //²»·ûºÏÔËÐÐÌõ¼þccf.GetBeDetectedDevices(_DeviceIdx))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
//CStaticClass.MessageIndex++;
|
|
CStaticClass.MessageIndex = 1;
|
|
msgIdx = (CStaticClass.MessageIndex);
|
|
|
|
sdo = CommModeCreate.CreateSendDeviceOrder(deviceIdx);
|
|
|
|
int[] gc = new int[6] { _NumParam2, _NumParam3, _NumParam1, _NumParam5, _NumParam6, _NumParam4 };
|
|
|
|
if ((deviceKind == 1) || (deviceKind == 6))
|
|
{
|
|
|
|
sendok = sdo.SendDeviceOrder(msgIdx, MonitorIndex, deviceOrder,
|
|
deviceIdx, gc[0], gc[1], gc[2], gc[3], gc[4], gc[5]);
|
|
|
|
}
|
|
else if (deviceKind == 4)
|
|
{
|
|
if (ccf.NeedOptimize(deviceIdx) == true)
|
|
{
|
|
ccf.InsertMonitorOptimizeChildTask(MonitorIndex);
|
|
sendok = true;
|
|
}
|
|
else
|
|
{
|
|
#region 202410 HSCP - ·¢ËÍ´©Ëó³µÈÎÎñ¼ÆËã±ÜÈÃ
|
|
if ((deviceIdx == 15301) || (deviceIdx == 15302) || (deviceIdx == 15303) || (deviceIdx == 15304))
|
|
{
|
|
DataView dvspS = new DataView(); DataView dvspE = new DataView(); DataView dvspifcreat = new DataView(); DataView dvspavoid = new DataView(); DataView dvspavoid2 = new DataView();
|
|
int locationTask = 0;
|
|
Model.MDevice devinfoUse = Model.CGetInfo.GetDeviceInfo(deviceIdx);
|
|
Model.MDevice devinfoOther = Model.CGetInfo.GetDeviceInfo(devinfoUse.MutexStack);
|
|
int EndStationS = GetMonitorStartStationfromMonitor(MonitorIndex);//ËÍ»õվ̨
|
|
int Get_LocationS = GetMonitorStartStationfromMonitor(MonitorIndex);//È¡»õվ̨
|
|
if ((deviceOrder == 2) || (deviceOrder == 7)) // È¡»õ¡¢Ô˶¯
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("select * from T_Base_BarcodeCoor where XCoor = ").Append(Get_LocationS).Append(" and VirtualStack = ").Append(devinfoUse.VirtualStack);//ORDER BY desc, asc
|
|
dvspS = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dvspS.Count > 0)
|
|
{
|
|
locationTask = Convert.ToInt32(dvspS[0]["BarcodeCoor"]);
|
|
}
|
|
else
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append("·¢ËÍÃüÁîʱȡËÍ»õ×ø±êÓÐÎó");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
}
|
|
else if (deviceOrder == 3) // ËÍ»õ
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("select * from T_Base_BarcodeCoor where XCoor = ").Append(EndStationS).Append(" and VirtualStack = ")
|
|
.Append(devinfoUse.VirtualStack);//ORDER BY desc, asc
|
|
dvspE = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dvspE.Count > 0)
|
|
{
|
|
locationTask = Convert.ToInt32(dvspE[0]["BarcodeCoor"]);
|
|
}
|
|
else
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append("·¢ËÍÃüÁîʱȡËÍ»õ×ø±êÓÐÎó");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
}
|
|
int tempMin = devinfoUse.XCoor < locationTask ? devinfoUse.XCoor : locationTask; // ÈÎÎñµØÖ·ºÍµ±Ç°³µµØÖ·Ñ¡Ð¡µÄ
|
|
int tempMax = devinfoUse.XCoor > locationTask ? devinfoUse.XCoor : locationTask; // ÈÎÎñµØÖ·ºÍµ±Ç°³µµØÖ·Ñ¡´óµÄ
|
|
string temp_F_TxtParam = ccf.GetF_TxtParamfromMonitor(MonitorIndex); // ÁÙʱÈÎÎñÌõÂë
|
|
|
|
bool ifcreat = false;
|
|
dvspifcreat = dbo.ExceSQL(string.Format("select F_MonitorIndex, F_NumParam2, F_Status from T_Monitor_Task " +
|
|
"where F_DeviceIndex={0} and F_TxtParam='{1}' and F_MonitorTaskLevel = 99 and F_ManageTASKKINDINDEX = 4",
|
|
devinfoOther.DeviceIndex, temp_F_TxtParam)).Tables[0].DefaultView;
|
|
if (dvspifcreat.Count <= 0)
|
|
{
|
|
// ûÓжԳµ±ÜÈÃÈÎÎñ
|
|
ifcreat = true;
|
|
}
|
|
else
|
|
{
|
|
// ÒÑÓжԳµ±ÜÈÃÈÎÎñ
|
|
if (Convert.ToInt32(dvspifcreat[0]["F_Status"]) > 1)// Ìí¼Ó±ÜÈÃÈÎÎñÒѾִÐкó¿ÉÒÔ·¢Ë͵±Ç°ÒªÖ´ÐÐÈÎÎñ
|
|
{
|
|
ifcreat = true;//do nothing ·¢Ë͵±Ç°ÈÎÎñ
|
|
}
|
|
else
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append("µÈ´ý±ÜÈÃÈÎÎñÖ´ÐнáÊø");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
//int Reserve_task_otherdevice = Get_F_ManTaskReserve(devinfoOther.DeviceIndex);
|
|
int OtherDeviceLockedState = Get_F_LockedState(devinfoOther.DeviceIndex);
|
|
int otherXcoor;
|
|
GetStackRunRGVZcoor(devinfoOther.DeviceIndex, out otherXcoor); // µÃµ½¶ÔÏò³µÖ´ÐÐÖÐÈÎÎñµÄվ̨ºÅ
|
|
|
|
if ((devinfoOther.XCoor > tempMin - Safe_distanceRGV) && (devinfoOther.XCoor < tempMax + Safe_distanceRGV))//¿ÉÄܱÜÈóµÁ¾µ±Ç°Î»ÖÃÔÚ±ÜÈÃÇøÄÚ
|
|
{
|
|
if ((devinfoOther.RunState == 0) && (ifcreat == true) && (otherXcoor <= 0))//¿ÕÏУ¬ÎÞ±ÜÈÃÈÎÎñ£¬ÎÞ>=ÒÑ·¢ËÍ״̬µÄÈÎÎñ£¬otherXcoor<=0 ûÓÐÖ´ÐÐÈÎÎñ
|
|
{
|
|
if (devinfoOther.DeviceIndex == 15302 || devinfoOther.DeviceIndex == 15303)
|
|
{
|
|
// ´óÌõÂë·½Ïò±ÜÈÃ
|
|
dvspavoid = dbo.ExceSQL(string.Format("select XCoor from T_Base_BarcodeCoor where BarcodeCoor >={0} and VirtualStack = {1} order by BarcodeCoor ", tempMax + Safe_distanceRGV, devinfoUse.VirtualStack)).Tables[0].DefaultView;
|
|
}
|
|
else if(devinfoOther.DeviceIndex == 15301 || devinfoOther.DeviceIndex == 15304)
|
|
{
|
|
// СÌõÂë·½Ïò±ÜÈÃ
|
|
dvspavoid = dbo.ExceSQL(string.Format("select XCoor from T_Base_BarcodeCoor where BarcodeCoor <= {0} and VirtualStack = {1} order by BarcodeCoor DESC ", tempMin - Safe_distanceRGV, devinfoUse.VirtualStack)).Tables[0].DefaultView;
|
|
}
|
|
if (dvspavoid.Count > 0)
|
|
{
|
|
int hidx = ccf.GetTempManageIdx();
|
|
int hmindx = ccf.GetMonitorIndex(hidx, 2);
|
|
sql.Remove(0, sql.Length);
|
|
// ¶ÔÏò³µÌí¼Ó±ÜÈÃÈÎÎñ
|
|
sql.Append("insert into T_Monitor_Task(F_MonitorTaskLevel,F_RouteID,F_ManageTaskIndex,F_ManageTaskKindIndex")
|
|
.Append(",F_MonitorIndex,F_DeviceIndex,F_DeviceCommandIndex,F_UseAwayFork,F_NumParam1,F_TxtParam,F_AheadDetect) ")
|
|
.Append("values(99,").Append(ccf.GetRouteIDsub(devinfoOther.DeviceIndex)).Append(",").Append(hidx).Append(",4,")
|
|
.Append(hmindx).Append(",").Append(devinfoOther.DeviceIndex).Append(",").Append(7).Append(",").Append(0).Append(",")
|
|
.Append(dvspavoid[0]["XCoor"]).Append(", '").Append(temp_F_TxtParam).Append("','-')");
|
|
dbo.ExecuteSql(sql.ToString());
|
|
|
|
sql.Remove(0, sql.Length); //µ±Ç°ÈÎÎñÌí¼ÓÔ¤Ô¼
|
|
sql.Append("UPDATE T_Base_Device SET F_ManTaskReserve = (").Append(manageKindIdx.ToString()).Append(manageTaskIdx.ToString()).Append(") WHERE (F_DeviceIndex = ").Append(devinfoUse.DeviceIndex).Append(")");
|
|
dbo.ExceSQL(sql.ToString());
|
|
return false;
|
|
}
|
|
else //±ÜÈð²È«¾àÀëºó³¬³öµ¥²æ´©ËóÈ«³µÐг̷¶Î§ ÕÒÒ»¸ö×î¿¿±ßµÄվ̨
|
|
{
|
|
if (devinfoOther.DeviceIndex == 15302 || devinfoOther.DeviceIndex == 15303) //´óÌõÂë·½Ïò
|
|
{
|
|
dvspavoid = dbo.ExceSQL(string.Format("select XCoor from T_Base_BarcodeCoor where VirtualStack = {0} order by BarcodeCoor DESC", devinfoUse.VirtualStack)).Tables[0].DefaultView;
|
|
}
|
|
else
|
|
{
|
|
dvspavoid = dbo.ExceSQL(string.Format("select XCoor from T_Base_BarcodeCoor where VirtualStack = {0} order by BarcodeCoor ASC ", devinfoUse.VirtualStack)).Tables[0].DefaultView;
|
|
}
|
|
if (dvspavoid.Count > 0)
|
|
{
|
|
int hidx = ccf.GetTempManageIdx();
|
|
int hmindx = ccf.GetMonitorIndex(hidx, 2);
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("insert into T_Monitor_Task (F_MonitorTaskLevel,F_RouteID,F_ManageTaskIndex,F_ManageTaskKindIndex")
|
|
.Append(",F_MonitorIndex,F_DeviceIndex,F_DeviceCommandIndex,F_UseAwayFork,F_NumParam1,F_TxtParam,F_AheadDetect) ")
|
|
.Append("values(2,").Append(ccf.GetRouteIDsub(devinfoOther.DeviceIndex)).Append(",").Append(hidx).Append(",4,")
|
|
.Append(hmindx).Append(",").Append(devinfoOther.DeviceIndex).Append(",").Append(7).Append(",").Append(1).Append(",")
|
|
.Append(dvspavoid[0]["XCoor"]).Append(", '").Append(temp_F_TxtParam).Append("','-')");
|
|
dbo.ExecuteSql(sql.ToString());
|
|
|
|
sql.Remove(0, sql.Length); //µ±Ç°ÈÎÎñÌí¼ÓÔ¤Ô¼
|
|
sql.Append("UPDATE T_Base_Device SET F_ManTaskReserve = (").Append(manageKindIdx.ToString()).Append(manageTaskIdx.ToString()).Append(") WHERE (F_DeviceIndex = ").Append(devinfoUse.DeviceIndex).Append(")");
|
|
dbo.ExceSQL(sql.ToString());
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (otherXcoor > 0) //¿ÉÄܱÜÈóµÓÐ>=ÒÑ·¢ËͷDZÜÈÃÈÎÎñ
|
|
{
|
|
int End_Position = 0;
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("select * from T_Base_BarcodeCoor where XCoor = ").Append(otherXcoor).Append(" and VirtualStack = ").Append(devinfoUse.VirtualStack);
|
|
dvspavoid2 = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dvspavoid2.Count > 0)
|
|
{
|
|
End_Position = Convert.ToInt32(dvspavoid2[0]["BarcodeCoor"]);
|
|
}
|
|
// Ôݶ¨15301×ø±êÓÀÔ¶´óÓÚ15302µÄ×ø±ê ¼´·½°¸Í¼ÖÐÏÂÃæ×ø±ê´óÓÚÉÏÃæ×ø±ê
|
|
//²¢ÇÒ³µÁ¾ÒѾÔËÐÐ
|
|
if ((((devinfoOther.DeviceIndex == 15301 || devinfoOther.DeviceIndex == 15304) && (End_Position > tempMax + Safe_distanceRGV)) || ((devinfoOther.DeviceIndex == 15302 || devinfoOther.DeviceIndex == 15303) && (End_Position < tempMin - Safe_distanceRGV))) && (devinfoOther.RunState == 1))
|
|
{
|
|
//Ö±½Ó·¢Ë͵±Ç°ÈÎÎñ
|
|
}
|
|
else
|
|
{
|
|
AheadDetectUnallow.Append(string.Format("µÈ´ý±ÜÈÃÉ豸{0}ÈÎÎñÖ´ÐÐÍêÈÎÎñ! ", devinfoOther.DeviceIndex));
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
}
|
|
else // ¿ÉÄܱÜÈóµÃ»ÓÐ>=ÒÑ·¢Ë͵ÄÖ¸Áî
|
|
{
|
|
if ((devinfoOther.RunState > 0) || (OtherDeviceLockedState != 0))
|
|
{ // ±¨¾¯»òÕ߯äËûÔÒò
|
|
AheadDetectUnallow.Append(string.Format("µÈ´ý±ÜÈÃÉ豸{0}״̬»Ö¸´! ", devinfoOther.DeviceIndex));
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
AheadDetectUnallow.Append(string.Format("²»Ã÷ÔÒò£¬Çë²é¿´³µÁ¾{0}״̬¼°ÈÎÎñ״̬! ", devinfoOther.DeviceIndex));
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (otherXcoor > 0)//¿ÉÄܱÜÈóµ,ÓÐÒÑ·¢ËÍÈÎÎñ
|
|
{
|
|
int otherbccoor = GetBarcodeStationRGV(otherXcoor, devinfoUse.VirtualStack);//»ñµÃ»¥³â¶Ñ¶â»úÕýÔÚÖ´ÐÐÈÎÎñµÄ×ø±êÁÐÌõÂëÖµ
|
|
//Èç¹ûµ±Ç°Î»ÖûòÕßÖÕµãλÖÃÔÚ±ÜÈÃÇø£¬µÈ´ýÖ´ÐÐÍêÈÎÎñÔÚÅжÏÊÇ·ñ×ãÒª±ÜÈÃ
|
|
if ((devinfoOther.XCoor > tempMin - Safe_distanceRGV) && (devinfoOther.XCoor < tempMax + Safe_distanceRGV) || (otherbccoor < tempMax + Safe_distanceRGV) && (otherbccoor > tempMin - Safe_distanceRGV))
|
|
{//Èç¹û±ÜÈóµÈÎÎñÖÕµãÔÚ°²È«¾àÀëÍâ
|
|
AheadDetectUnallow.Append(string.Format("µÈ´ýÉ豸{0}Ö´ÐÐÍêÈÎÎñ! ", devinfoOther.DeviceIndex));
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
sendok = sdo.SendDeviceOrder(msgIdx, MonitorIndex, deviceOrder, deviceIdx, gc[2]);
|
|
}
|
|
|
|
}
|
|
else if (_DeviceKind == 13)
|
|
{//richard.liu20230718ºè°²»·´©
|
|
if (deviceOrder == 4) // ¿Õ³µÒƶ¯£¬ÊäËÍÏß·¢µ½È¡»õµØÖ·£¬ÊÖ¶¯Ï´ï²ÎÊýÔÚgc[5]
|
|
{
|
|
sendok = sdo.SendDeviceOrder(msgIdx, MonitorIndex, deviceOrder,
|
|
deviceIdx, gc[0], gc[1], gc[5], gc[3], gc[4], gc[5]);
|
|
}
|
|
else
|
|
{
|
|
sendok = sdo.SendDeviceOrder(msgIdx, MonitorIndex, deviceOrder,
|
|
deviceIdx, gc[0], gc[1], gc[2], gc[3], gc[4], gc[5]);
|
|
}
|
|
|
|
//20231017
|
|
if (sendok == true && (deviceOrder == 1 || deviceOrder == 2)) // 1£ºÈ¡Ð¶»õ 2£ºÈ¡»õ 3£ºÐ¶»õ 4£º¿Õ³µÒƶ¯
|
|
{
|
|
//AddOPCSendData(deviceIdx, MonitorIndex, itemnames, itemvalues);
|
|
sdo = CommModeCreate.CreateSendDeviceOrder(gc[2]); // »·´©È¡»õÊäËÍÏßÉ豸 _NumParam1
|
|
sdo.SendDeviceOrder(2, MonitorIndex, 0, gc[2], 0); // ¸øÈ¡»õÊäËÍÏß·¢ËͶԽÓÈÎÎñºÅ
|
|
//AddOPCSendData(gc[2], MonitorIndex, itemnames, itemvalues);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
sendok = sdo.SendDeviceOrder(msgIdx, MonitorIndex, deviceOrder, deviceIdx, gc[5]);
|
|
}
|
|
|
|
|
|
if (sendok == false)
|
|
{
|
|
if (sdo.CommLayerError != null)
|
|
{
|
|
RefreshMonitorEventArgs rmea = new RefreshMonitorEventArgs("tsStatus", sdo.CommLayerError);
|
|
OnRefreshMonitor(rmea);
|
|
}
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
//////////////////////////
|
|
ccf.SendOrderSuccess(manageKindIdx, manageTaskIdx, MonitorIndex, deviceIdx, _routeID);
|
|
#region ¶à²æ¹ØÁªÈÎÎñ£¬ÄÜͬ²½µÄͬʱ±¨¸æ·¢ËÍÃüÁî³É¹¦
|
|
//20100323
|
|
devinfo = Model.CGetInfo.GetDeviceInfo(deviceIdx);
|
|
if (devinfo.IfCorrelDoubleFork == "1")
|
|
{
|
|
int[] mforkMoninfo = Model.CGeneralFunction.MutiForkIfSync(MonitorIndex, deviceIdx, deviceKind);
|
|
if (mforkMoninfo != null)
|
|
{
|
|
Dictionary<int, string[]> corr = Model.CGeneralFunction.GetDoubleForkMonitorInfo(MonitorIndex, deviceIdx);
|
|
for (int i = 0; i < mforkMoninfo.GetLength(0); i++)
|
|
{
|
|
ccf.SendOrderSuccess(ccf.GetManageTaskKindIndexFromMonitor(mforkMoninfo[i]), ccf.GetManageTaskIndexfromMonitor(mforkMoninfo[i]), mforkMoninfo[i], Convert.ToInt32(corr[mforkMoninfo[i]][2]), Convert.ToInt32(corr[mforkMoninfo[i]][3]));
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
return true;
|
|
}
|
|
#endregion
|
|
}
|
|
|
|
#region ×Ô¶¯ÃüÁî(taskkind == 1£¬2)
|
|
if (GetFirstDeviceIFLocked(MonitorIndex, true) == false)//ûÓб»Ëø¶¨£¬¿ÕÏÐ
|
|
{
|
|
devinfo = Model.CGetInfo.GetDeviceInfo(deviceIdx);
|
|
CStaticClass.MessageIndex = 1;
|
|
msgIdx = (CStaticClass.MessageIndex);
|
|
sdo = CommModeCreate.CreateSendDeviceOrder(deviceIdx);
|
|
|
|
//ÅжÏÉ豸ÊÇ·ñΪ¶Ñ¶â»úRGVºÍAGV
|
|
int[] gc = new int[6] { _NumParam2, _NumParam3, _NumParam1, _NumParam5, _NumParam6, _NumParam4 };//»ñµÃ×ø±ê
|
|
if (gc == null)
|
|
{
|
|
this.CControlError += string.Format("·¢ËÍÃüÁîʱ²»ÄÜÈ¡µÃÉè±¸×ø±ê£¡");
|
|
return false;
|
|
}
|
|
|
|
#region RGVÑ¡³µÂß¼
|
|
//WangJx1nnn 202409-RGVÑ¡³µÂß¼
|
|
|
|
#region 202410 HSCP ´©Ëó³µÑ¡Ôñ£¬ÎÞ¼«ÏÞվ̨¡¢ÎÞÖÐת
|
|
// һ¥×ó
|
|
int manageSelect_FlagRGV = ccf.GetManageSelectFlagfromManage(manageTaskIdx);
|
|
if ((deviceIdx == 15310 || deviceIdx == 15320) && (manageSelect_FlagRGV == 0))
|
|
{
|
|
int deviceRGV1 = 15301;
|
|
int deviceRGV2 = 15302;
|
|
if ( deviceIdx == 15320 )
|
|
{
|
|
deviceRGV1 = 15304;
|
|
deviceRGV2 = 15303;
|
|
}
|
|
|
|
/*202410 HSCP RGVÈ¡ËÍ»õÂß¼
|
|
1.Á½³µÈ«²¿ÔÚÏߣº15301²»È¡/ËÍ12333£¬15302²»ËÍ12339£»
|
|
2.Ëͳö12312£ºÓÅÏÈ·ÖÅä15301£»Èô15301ÔËÐУ¬ÅжÏ15301ÊÇÈë¿âÔòµÈ´ý15301Èë¿âÍê³ÉÖ´Ðгö¿â£¬Èô15301³ö¿âÔò·ÖÅä15302ºó×¢Òâ15301±ÜÈã»
|
|
3.Ëͳö12312£¬ÓÅÏÈ·ÖÅä15301£»Èç¹û15301Óгö¿âËͳöÖ¸ÁîÔÙ·ÖÅä15302£»
|
|
4.12309Èë¿âÓÅÏÈ3.4.5ÏïµÀ15301£»12333Èë¿âÓÅÏÈ1.2ÏïµÀ15302£»
|
|
5.ÓÅÏȼ¶£ºÈ¡ËÍ»õÖ¸Áî > AGVÔ˶¯£»
|
|
ÅÐ¶Ï 12339Óлõʱ£¬12309³öµ½Òì³£¿ÚµÄ»õ²»½Ó²»·ÖÅä
|
|
*/
|
|
//1²éѯȡËÍ»õվ̨ºÅ£¬ÅжÏվ̨ÓлõÇÒÉ豸²»Îª¿ÕÏУ¬±¨¾¯£»±¨Ä¿±êλÖÃÓÐÈÎÎñ±»Ô¤Ô¼
|
|
//2²éѯ15301.15302É豸ÐÅÏ¢
|
|
//3²éѯÉ豸ÊÇ·ñÍ£Óã¬Í£ÓÃÉèÖÃÔËÐÐ״̬Ϊ4£¬·ñÔò²»±ä;ÅжÏRGV״̬ 1-5±¨¾¯
|
|
|
|
Model.MDevice devinfoRGV1 = Model.CGetInfo.GetDeviceInfo(deviceRGV1);
|
|
Model.MDevice devinfoRGV2 = Model.CGetInfo.GetDeviceInfo(deviceRGV2);
|
|
//202410
|
|
DataView dv15301 = new DataView();
|
|
string sql15301 = string.Empty;
|
|
sql15301 = string.Format("SELECT f_errorcode FROM T_BASE_DEVICE WHERE f_errorcode='998' and f_deviceindex= '{0}' ", devinfoRGV1.DeviceIndex);
|
|
dv15301 = dbo.ExceSQL(sql15301).Tables[0].DefaultView;
|
|
if (dv15301.Count > 0)
|
|
{
|
|
devinfoRGV1.RunState = 4;
|
|
}
|
|
DataView dv15302 = new DataView();
|
|
string sql15302 = string.Empty;
|
|
sql15302 = string.Format("SELECT f_errorcode FROM T_BASE_DEVICE WHERE f_errorcode='998' and f_deviceindex= '{0}' ", devinfoRGV2.DeviceIndex);
|
|
dv15302 = dbo.ExceSQL(sql15302).Tables[0].DefaultView;
|
|
if (dv15302.Count > 0)
|
|
{
|
|
devinfoRGV2.RunState = 4;
|
|
}
|
|
// 15301Óë15302Ë«³µ¾ù²»¿ÉÓÃ
|
|
if ((devinfoRGV1.RunState > 1) && (devinfoRGV1.RunState < 5) && (devinfoRGV2.RunState > 1) && (devinfoRGV2.RunState < 5))
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append("Ë«³µ×´Ì¬¾ù²»¿ÉÓã¬ÎÞ·¨Ñ¡ÔñAGVÉ豸£¡");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
// 4Ñ¡³µ
|
|
int tempRGV = deviceRGV1;
|
|
int Aviod15301 = -1;
|
|
int Aviod15302 = -1;
|
|
// Ö»ÓÐһ̨ÄÜÓã¨Áíһ̨ͣÓã©,Ö»ÄÜÑ¡Õâ¸ö
|
|
int Get_LocationS = GetMonitorStartStationfromMonitor(MonitorIndex);//È¡»õվ̨
|
|
int EndStationS = GetMonitorEndStationfromMonitor(MonitorIndex);//ËÍ»õվ̨
|
|
// Ö»ÓÐÒ»Á¾³µ¿ÉÓã¨ÁíÒ»Á¾³µÍ£Óã©£¬Ñ¡Óõ±Ç°³µÁ¾¡£
|
|
if (devinfoRGV1.RunState == 4 && (devinfoRGV2.RunState <= 3 || devinfoRGV2.RunState == 5))
|
|
{
|
|
tempRGV = deviceRGV2;
|
|
}
|
|
else if (devinfoRGV2.RunState == 4 && (devinfoRGV1.RunState <= 3 || devinfoRGV1.RunState == 5))
|
|
{
|
|
tempRGV = deviceRGV1;
|
|
}
|
|
// Èç¹ûÁ½³µ¶¼ÄÜÓ㬲¢ÇÒÈ¡ËÍ»õÇøÓò½»²æ²é¿´³µµÄÐгÌÔ¶½üºÍ״̬£¬ÈçÓиϳµÏÖÏóÐгÌÒ²ËãÉÏ¡£
|
|
else
|
|
{
|
|
|
|
/*
|
|
* 202412 HSCP RGVÈ¡ËÍ»õÂß¼ÓÅ»¯£¨Á½Á¾³µ¾ùÔÚÏßÇé¿ö£©£º
|
|
* È¡£º
|
|
* 1.12339/12539Òì³£¿ÚÈÎÎñ£º·ÖÅä15301/15304£»
|
|
* 2.12310/12510³ö¿âÈÎÎñ£º15304¿ÕÏлòÈë¿âÈÎÎñÓÅÏÈ·ÖÅä15301/15304£»
|
|
* 3.12305/12505Èë¿âÈÎÎñ£ºÅжÏÈë¿âÈÎÎñÊý=1£¬ÔòÓÅÏÈ·ÖÅä15301/15304£»Èë¿âÈÎÎñÊý>=2,ÔòÓÅÏÈ·Ö15303/15302£¬ÔÙ·ÖÅä15301/15304£»
|
|
* 4.12335/12535³ö¿âÈÎÎñ£º15303¿ÕÏлòÈë¿âÈÎÎñÓÅÏÈ·ÖÅä15302/15303£»
|
|
* 5.12335Èë¿âÈÎÎñ£ºÅжÏÈë¿âÈÎÎñÊý=1£¬ÔòÓÅÏÈ·ÖÅä15302£»Èë¿âÈÎÎñÊý>=2,ÔòÓÅÏÈ·Ö15302£¬ÔÙ·ÖÅä15301£»
|
|
*/
|
|
|
|
// ÌØÊâλÖÃÖ¸¶¨³µºÅ
|
|
// ÌØÊâλÖÃ--Òì³£¿Ú12339/12539Òì³£¿ÚÏÞ15301/15303
|
|
if ((EndStationS == 12339 || EndStationS == 12539) && (devinfoRGV1.RunState != 4))
|
|
{
|
|
tempRGV = deviceRGV1;
|
|
}
|
|
// ÌØÊâλÖÃ--Ï·½³öÈë¿â¿Ú12333/12533ÏÞ15302/15304
|
|
else if ((Get_LocationS == 12333 || EndStationS == 12333 || EndStationS == 12533 ) && (devinfoRGV2.RunState != 4))
|
|
{
|
|
tempRGV = deviceRGV2;
|
|
}
|
|
// Èë
|
|
else if (((Get_LocationS == 12309) && (EndStationS <= 12317) && (devinfoRGV1.RunState != 4)) || ((Get_LocationS == 12509) && (EndStationS <= 12517) && (devinfoRGV1.RunState != 4)))
|
|
{
|
|
tempRGV = deviceRGV1; // 1Â¥4.5ÏïµÀÈë¿â£¬15301/15304
|
|
}
|
|
else if (((Get_LocationS == 12309) && (EndStationS >= 12521) && (devinfoRGV2.RunState != 4)) || ((Get_LocationS == 12509) && (EndStationS >= 12521) && (devinfoRGV2.RunState != 4)))
|
|
{
|
|
tempRGV = deviceRGV2; // 1Â¥1.2.3ÏïµÀÈë¿â£¬15302/15303
|
|
}
|
|
// ³ö
|
|
else if (((EndStationS == 12312) && (Get_LocationS <= 12323) && (devinfoRGV1.RunState != 4)) || ((EndStationS == 12512) && (Get_LocationS <= 12523) && (devinfoRGV1.RunState != 4)))
|
|
{
|
|
tempRGV = deviceRGV1; // 1Â¥3.4.5ÏïµÀ³ö¿â£¬15301/15304
|
|
}
|
|
else if (((EndStationS == 12312) && (Get_LocationS >= 12327) && (devinfoRGV2.RunState != 4)) || ((EndStationS == 12512) && (Get_LocationS >= 12527) && (devinfoRGV2.RunState != 4)))
|
|
{
|
|
tempRGV = deviceRGV2; // 1Â¥1.2ÏïµÀ³ö¿â£¬15302/15303
|
|
}
|
|
else
|
|
{
|
|
// ÅжϾàÀë ·µ»Østack1 distance1 avoid2 stack2 distance2 avoid1
|
|
// 15301: 0,2-0/1 ²»±ÜÈÃ/±ÜÈà 0,0-15301 0,1-¾àÀë
|
|
// 15302: 1,2-0/1 ²»±ÜÈÃ/±ÜÈà 1,0-15302 1,1-¾àÀë
|
|
int[,] temp = Calulate_DistanceRGV(devinfoRGV1, devinfoRGV2, MonitorIndex);
|
|
if ((temp[0, 1] != -1) && (temp[1, 1] != -1))
|
|
{
|
|
if (temp[0, 1] < temp[1, 1])
|
|
{
|
|
tempRGV = temp[0, 0];
|
|
}
|
|
else
|
|
{
|
|
tempRGV = temp[1, 0];
|
|
}
|
|
Aviod15302 = temp[0, 2];//¼Ç¼Èç¹ûÑ¡15301,15302ÊÇ·ñÐèÒª±ÜÈà 0-²»±ÜÈã»1-±ÜÈá£
|
|
Aviod15301 = temp[1, 2];//¼Ç¼Èç¹ûÑ¡15302,15301ÊÇ·ñÐèÒª±ÜÈà 0-²»±ÜÈã»1-±ÜÈá£
|
|
}
|
|
else
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append("Ñ¡³µÊ±È¡»õ»òËÍ»õ×ø±ê´íÎó,¼ì²é²¢Î¬»¤£¡");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
#region Ñ¡Ôñ³µÖ®ºóÓÐÔ¤Ô¼Ëø£¬±¨¾¯´¦Àí
|
|
// °´Êµ¼ÊÇé¿ö¸ü¸ÄÅжÏÊÇ´óÈÎÎñÔ¤Ô¼Ëø»¹ÊÇÔËÐÐËø,ÔÝʱ°´Ô¤Ô¼ËøÖ´ÐÐ
|
|
int Reserve_15301 = Get_F_ManTaskReserve(deviceRGV1);
|
|
int Reserve_15302 = Get_F_ManTaskReserve(deviceRGV2);
|
|
if (((tempRGV == deviceRGV1)&&((devinfoRGV1.RunState != 0)||(Reserve_15301>0)))||((tempRGV == deviceRGV2) &&((devinfoRGV2.RunState != 0)||(Reserve_15302>0))))
|
|
{
|
|
// Èç¹ûÑ¡¶¨µÄ³µ±¨¾¯£¬Çҵȴýʱ¼äµ½£¬²¢ÇÒÈçÓÃÁíһ̨²»ÐèÒª´Ë³µ±ÜÈòŻ»³µ,²¢ÇÒÁíһ̨³µ¿ÕÏУ¬ÎÞÔ¤Ô¼¡£
|
|
if ((devinfoRGV1.RunState == 2) && (tempRGV == deviceRGV1) && (Aviod15301 == 0) && (devinfoRGV2.RunState == 0) && (Reserve_15302 == 0))
|
|
{
|
|
tempRGV = deviceRGV2; // 1ºÅ±¨¾¯»»2ºÅ
|
|
}
|
|
else if ((devinfoRGV2.RunState == 2) && (tempRGV == deviceRGV2) && (Aviod15302 == 0) && (devinfoRGV1.RunState == 0) && (Reserve_15301 == 0))
|
|
{
|
|
tempRGV = deviceRGV1; // 2ºÅ±¨¾¯»»1ºÅ
|
|
}
|
|
else
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append("µÈ´ýÔÝÑ¡³µÁ¾" + tempRGV.ToString() + "״̬¿ÕÏлòÔ¤Ô¼Çå³ý");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false; // Ñ¡¶¨µÄ³µ²»·ûºÏÌõ¼þʱ£¬²»¸ü»»³µ£¬ÏÂÂÖÖØÐÂÑ¡Ôñ
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 202410Ñ¡³µÂß¼
|
|
///
|
|
/*
|
|
if (tempRGV == 15301)
|
|
{
|
|
if (devinfoRGV2.RunState != 4)
|
|
{
|
|
if (_NumParam2 == 12333 || _NumParam5 == 12333)
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append("15301:³¬³öµ±Ç°·¶Î§£¬²»È¡ËÍ12333£¡");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
else if (tempRGV == 15302)
|
|
{
|
|
if (devinfoRGV1.RunState != 4)
|
|
{
|
|
// 8-112
|
|
if ((_NumParam5 == 12309))
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append("15302:³¬³öµ±Ç°·¶Î§£¬²»ËÍ12309£¡");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
*/
|
|
#endregion
|
|
|
|
#region ÐÞ¸ÄÌáǰ¼ì²é¡¢É豸ºÅµÈÈÎÎñÐÅÏ¢
|
|
sql.Clear();
|
|
sql.Append("UPDATE T_Monitor_Task SET ").Append(" F_AheadDetect=Replace(F_AheadDetect,'")
|
|
.Append(deviceIdx).Append("','").Append(tempRGV).Append("')").Append(" ,F_DeviceIndex=Replace(F_DeviceIndex,'")
|
|
.Append(deviceIdx).Append("','").Append(tempRGV).Append("')").Append(" WHERE (F_ManageTaskIndex = ")
|
|
.Append(manageTaskIdx).Append(") AND (F_ManageTASKKINDINDEX = ")
|
|
.Append(manageKindIdx).Append(")");
|
|
dbo.ExecuteSql(sql.ToString());
|
|
|
|
//¸üÐÂmanage±íSelect_Flag = 1 ±ÜÃâ¸ü¸Ä³É¹¦ºóÔÙ´ÎÑ¡³µ
|
|
sql.Clear();
|
|
sql.Append("UPDATE T_Manage_Task SET ").Append("manageSelect_Flag = 1 where FID = ").Append(manageTaskIdx);
|
|
dbo.ExecuteSql(sql.ToString());
|
|
#endregion
|
|
|
|
return false;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region HSCP RGV·¢ËÍÈÎÎñ£¬¼ÆËã±ÜÈá£
|
|
if ((deviceIdx == 15301) || (deviceIdx == 15302) || (deviceIdx == 15303) || (deviceIdx == 15304))
|
|
{
|
|
DataView dvspQ = new DataView();
|
|
DataView dvspS = new DataView();
|
|
DataView dvspifcreat = new DataView();
|
|
DataView dvspavoid = new DataView();
|
|
DataView dvspavoid2 = new DataView();
|
|
int locationTask = 0;
|
|
Model.MDevice devinfoUse = Model.CGetInfo.GetDeviceInfo(deviceIdx);
|
|
Model.MDevice devinfoOther = Model.CGetInfo.GetDeviceInfo(devinfoUse.MutexStack);
|
|
#region ³µ±ÜÈÃ
|
|
|
|
int EndStationS = GetMonitorStartStationfromMonitor(MonitorIndex);//ËÍ»õվ̨
|
|
int Get_LocationS = GetMonitorStartStationfromMonitor(MonitorIndex);//È¡»õվ̨
|
|
|
|
// È¡»õ¡¢Ô˶¯
|
|
if ((deviceOrder == 2) || (deviceOrder == 7))
|
|
{
|
|
//int[] QUstation = new int[] { 12333, 12309, 12315, 12319, 12323, 12327, 12331 };
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("select * from T_Base_BarcodeCoor where XCoor = ").Append(Get_LocationS).Append(" and VirtualStack = ").Append(devinfoUse.VirtualStack);//ORDER BY desc, asc
|
|
dvspQ = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dvspQ.Count > 0)
|
|
{
|
|
locationTask = Convert.ToInt32(dvspQ[0]["BarcodeCoor"]);
|
|
}
|
|
else
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append("·¢ËÍÃüÁîʱȡ»õ×ø±êÓÐÎó£¡");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
}
|
|
// ËÍ»õ
|
|
else if (deviceOrder == 3)
|
|
{
|
|
//int[] SONGstation = new int[] { 12333, 12339, 12312, 12313, 12317, 12321, 13225, 12329 };
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("select * from T_Base_BarcodeCoor where XCoor = ").Append(EndStationS).Append(" and VirtualStack = ").Append(devinfoUse.VirtualStack);//ORDER BY desc, asc
|
|
dvspS = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dvspS.Count > 0)
|
|
{
|
|
locationTask = Convert.ToInt32(dvspS[0]["BarcodeCoor"]);
|
|
}
|
|
else
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append("·¢ËÍÃüÁîʱËÍ»õ×ø±êÓÐÎó£¡");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
int tempMin = devinfoUse.XCoor < locationTask ? devinfoUse.XCoor : locationTask; // ÈÎÎñµØÖ·ºÍµ±Ç°³µÎ»ÖÃѡСµÄ
|
|
int tempMax = devinfoUse.XCoor > locationTask ? devinfoUse.XCoor : locationTask; // ÈÎÎñµØÖ·ºÍµ±Ç°³µÎ»ÖÃÑ¡´óµÄ
|
|
string temp_F_TxtParam = ccf.GetF_TxtParamfromMonitor(MonitorIndex); // ÁÙʱÈÎÎñÌõÂë
|
|
|
|
bool ifcreat = false;
|
|
dvspifcreat = dbo.ExceSQL(string.Format("select F_MonitorIndex,F_NumParam2,F_Status from T_Monitor_Task where F_DeviceIndex={0} and F_TxtParam='{1}' and F_ManageTASKKINDINDEX = 4", devinfoOther.DeviceIndex, temp_F_TxtParam)).Tables[0].DefaultView;
|
|
if (dvspifcreat.Count <= 0)
|
|
{
|
|
ifcreat = true; // ÎÞ±ÜÈÃÈÎÎñ
|
|
}
|
|
else
|
|
{
|
|
if (Convert.ToInt32(dvspifcreat[0]["F_Status"]) > 1)//Ìí¼Ó±ÜÈÃÈÎÎñÒѾִÐкó¿ÉÒÔ·¢Ë͵±Ç°ÒªÖ´ÐÐÈÎÎñ
|
|
{
|
|
//do nothing ·¢Ë͵±Ç°ÈÎÎñ
|
|
ifcreat = true;
|
|
}
|
|
else
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append("µÈ´ý±ÜÈÃÈÎÎñÖ´ÐнáÊø£¡");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
}
|
|
int OtherDeviceLockedState = Get_F_LockedState(devinfoOther.DeviceIndex);
|
|
int otherXcoor;
|
|
GetStackRunRGVZcoor(devinfoOther.DeviceIndex, out otherXcoor); //µÃµ½¶ÔÏò³µÖ´ÐÐÖÐÈÎÎñµÄվ̨ºÅ
|
|
|
|
// ¿ÉÄܱÜÈóµÁ¾µ±Ç°Î»ÖÃÔÚ±ÜÈÃÇø¼äÄÚ£¬ÐèÒª±ÜÈá£
|
|
if ((devinfoOther.XCoor > tempMin - Safe_distanceRGV) && (devinfoOther.XCoor < tempMax + Safe_distanceRGV))
|
|
{
|
|
if ((devinfoOther.RunState == 0) && (ifcreat == true) && (otherXcoor <= 0))//¿ÕÏУ¬ÎÞ±ÜÈÃÈÎÎñ£¬ÎÞ>=ÒÑ·¢ËÍ״̬µÄÈÎÎñ£¬otherXcoor<=0 ûÓÐÖ´ÐÐÈÎÎñ¡£
|
|
{
|
|
if ((devinfoOther.DeviceIndex == 15302) || (devinfoOther.DeviceIndex == 15303))
|
|
{
|
|
// ´óÌõÂë·½Ïò±ÜÈà 12515
|
|
dvspavoid = dbo.ExceSQL(string.Format("select XCoor from T_Base_BarcodeCoor where BarcodeCoor >= {0} and VirtualStack = {1} order by BarcodeCoor ", tempMax + Safe_distanceRGV, devinfoUse.VirtualStack)).Tables[0].DefaultView;
|
|
}
|
|
else
|
|
{
|
|
// СÌõÂë·½Ïò±ÜÈÃ
|
|
dvspavoid = dbo.ExceSQL(string.Format("select XCoor from T_Base_BarcodeCoor where BarcodeCoor <= {0} and VirtualStack = {1} order by BarcodeCoor DESC ", tempMin - Safe_distanceRGV, devinfoUse.VirtualStack)).Tables[0].DefaultView;
|
|
}
|
|
if (dvspavoid.Count > 0)
|
|
{
|
|
int hidx = ccf.GetTempManageIdx();
|
|
int hmindx = ccf.GetMonitorIndex(hidx, 2);
|
|
sql.Remove(0, sql.Length);
|
|
// ¶ÔÏò³µÌí¼Ó±ÜÈÃÈÎÎñ
|
|
sql.Append("insert into T_Monitor_Task(F_MonitorTaskLevel,F_RouteID,F_ManageTaskIndex,F_ManageTaskKindIndex,F_MonitorIndex")
|
|
.Append(",F_DeviceIndex,F_DeviceCommandIndex,F_UseAwayFork,F_NumParam1,F_TxtParam,F_AheadDetect) ")
|
|
.Append("values(99,").Append(ccf.GetRouteIDsub(devinfoOther.DeviceIndex)).Append(",").Append(hidx) // leverl 99 Çø·ÖÆäËûÈÎÎñ
|
|
.Append(",4,").Append(hmindx).Append(",").Append(devinfoOther.DeviceIndex).Append(",").Append(7).Append(",").Append(0)
|
|
.Append(",").Append(dvspavoid[0]["XCoor"]).Append(", '").Append(temp_F_TxtParam).Append("','-')");
|
|
dbo.ExecuteSql(sql.ToString());
|
|
|
|
sql.Remove(0, sql.Length);//Ìí¼ÓÔ¤Ô¼
|
|
sql.Append("UPDATE T_Base_Device SET F_ManTaskReserve = (").
|
|
Append(manageKindIdx.ToString()).Append(manageTaskIdx.ToString()).Append(") WHERE (F_DeviceIndex = ").Append(devinfoUse.DeviceIndex).Append(")");
|
|
dbo.ExceSQL(sql.ToString());
|
|
return false;
|
|
}
|
|
else //±ÜÈð²È«¾àÀëºó³¬³ö´©Ëó³µÐг̷¶Î§£¬ÕÒÒ»¸ö×î½üվ̨¡£
|
|
{
|
|
if (devinfoOther.DeviceIndex == 15302 || devinfoOther.DeviceIndex == 15303) // ´óÌõÂë·½Ïò
|
|
{
|
|
dvspavoid = dbo.ExceSQL(string.Format("select XCoor from T_Base_BarcodeCoor where VirtualStack = {0} order by BarcodeCoor DESC", devinfoUse.VirtualStack)).Tables[0].DefaultView;
|
|
}
|
|
else
|
|
{
|
|
dvspavoid = dbo.ExceSQL(string.Format("select XCoor from T_Base_BarcodeCoor where VirtualStack = {0} order by BarcodeCoor ASC ", devinfoUse.VirtualStack)).Tables[0].DefaultView;
|
|
}
|
|
if (dvspavoid.Count > 0)
|
|
{
|
|
int hidx = ccf.GetTempManageIdx();
|
|
int hmindx = ccf.GetMonitorIndex(hidx, 2);
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("insert into T_Monitor_Task(F_MonitorTaskLevel,F_RouteID,F_ManageTaskIndex,F_ManageTaskKindIndex,F_MonitorIndex,")
|
|
.Append("F_DeviceIndex,F_DeviceCommandIndex,F_UseAwayFork,F_NumParam1,F_TxtParam,F_AheadDetect) ")
|
|
.Append("values(2,").Append(ccf.GetRouteIDsub(devinfoOther.DeviceIndex)).Append(",").Append(hidx)
|
|
.Append(",4,").Append(hmindx).Append(",").Append(devinfoOther.DeviceIndex).Append(",").Append(7).Append(",")
|
|
.Append(1).Append(",").Append(dvspavoid[0]["XCoor"]).Append(", '").Append(temp_F_TxtParam).Append("','-')");
|
|
dbo.ExecuteSql(sql.ToString());
|
|
|
|
sql.Remove(0, sql.Length);//Ìí¼ÓÔ¤Ô¼
|
|
sql.Append("UPDATE T_Base_Device SET F_ManTaskReserve = (").Append(manageKindIdx.ToString())
|
|
.Append(manageTaskIdx.ToString()).Append(") WHERE (F_DeviceIndex = ").Append(devinfoUse.DeviceIndex).Append(")");
|
|
dbo.ExceSQL(sql.ToString());
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (otherXcoor > 0)//¿ÉÄܱÜÈóµÓÐ>=ÒÑ·¢ËͷDZÜÈÃÈÎÎñ
|
|
{
|
|
int End_Position = 0;
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("select * from T_Base_BarcodeCoor where XCoor = ").Append(otherXcoor).Append(" and VirtualStack = ").Append(devinfoUse.VirtualStack);//ORDER BY desc, asc.Append(" and LayerHigh = 1")
|
|
dvspavoid2 = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dvspavoid2.Count > 0)
|
|
{
|
|
End_Position = Convert.ToInt32(dvspavoid2[0]["BarcodeCoor"]);
|
|
}
|
|
|
|
// Ôݶ¨15301.xcoor<15302.xcoor£¬¼´·½°¸Í¼ÖÐÏÂÃæ×ø±ê´óÓÚÉÏÃæ×ø±ê¡£
|
|
//²¢ÇÒ³µÁ¾ÒѾÔËÐÐ
|
|
if ((((devinfoOther.DeviceIndex == 15302 || devinfoOther.DeviceIndex == 15303) && (End_Position > tempMax + Safe_distanceRGV)) || ((devinfoOther.DeviceIndex == 15301 || devinfoOther.DeviceIndex == 15304) && (End_Position < tempMin - Safe_distanceRGV))) && (devinfoOther.RunState == 1))
|
|
{
|
|
//Ö±½Ó·¢Ë͵±Ç°ÈÎÎñ
|
|
}
|
|
else
|
|
{
|
|
AheadDetectUnallow.Append(string.Format("µÈ´ý±ÜÈÃÉ豸{0}ÈÎÎñÖ´ÐÐÍêÈÎÎñ! ", devinfoOther.DeviceIndex));
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
}
|
|
else//¿ÉÄܱÜÈóµÃ»ÓÐ>=ÒÑ·¢Ë͵ÄÖ¸Áî
|
|
{
|
|
if ((devinfoOther.RunState > 0) || (OtherDeviceLockedState != 0))
|
|
{//±¨¾¯
|
|
AheadDetectUnallow.Append(string.Format("µÈ´ý±ÜÈÃÉ豸{0}״̬»Ö¸´! ", devinfoOther.DeviceIndex));
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
AheadDetectUnallow.Append(string.Format("²»Ã÷ÔÒò£¬Çë²é¿´³µÁ¾{0}״̬¼°ÈÎÎñ״̬! ", devinfoOther.DeviceIndex));
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else//µ±Ç°Î»Öò»ÐèÒª±ÜÈÃ
|
|
{
|
|
if (otherXcoor > 0)//¿ÉÄܱÜÈóµ,ÓÐÒÑ·¢ËÍÈÎÎñ
|
|
{
|
|
int otherbccoor = GetBarcodeCoor(otherXcoor, devinfoUse.VirtualStack);//»ñµÃ»¥³â¶Ñ¶â»úÕýÔÚÖ´ÐÐÈÎÎñµÄ×ø±êÁÐÌõÂëÖµ
|
|
//Èç¹ûµ±Ç°Î»ÖûòÕßÖÕµãλÖÃÔÚ±ÜÈÃÇø£¬µÈ´ýÖ´ÐÐÍêÈÎÎñÔÚÅжÏÊÇ·ñ×ãÒª±ÜÈÃ
|
|
if ((devinfoOther.XCoor > tempMin - Safe_distanceRGV) && (devinfoOther.XCoor < tempMax + Safe_distanceRGV) || (otherbccoor < tempMax + Safe_distanceRGV) && (otherbccoor > tempMin - Safe_distanceRGV))
|
|
{//Èç¹û±ÜÈóµÈÎÎñÖÕµãÔÚ°²È«¾àÀëÍâ
|
|
AheadDetectUnallow.Append(string.Format("µÈ´ýÉ豸{0}Ö´ÐÐÍêÈÎÎñ! ", devinfoOther.DeviceIndex));
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
|
|
#endregion
|
|
|
|
#region TJBS¶â»úÑ¡Ôñ
|
|
|
|
int manageSelect_Flag11222 = ccf.GetManageSelectFlagfromManage(manageTaskIdx);
|
|
if ((deviceIdx == 11222) && (manageSelect_Flag11222 == 0))//Ñ¡Ôñ³µ
|
|
{
|
|
//1²éѯȡËÍ»õվ̨ºÅ£¬ÅжÏվ̨ÓлõÇÒÉ豸²»Îª¿ÕÏУ¬±¨¾¯£»±¨Ä¿±êλÖÃÓÐÈÎÎñ±»Ô¤Ô¼
|
|
//²é¿´Ä¿±êÊäËÍÏßÊÇ·ñÓÐÁíÒ»¸ö״̬Ϊ´óÓÚ0µÄÈÎÎñ ÈçÓв»Ñ¡³µµÈ´ý·ÀÖ¹ºóÐø³µ±»Õ¼Óûõ²»ÄÜËÍÏÂÈ¥±¨¾¯
|
|
int sendzd = gc[5];//ÅÅÁвã
|
|
int sendxd = gc[3];
|
|
int sendyd = gc[4];
|
|
string sendcell = string.Format("{0:D3}-{1:D3}-{2:D3}", gc[5], gc[3], gc[4]);//Òª²éÕÒµ½¸ÃËÍ»õλÖÃ
|
|
int getgate = ccf.GetLaneGateDeviceIndexFromLaneGate(sendcell);//ËÍ»õλÖõÄÉ豸±àºÅ
|
|
if (getgate != 0 && !"22001,22004,22005,22017,22029,22041".Contains(getgate.ToString()))
|
|
{
|
|
DataView dvCountd = new DataView();
|
|
sql.Remove(0, sql.Length);
|
|
|
|
Model.MDevice devinfoS = Model.CGetInfo.GetDeviceInfo(getgate);
|
|
if ((devinfoS.SplitByte_0 == 1) || (devinfoS.RunState != 0))
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append("Ä¿±êλÖò»¿ÉÓã¬Ôݲ»Ñ¡Ôñ¶â»ú");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
//°üÀ¨È¡ËÍ»õ
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("select * from T_Monitor_Task where (F_DeviceIndex = 11001 or F_DeviceIndex = 11002 ) and F_Status >= 0 and F_NumParam4 = ").Append(sendzd).Append("and F_NumParam5 =").Append(sendxd).Append(" and F_NumParam6 = ").Append(sendyd);
|
|
}
|
|
dvCountd = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dvCountd.Count > 0)
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append("Ä¿±êλÖñ»ÈÎÎñÔ¤Ô¼£¬Ôݲ»Ñ¡Ôñ¶â»ú");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
DataView dvCount = new DataView();
|
|
//2²éѯ11001.11002É豸ÐÅÏ¢
|
|
//3²éѯÉ豸ÊÇ·ñÍ£Óã¬Í£ÓÃÉèÖÃÔËÐÐ״̬Ϊ4£¬·ñÔò²»±ä;Åж϶Ѷâ»ú״̬ 1-5±¨¾¯
|
|
Model.MDevice devinfo11001 = Model.CGetInfo.GetDeviceInfo(11001);
|
|
Model.MDevice devinfo11002 = Model.CGetInfo.GetDeviceInfo(11002);
|
|
//20240424 tjbs azq ÐÞ¸Ä
|
|
DataView dv998d = new DataView();
|
|
string sql998d = string.Empty;
|
|
sql998d = string.Format("SELECT f_errorcode FROM T_BASE_DEVICE WHERE f_errorcode='998' and f_deviceindex= '{0}' ", devinfo11001.DeviceIndex);
|
|
dv998d = dbo.ExceSQL(sql998d).Tables[0].DefaultView;
|
|
if (dv998d.Count > 0)
|
|
{
|
|
|
|
devinfo11001.RunState = 4;
|
|
|
|
}
|
|
else
|
|
{
|
|
devinfo11001.RunState = devinfo11001.RunState;
|
|
}
|
|
DataView dv998dd = new DataView();
|
|
|
|
string sql998dd = string.Empty;
|
|
sql998dd = string.Format("SELECT f_errorcode FROM T_BASE_DEVICE WHERE f_errorcode='998' and f_deviceindex= '{0}' ", devinfo11002.DeviceIndex);
|
|
dv998dd = dbo.ExceSQL(sql998dd).Tables[0].DefaultView;
|
|
if (dv998dd.Count > 0)
|
|
{
|
|
|
|
devinfo11002.RunState = 4;
|
|
|
|
}
|
|
else
|
|
{
|
|
devinfo11002.RunState = devinfo11002.RunState;
|
|
}
|
|
if ((devinfo11001.RunState > 1) && (devinfo11001.RunState < 5) && (devinfo11002.RunState > 1) && (devinfo11002.RunState < 5))
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append("11001Óë11002Ë«»ú״̬²»¿ÉÓã¬ÎÞ·¨Ñ¡Ôñ¶â»ú");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
int tempStack = 11001; int Aviod11001 = -1; int Aviod11002 = -1;
|
|
|
|
//1-99 2- 9-112 add for TJBS 1ºÅ¶Ñ¶â»úÕý³£ÊÇ 1- 99 2ºÅ¶Ñ¶â»ú ÊÇ9-112
|
|
// Òì³£1-103 8-112
|
|
//Á½³µ¶¼²»ÄÜÓÃʱÔÚÉÏÃæÒѾreturn
|
|
if ((_NumParam2 < 9 || _NumParam5 < 9) )//TJBSÐèÒªÏÖ³¡Êµ²âÖ»ÄÜÓÃ11001µÄÁÐÖµ 1-99
|
|
{ //´ËʱֻÄÜÓÃ11001¶â»ú
|
|
if ((devinfo11001.RunState > 1) && (devinfo11001.RunState < 5))
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append("11001״̬²»¿ÉÓã¬ÎÞ·¨Ñ¡Ôñ¶â»ú");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
tempStack = 11001;
|
|
}
|
|
}
|
|
else if (_NumParam2 > 102 || _NumParam5 > 102)//TJBSÐèÒªÏÖ³¡Êµ²âÖ»ÄÜÓÃ11002µÄÁÐÖµ ¶þºÅ¶Ñ¶â»úÕý³£ÔËÐеÄÖµÊÇ9¡ª112
|
|
{//´ËʱֻÄÜÓÃ11002¶â»ú
|
|
if ((devinfo11002.RunState > 1) && (devinfo11002.RunState < 5))
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append("11002״̬²»¿ÉÓã¬ÎÞ·¨Ñ¡Ôñ¶â»ú");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
tempStack = 11002;
|
|
}
|
|
}
|
|
else//Èç¹ûÁ½³µ¶¼ÄÜÓà ²¢ÇÒÈ¡ËÍ»õÇøÓò½»²æ²é¿´³µµÄÐгÌÔ¶½üºÍ״̬£¬ÈçÓиϳµÏÖÏó ÐгÌÒ²ËãÉÏ
|
|
{
|
|
if ((devinfo11002.RunState != 4) && (devinfo11001.RunState == 4))//Èç¹ûÖ»ÓÐÒ»¸ö³µÄÜÓà ֻÄÜÑ¡´Ë³µ
|
|
{
|
|
//add for TJBS Åжϵ±Ç°ÁÐ2ºÅÄÜÈ¡²»£¬²»ÄÜȡֱ½Ó·µ»Ø 8-112
|
|
if ((_NumParam2 < 8 || _NumParam5 < 8) && (_NumParam2 > 112|| _NumParam5 > 112))
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append("11001½ûÓã¬11002µ±Ç°ÁÐÎÞ·¨È¡»õ£¬Ñ¡³µÊ§°Ü£¡");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
tempStack = 11002;
|
|
}
|
|
else if ((devinfo11002.RunState == 4) && (devinfo11001.RunState != 4))
|
|
{
|
|
//add for TJBS Åжϵ±Ç°ÁÐ1ºÅÄÜÈ¡²»£¬²»ÄÜȡֱ½Ó·µ»Ø 1-103
|
|
if ((_NumParam2 > 102 || _NumParam5 > 102) )
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append("11002½ûÓã¬11001µ±Ç°ÁÐÎÞ·¨È¡»õ£¬Ñ¡³µÊ§°Ü£¡");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
tempStack = 11001;
|
|
}
|
|
else //Èç¹ûÁ½³µ¶¼ÄÜÓà ²é¿´³µµÄÐгÌÔ¶½üºÍ״̬£¬ÈçÓиϳµÏÖÏó ÐгÌÒ²ËãÉÏ
|
|
{
|
|
int[,] temp = Calulate_Distance(devinfo11001, devinfo11002, MonitorIndex);//·µ»Østack1 distance1 avoid2 stack2 distance2 avoid1
|
|
if ((temp[0, 1] != -1) && (temp[1, 1] != -1))
|
|
{
|
|
if (temp[0, 1] < temp[1, 1])
|
|
{
|
|
tempStack = temp[0, 0];
|
|
}
|
|
else
|
|
{
|
|
tempStack = temp[1, 0];
|
|
}
|
|
Aviod11002 = temp[0, 2];//¼Ç¼Èç¹ûÑ¡11001,11002ÊÇ·ñÐèÒª±ÜÈÃ
|
|
Aviod11001 = temp[1, 2];//¼Ç¼Èç¹ûÑ¡11002,11001ÊÇ·ñÐèÒª±ÜÈÃ
|
|
}
|
|
else
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append("Ñ¡³µÊ±È¡»õ»òËÍ»õ×ø±ê´íÎó,¼ì²é²¢Î¬»¤");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
#region
|
|
if ((devinfo11002.RunState != 4) && (devinfo11001.RunState == 4))//Èç¹ûÖ»ÓÐÒ»¸ö³µÄÜÓà ֻÄÜÑ¡´Ë³µ
|
|
{
|
|
//add for TJBS Åжϵ±Ç°ÁÐ2ºÅÄÜÈ¡²»£¬²»ÄÜȡֱ½Ó·µ»Ø 8-112
|
|
if ((_NumParam2 < 8 || _NumParam5 < 8) && (_NumParam2 > 112 || _NumParam5 > 112))
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append("11001½ûÓã¬11002µ±Ç°ÁÐÎÞ·¨È¡»õ£¬Ñ¡³µÊ§°Ü£¡");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
tempStack = 11002;
|
|
}
|
|
else if ((devinfo11002.RunState == 4) && (devinfo11001.RunState != 4))
|
|
{
|
|
//add for TJBS Åжϵ±Ç°ÁÐ2ºÅÄÜÈ¡²»£¬²»ÄÜȡֱ½Ó·µ»Ø 1-103
|
|
if ((_NumParam2 > 102 || _NumParam5 > 102))
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append("11002½ûÓã¬11001µ±Ç°ÁÐÎÞ·¨È¡»õ£¬Ñ¡³µÊ§°Ü£¡");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
tempStack = 11001;
|
|
}
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int Reserve_11001 = Get_F_ManTaskReserve(11001); int Reserve_11002 = Get_F_ManTaskReserve(11002);//°´Êµ¼ÊÇé¿ö¸ü¸ÄÅжÏÊÇ´óÈÎÎñÔ¤Ô¼Ëø»¹ÊÇÔËÐÐËø,ÔÝʱ°´Ô¤Ô¼ËøÖ´ÐÐ
|
|
if (((tempStack == 11001) && ((devinfo11001.RunState != 0) || (Reserve_11001 > 0))) || ((tempStack == 11002) && ((devinfo11002.RunState != 0) || (Reserve_11002 > 0))))
|
|
{
|
|
//int sentcountmax = CStaticClass.Wait_maxCount;//10*0.5 = 5S
|
|
if ((devinfo11001.RunState == 2) && (tempStack == 11001) && (Aviod11001 == 0) && (devinfo11002.RunState == 0) && (Reserve_11002 == 0))// && (CStaticClass.SendedCount >= sentcountmax)Èç¹ûÑ¡¶¨µÄ³µ±¨¾¯£¬µÈ´ýʱ¼äµ½£¬²¢ÇÒÈçÓÃÁíһ̨²»ÐèÒª´Ë³µ±ÜÈòŻ»³µ,²¢ÇÒÁíһ̨³µ¿ÕÏУ¬ÎÞÔ¤Ô¼
|
|
{
|
|
if (_NumParam2 >= 13 && _NumParam5 >= 13)
|
|
{
|
|
tempStack = 11002;
|
|
}
|
|
|
|
//CStaticClass.SendedCount = 0;
|
|
}
|
|
else if ((devinfo11002.RunState == 2) && (tempStack == 11002) && (Aviod11002 == 0) && (devinfo11001.RunState == 0) && (Reserve_11001 == 0))// && (CStaticClass.SendedCount >= sentcountmax)
|
|
{
|
|
if (_NumParam2 <= 100 || _NumParam5 <= 100)
|
|
{
|
|
tempStack = 11001;
|
|
}
|
|
|
|
|
|
//CStaticClass.SendedCount = 0;
|
|
}
|
|
else
|
|
{
|
|
//CStaticClass.SendedCount++;
|
|
//if (CStaticClass.SendedCount > sentcountmax)
|
|
//{
|
|
// CStaticClass.SendedCount = 0;
|
|
//}
|
|
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append("µÈ´ýÔÝÑ¡³µÁ¾" + tempStack.ToString() + "״̬¿ÕÏлòÔ¤Ô¼Çå³ý");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;//Ñ¡¶¨µÄ³µ²»·ûºÏÌõ¼þʱ£¬²»¸ü»»³µ£¬ÏÂÂÖÖØÐÂÑ¡Ôñ
|
|
}
|
|
}
|
|
#region add for TJBS û×Ðϸ¿´ÉÏÒ»ÖÖÑ¡³µÂß¼ ĬÈϼ«ÏÞÁж¼ÊÇ¿¿½ü¶ÔÓ¦·½ÏòµÄ¶Ñ¶â»ú
|
|
//add for TJBS û×Ðϸ¿´ÉÏÒ»ÖÖÑ¡³µÂß¼ ĬÈϼ«ÏÞÁж¼ÊÇ¿¿½ü¶ÔÓ¦·½ÏòµÄ¶Ñ¶â»ú
|
|
if (tempStack == 11001)
|
|
{
|
|
if (devinfo11002.RunState == 4)
|
|
{
|
|
// 1-103
|
|
if (_NumParam2 >102 || _NumParam5 >102)
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append("11001:³¬³öµ±Ç°³µÁÐÖµ");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//1-102
|
|
if (_NumParam2 > 102 || _NumParam5 > 102)
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append("11001:³¬³öµ±Ç°³µÁÐÖµ");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
else if (tempStack == 11002)
|
|
{
|
|
if (devinfo11001.RunState == 4)
|
|
{
|
|
// 8-112
|
|
if ((_NumParam2 <8 || _NumParam5 < 8)&&(_NumParam2 > 112 || _NumParam5 > 112))
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append("11002:³¬³öµ±Ç°³µÁÐÖµ");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//9-112
|
|
if ((_NumParam2 < 9 || _NumParam5 < 9) && (_NumParam2 > 112 || _NumParam5 > 112))
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append("11002:³¬³öµ±Ç°³µÁÐÖµ");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
sql.Clear();
|
|
sql.Append("UPDATE T_Monitor_Task SET ").Append(" F_AheadDetect=Replace(F_AheadDetect,'")
|
|
.Append(11222).Append("','").Append(tempStack).Append("')").Append(" ,F_DeviceIndex=Replace(F_DeviceIndex,'")
|
|
.Append(11222).Append("','").Append(tempStack).Append("')").Append(" WHERE (F_ManageTaskIndex = ")
|
|
.Append(manageTaskIdx).Append(") AND (F_ManageTASKKINDINDEX = ")
|
|
.Append(manageKindIdx).Append(")");
|
|
dbo.ExecuteSql(sql.ToString());
|
|
|
|
//¸üÐÂmanage±íSelect_Flag = 1 ±ÜÃâ¸ü¸Ä³É¹¦ºóÔÙ´ÎÑ¡³µ
|
|
sql.Clear();
|
|
sql.Append("UPDATE T_Manage_Task SET ").Append("manageSelect_Flag = 1 where FID = ").Append(manageTaskIdx);
|
|
dbo.ExecuteSql(sql.ToString());
|
|
return false;
|
|
}
|
|
#endregion
|
|
|
|
#region TJBS¶â»úÈÎÎñ·¢ËÍ
|
|
if ((deviceIdx == 11001) || (deviceIdx == 11002))
|
|
{
|
|
DataView dvspS = new DataView(); DataView dvspE = new DataView(); DataView dvspifcreat = new DataView();
|
|
DataView dvspavoid = new DataView(); DataView dvspavoid2 = new DataView();
|
|
int locationTask = 0;
|
|
Model.MDevice devinfoUse = Model.CGetInfo.GetDeviceInfo(deviceIdx);
|
|
Model.MDevice devinfoOther = Model.CGetInfo.GetDeviceInfo(deviceIdx);
|
|
if (deviceIdx == 11001)
|
|
{
|
|
devinfoOther = Model.CGetInfo.GetDeviceInfo(11002);
|
|
}
|
|
else
|
|
{
|
|
devinfoOther = Model.CGetInfo.GetDeviceInfo(11001);
|
|
}
|
|
if ((deviceOrder == 4) || (deviceOrder == 7) || (deviceOrder == 2))
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
int tempz = 1;
|
|
//if (gc[2] == 1 || gc[2] == 2)
|
|
//{
|
|
// tempz = 1;
|
|
//}
|
|
//else
|
|
//{
|
|
// tempz = 2;
|
|
//}
|
|
sql.Append("select * from T_Base_BarcodeCoor where XCoor = ").Append(gc[0]).Append(" and ZCoor = ").Append(tempz).Append(" and VirtualStack = 11222");//ORDER BY desc, asc.Append(" and LayerHigh = ").Append(Ycoor)
|
|
dvspS = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dvspS.Count > 0)
|
|
{
|
|
locationTask = Convert.ToInt32(dvspS[0]["BarcodeCoor"]);
|
|
}
|
|
else
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append("·¢ËÍÃüÁîʱȡ»õ×ø±êÓÐÎó");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
}
|
|
else if ((deviceOrder == 5) || (deviceOrder == 3))
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
int tempz = 1;
|
|
//if (gc[5] == 1 || gc[5] == 2)
|
|
//{
|
|
// tempz = 1;
|
|
//}
|
|
//else
|
|
//{
|
|
// tempz = 2;
|
|
//}
|
|
sql.Append("select * from T_Base_BarcodeCoor where XCoor = ").Append(gc[3]).Append(" and ZCoor = ").Append(tempz).Append(" and VirtualStack = 11222");//ORDER BY desc, asc.Append(" and LayerHigh = ").Append(YcoorS)
|
|
dvspE = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dvspE.Count > 0)
|
|
{
|
|
locationTask = Convert.ToInt32(dvspE[0]["BarcodeCoor"]);
|
|
}
|
|
else
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append("·¢ËÍÃüÁîʱËÍ»õ×ø±êÓÐÎó");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
int tempMin = devinfoUse.XCoor < locationTask ? devinfoUse.XCoor : locationTask;
|
|
int tempMax = devinfoUse.XCoor > locationTask ? devinfoUse.XCoor : locationTask;
|
|
string temp_F_TxtParam = ccf.GetF_TxtParamfromMonitor(MonitorIndex);
|
|
|
|
bool ifcreat = false;
|
|
dvspifcreat = dbo.ExceSQL(string.Format("select F_MonitorIndex,F_NumParam2, F_Status from T_Monitor_Task where F_DeviceIndex={0} and F_TxtParam='{1}' and F_ManageTASKKINDINDEX = 4", devinfoOther.DeviceIndex, temp_F_TxtParam)).Tables[0].DefaultView;
|
|
if (dvspifcreat.Count <= 0)
|
|
{
|
|
ifcreat = true;
|
|
}
|
|
else
|
|
{
|
|
if (Convert.ToInt32(dvspifcreat[0]["F_Status"]) > 0)//Ìí¼Ó±ÜÈÃÈÎÎñÒѾִÐкó¿ÉÒÔ·¢Ë͵±Ç°ÒªÖ´ÐÐÈÎÎñ
|
|
{
|
|
//do nothing ·¢Ë͵±Ç°ÈÎÎñ
|
|
}
|
|
else
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append("µÈ´ý±ÜÈÃÈÎÎñÖ´ÐнáÊø");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
}
|
|
int OtherDeviceLockedState = Get_F_LockedState(devinfoOther.DeviceIndex);
|
|
int otherXcoor; int otherZcoor;
|
|
GetStackRunX_Zcoor(devinfoOther.DeviceIndex, out otherXcoor, out otherZcoor);
|
|
bool boolAllow = true;
|
|
// locationTask µ±Ç°ÈÎÎñÁÐÖµ
|
|
if (deviceIdx == 11002)
|
|
{
|
|
if (devinfoUse.XCoor <= locationTask || (tempMin< 13 && devinfoOther.XCoor ==1))
|
|
{
|
|
boolAllow = false;
|
|
}
|
|
}
|
|
else if (deviceIdx == 11001)
|
|
{
|
|
if (devinfoUse.XCoor >= locationTask)
|
|
{
|
|
boolAllow = false;
|
|
}
|
|
}
|
|
//20240424 tjbs azq ÐÞ¸Ä
|
|
DataView dv998d = new DataView();
|
|
string sql998d = string.Empty;
|
|
sql998d = string.Format("SELECT f_errorcode FROM T_BASE_DEVICE WHERE f_errorcode='998' and f_deviceindex= '{0}' ", devinfoOther.DeviceIndex);
|
|
dv998d = dbo.ExceSQL(sql998d).Tables[0].DefaultView;
|
|
if (dv998d.Count > 0)
|
|
{
|
|
|
|
devinfoOther.RunState = 4;
|
|
|
|
}
|
|
else
|
|
{
|
|
devinfoOther.RunState = devinfoOther.RunState;
|
|
}
|
|
|
|
if ((devinfoOther.XCoor > tempMin - safe_distance) && (devinfoOther.XCoor < tempMax + safe_distance)&& boolAllow && devinfoOther.RunState!=4)//¿ÉÄܱÜÈóµÁ¾µ±Ç°Î»ÖÃÐèÒª±ÜÈÃ
|
|
{
|
|
if ((devinfoOther.RunState == 0) && (ifcreat == true) && (otherXcoor <= 0))//¿ÕÏУ¬ÎÞ±ÜÈÃÈÎÎñ£¬ÎÞ>=ÒÑ·¢ËÍ״̬µÄÈÎÎñ
|
|
{
|
|
if (devinfoOther.DeviceIndex == 11002)
|
|
{
|
|
dvspavoid = dbo.ExceSQL(string.Format("select ZCoor,XCoor,LayerHigh from T_Base_BarcodeCoor where BarcodeCoor >={0} and VirtualStack = 11222 order by BarcodeCoor ", tempMax + safe_distance)).Tables[0].DefaultView;// and ((ZCoor =1 and XCoor%2=0) or (ZCoor =2))
|
|
}
|
|
else
|
|
{
|
|
dvspavoid = dbo.ExceSQL(string.Format("select ZCoor,XCoor,LayerHigh from T_Base_BarcodeCoor where BarcodeCoor <= {0} and VirtualStack = 11222 order by BarcodeCoor DESC ", tempMin - safe_distance)).Tables[0].DefaultView;//and ((ZCoor =1 and XCoor%2=0) or (ZCoor =2))
|
|
}
|
|
if (dvspavoid.Count > 0)
|
|
{
|
|
int hidx = ccf.GetTempManageIdx();
|
|
int hmindx = ccf.GetMonitorIndex(hidx, 2);
|
|
sql.Remove(0, sql.Length);
|
|
int tempZ = 1;
|
|
//if (Convert.ToInt32(dvspavoid[0]["ZCoor"]) == 1)
|
|
// tempZ = 1;
|
|
//else
|
|
// tempZ = 4;
|
|
sql.Append("insert into T_Monitor_Task(F_MonitorTaskLevel,F_RouteID,F_ManageTaskIndex,F_ManageTaskKindIndex,F_MonitorIndex,").
|
|
Append("F_DeviceIndex,F_DeviceCommandIndex,F_UseAwayFork,F_NumParam1,F_NumParam2,F_NumParam3,F_NumParam4,F_NumParam5,F_NumParam6,F_TxtParam,F_AheadDetect) ").
|
|
Append("values(2,").Append(ccf.GetRouteIDsub(devinfoOther.DeviceIndex)).Append(",").
|
|
Append(hidx).Append(",4,").Append(hmindx).Append(",").Append(devinfoOther.DeviceIndex).
|
|
Append(",").Append(2).Append(",").Append(1).Append(",").Append(tempZ).Append(",").Append(dvspavoid[0]["XCoor"]).Append(",").Append(2).Append(",").Append(0).Append(",").Append(0).Append(",").Append(1).Append(",'").Append(temp_F_TxtParam).Append("','-')");
|
|
dbo.ExecuteSql(sql.ToString());
|
|
|
|
sql.Remove(0, sql.Length);//Ìí¼ÓÔ¤Ô¼
|
|
sql.Append("UPDATE T_Base_Device SET F_ManTaskReserve = (").Append(manageKindIdx.ToString()).Append(manageTaskIdx.ToString()).Append(") WHERE (F_DeviceIndex = ").Append(devinfoUse.DeviceIndex).Append(")");
|
|
dbo.ExceSQL(sql.ToString());
|
|
return false;
|
|
}
|
|
else//±ÜÈð²È«¾àÀëºó³¬³öË«²æ´©Ëó³µÐг̷¶Î§
|
|
{
|
|
if (devinfoOther.DeviceIndex == 11002)
|
|
{
|
|
dvspavoid = dbo.ExceSQL(string.Format("select ZCoor,XCoor,LayerHigh from T_Base_BarcodeCoor order by BarcodeCoor DESC")).Tables[0].DefaultView;
|
|
}
|
|
else
|
|
{
|
|
dvspavoid = dbo.ExceSQL(string.Format("select ZCoor,XCoor,LayerHigh from T_Base_BarcodeCoor order by BarcodeCoor ASC ")).Tables[0].DefaultView;
|
|
}
|
|
if (dvspavoid.Count > 0)
|
|
{
|
|
int hidx = ccf.GetTempManageIdx();
|
|
int hmindx = ccf.GetMonitorIndex(hidx, 2);
|
|
int tempZ = 1;
|
|
//if (Convert.ToInt32(dvspavoid[0]["ZCoor"]) == 1)
|
|
// tempZ = 1;
|
|
//else
|
|
// tempZ = 4;
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("insert into T_Monitor_Task(F_MonitorTaskLevel,F_RouteID,F_ManageTaskIndex,F_ManageTaskKindIndex,F_MonitorIndex,").
|
|
Append("F_DeviceIndex,F_DeviceCommandIndex,F_UseAwayFork,F_NumParam1,F_NumParam2,F_NumParam3,F_NumParam4,F_NumParam5,F_NumParam6,F_TxtParam,F_AheadDetect) ").
|
|
Append("values(2,").Append(ccf.GetRouteIDsub(devinfoOther.DeviceIndex)).Append(",").
|
|
Append(hidx).Append(",4,").Append(hmindx).Append(",").Append(devinfoOther.DeviceIndex).
|
|
Append(",").Append(2).Append(",").Append(1).Append(",").Append(tempZ).Append(",").Append(dvspavoid[0]["XCoor"]).Append(",").Append(2).Append(",").Append(0).Append(",").Append(0).Append(",").Append(1).Append(",'").Append(temp_F_TxtParam).Append("','-')");
|
|
dbo.ExecuteSql(sql.ToString());
|
|
|
|
sql.Remove(0, sql.Length);//Ìí¼ÓÔ¤Ô¼
|
|
sql.Append("UPDATE T_Base_Device SET F_ManTaskReserve = (").Append(manageKindIdx.ToString()).Append(manageTaskIdx.ToString()).Append(") WHERE (F_DeviceIndex = ").Append(devinfoUse.DeviceIndex).Append(")");
|
|
dbo.ExceSQL(sql.ToString());
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (otherXcoor > 0)//¿ÉÄܱÜÈóµÓÐ>=ÒÑ·¢ËͷDZÜÈÃÈÎÎñ
|
|
{
|
|
int Eed_Position = 0;
|
|
sql.Remove(0, sql.Length);
|
|
int tempz = 1;
|
|
//if (otherZcoor == 1 || otherZcoor == 2)
|
|
//{
|
|
// tempz = 1;
|
|
//}
|
|
//else
|
|
//{
|
|
// tempz = 2;
|
|
//}
|
|
//add for TJBS
|
|
sql.Append("select * from T_Base_BarcodeCoor where XCoor = ").Append(otherXcoor).Append(" and ZCoor = ").Append(tempz).Append(" and VirtualStack = 11222");//ORDER BY desc, asc.Append(" and LayerHigh = 1")
|
|
dvspavoid2 = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dvspavoid2.Count > 0)
|
|
{
|
|
Eed_Position = Convert.ToInt32(dvspavoid2[0]["BarcodeCoor"]);
|
|
}
|
|
//²¢ÇÒ³µÁ¾ÒѾÔËÐÐ
|
|
if ((((devinfoOther.DeviceIndex == 11002) && (Eed_Position > tempMax + safe_distance)) || ((devinfoOther.DeviceIndex == 11001) && (Eed_Position < tempMin - safe_distance))) && (devinfoOther.RunState == 1))
|
|
{
|
|
//Ö±½Ó·¢Ë͵±Ç°ÈÎÎñ
|
|
}
|
|
else
|
|
{
|
|
AheadDetectUnallow.Append(string.Format("µÈ´ý±ÜÈÃÉ豸{0}ÈÎÎñÖ´ÐÐÍêÈÎÎñ! ", devinfoOther.DeviceIndex));
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
}
|
|
else//¿ÉÄܱÜÈóµÃ»ÓÐ>=ÒÑ·¢Ë͵ÄÖ¸Áî
|
|
{
|
|
if ((devinfoOther.RunState > 0) || (OtherDeviceLockedState != 0))
|
|
{// ±¨¾¯»òÕß
|
|
AheadDetectUnallow.Append(string.Format("µÈ´ý±ÜÈÃÉ豸{0}״̬»Ö¸´! ", devinfoOther.DeviceIndex));
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
AheadDetectUnallow.Append(string.Format("²»Ã÷ÔÒò£¬Çë²é¿´³µÁ¾{0}״̬¼°ÈÎÎñ״̬! ", devinfoOther.DeviceIndex));
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else//µ±Ç°Î»Öò»ÐèÒª±ÜÈÃ
|
|
{
|
|
if (otherXcoor > 0)//¿ÉÄܱÜÈóµ,ÓÐÒÑ·¢ËÍÈÎÎñ
|
|
{
|
|
int otherbccoor = GetBarcodeCoor(otherXcoor, otherZcoor, 11222);//»ñµÃ»¥³â¶Ñ¶â»úÕýÔÚÖ´ÐÐÈÎÎñµÄ×ø±êÁÐÌõÂëÖµ
|
|
//Èç¹ûµ±Ç°Î»ÖûòÕßÖÕµãλÖÃÔÚ±ÜÈÃÇø£¬µÈ´ýÖ´ÐÐÍêÈÎÎñÔÚÅжÏÊÇ·ñ×ãÒª±ÜÈÃ
|
|
if ((devinfoOther.XCoor > tempMin - safe_distance) && (devinfoOther.XCoor < tempMax + safe_distance) || (otherbccoor < tempMax + safe_distance) && (otherbccoor > tempMin - safe_distance))
|
|
{//Èç¹û±ÜÈóµÈÎÎñÖÕµãÔÚ°²È«¾àÀëÍâ
|
|
AheadDetectUnallow.Append(string.Format("µÈ´ýÉ豸{0}Ö´ÐÐÍêÈÎÎñ! ", devinfoOther.DeviceIndex));
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region ͬÆðµã´æÔÚ¶àÌõµÈ´ýÏ·¢ÈÎÎñ£¬Òì³£¿ØÖÆ
|
|
if (deviceKind == 13)
|
|
{//ÊäËÍÏß,Ö±´©,»·´©
|
|
int StartStation = GetMonitorStartStationfromMonitor(MonitorIndex);//Æðµãվ̨
|
|
DataView taskMsgs = new DataView();
|
|
//»ñȡͬÆðµãµÄµÈ´ýÏ·¢µÄ×ÓÈÎÎñÐÅÏ¢
|
|
taskMsgs = dbo.ExceSQL(string.Format("select F_ManageTaskIndex,F_MonitorIndex" +
|
|
" from T_Monitor_Task where F_NumParam1={0} and F_Status=0 ",
|
|
StartStation)).Tables[0].DefaultView;
|
|
//ɸѡÆäÖÐÕýҪ׼±¸Ï·¢µÄÈÎÎñ
|
|
int count = 0;
|
|
foreach (DataRowView taskMsg in taskMsgs)
|
|
{
|
|
var taskNumMin = dbo.ExceSQL(string.Format("select top 1 F_MonitorIndex" +
|
|
" from T_Monitor_Task where F_ManageTaskIndex={0} order by F_MonitorIndex",
|
|
taskMsg["F_ManageTaskIndex"])).Tables[0].DefaultView;
|
|
var MinTaskNum = taskNumMin[0]["F_MonitorIndex"].ToString();
|
|
var NowTaskNum = taskMsg["F_MonitorIndex"].ToString();
|
|
if (MinTaskNum == NowTaskNum)
|
|
{//×îСÈÎÎñ==µ±Ç°ÈÎÎñ£¬¼ÆÊý¼Ó1
|
|
count++;
|
|
}
|
|
}
|
|
if (count > 1)
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append(string.Format("µ±Ç°ÈÎÎñÆðµã´æÔÚ¶àÌõµÈ´ýÏ·¢µÄÈÎÎñ£¬Çë´¦ÀíÒì³£ÈÎÎñ", deviceIdx));
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
}
|
|
#endregion
|
|
if ((deviceKind == 1) || (deviceKind == 6))
|
|
{
|
|
if ((deviceIdx == 11001) || (deviceIdx == 11002) || (deviceIdx == 11003))
|
|
{
|
|
DataView dv = new DataView();
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT FCONTROLTASKTYPE,FENDDEVICE FROM T_Manage_Task WHERE (FID = ").Append(manageTaskIdx).Append(") AND (F_ManageTaskKindIndex = ").Append(manageKindIdx).Append(")");
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
if (Convert.ToInt32(dv[0]["FCONTROLTASKTYPE"]) == 2)
|
|
{
|
|
int End_Device = Convert.ToInt32(dv[0]["FENDDEVICE"]);
|
|
switch (End_Device)
|
|
{
|
|
case 12059:
|
|
Model.MDevice devinfo12059; Model.MDevice devinfo12060;
|
|
devinfo12059 = Model.CGetInfo.GetDeviceInfo(12059);
|
|
devinfo12060 = Model.CGetInfo.GetDeviceInfo(12060);
|
|
if (devinfo12059.SplitByte_0 + devinfo12060.SplitByte_0 >= 1)
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append(_DeviceIdx.ToString() + "12059»ò12060Óлõ");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
break;
|
|
case 12063:
|
|
Model.MDevice devinfo12063; Model.MDevice devinfo12064;
|
|
devinfo12063 = Model.CGetInfo.GetDeviceInfo(12063);
|
|
devinfo12064 = Model.CGetInfo.GetDeviceInfo(12064);
|
|
if (devinfo12063.SplitByte_0 + devinfo12064.SplitByte_0 >= 1)
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append(_DeviceIdx.ToString() + "12063»ò12064Óлõ");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
break;
|
|
case 12065:
|
|
Model.MDevice devinfo12065; Model.MDevice devinfo12066;
|
|
devinfo12065 = Model.CGetInfo.GetDeviceInfo(12065);
|
|
devinfo12066 = Model.CGetInfo.GetDeviceInfo(12066);
|
|
if (devinfo12065.SplitByte_0 + devinfo12066.SplitByte_0 >= 1)
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append(_DeviceIdx.ToString() + "12065»ò12066Óлõ");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
break;
|
|
case 12069:
|
|
Model.MDevice devinfo12069; Model.MDevice devinfo12070;
|
|
devinfo12069 = Model.CGetInfo.GetDeviceInfo(12069);
|
|
devinfo12070 = Model.CGetInfo.GetDeviceInfo(12070);
|
|
if (devinfo12069.SplitByte_0 + devinfo12070.SplitByte_0 >= 1)
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append(_DeviceIdx.ToString() + "12069»ò12070Óлõ");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
break;
|
|
case 12073:
|
|
Model.MDevice devinfo12073; Model.MDevice devinfo12074;
|
|
devinfo12073 = Model.CGetInfo.GetDeviceInfo(12073);
|
|
devinfo12074 = Model.CGetInfo.GetDeviceInfo(12074);
|
|
if (devinfo12073.SplitByte_0 + devinfo12074.SplitByte_0 >= 1)
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append(_DeviceIdx.ToString() + "12073»ò12074Óлõ");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
break;
|
|
case 12077:
|
|
Model.MDevice devinfo12077; Model.MDevice devinfo12078;
|
|
devinfo12077 = Model.CGetInfo.GetDeviceInfo(12077);
|
|
devinfo12078 = Model.CGetInfo.GetDeviceInfo(12078);
|
|
if (devinfo12077.SplitByte_0 + devinfo12078.SplitByte_0 >= 1)
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append(_DeviceIdx.ToString() + "12077»ò12078Óлõ");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
break;
|
|
case 12079:
|
|
Model.MDevice devinfo12079; Model.MDevice devinfo12080;
|
|
devinfo12079 = Model.CGetInfo.GetDeviceInfo(12079);
|
|
devinfo12080 = Model.CGetInfo.GetDeviceInfo(12080);
|
|
if (devinfo12079.SplitByte_0 + devinfo12080.SplitByte_0 >= 1)
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append(_DeviceIdx.ToString() + "12079»ò12080Óлõ");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
break;
|
|
case 12108:
|
|
Model.MDevice devinfo12109; Model.MDevice devinfo12108;
|
|
devinfo12108 = Model.CGetInfo.GetDeviceInfo(12108);
|
|
devinfo12109 = Model.CGetInfo.GetDeviceInfo(12109);
|
|
if (devinfo12108.SplitByte_0 + devinfo12109.SplitByte_0 >= 1)
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append(_DeviceIdx.ToString() + "12108»ò12109Óлõ");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
break;
|
|
case 12113:
|
|
Model.MDevice devinfo12113; Model.MDevice devinfo12112;
|
|
devinfo12113 = Model.CGetInfo.GetDeviceInfo(12113);
|
|
devinfo12112 = Model.CGetInfo.GetDeviceInfo(12112);
|
|
if (devinfo12113.SplitByte_0 + devinfo12112.SplitByte_0 >= 1)
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append(_DeviceIdx.ToString() + "12113»ò12112Óлõ");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
break;
|
|
case 12114:
|
|
Model.MDevice devinfo12114; Model.MDevice devinfo12115;
|
|
devinfo12114 = Model.CGetInfo.GetDeviceInfo(12114);
|
|
devinfo12115 = Model.CGetInfo.GetDeviceInfo(12115);
|
|
if (devinfo12114.SplitByte_0 + devinfo12115.SplitByte_0 >= 1)
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append(_DeviceIdx.ToString() + "12114»ò12115Óлõ");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
break;
|
|
case 12118:
|
|
Model.MDevice devinfo12118; Model.MDevice devinfo12119;
|
|
devinfo12118 = Model.CGetInfo.GetDeviceInfo(12118);
|
|
devinfo12119 = Model.CGetInfo.GetDeviceInfo(12119);
|
|
if (devinfo12118.SplitByte_0 + devinfo12119.SplitByte_0 >= 1)
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append(_DeviceIdx.ToString() + "12118»ò12119Óлõ");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
break;
|
|
case 12122:
|
|
Model.MDevice devinfo12122; Model.MDevice devinfo12123;
|
|
devinfo12122 = Model.CGetInfo.GetDeviceInfo(12122);
|
|
devinfo12123 = Model.CGetInfo.GetDeviceInfo(12123);
|
|
if (devinfo12122.SplitByte_0 + devinfo12123.SplitByte_0 >= 1)
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append(_DeviceIdx.ToString() + "12122»ò12123Óлõ");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
break;
|
|
case 12127:
|
|
Model.MDevice devinfo12127; Model.MDevice devinfo12126;
|
|
devinfo12127 = Model.CGetInfo.GetDeviceInfo(12127);
|
|
devinfo12126 = Model.CGetInfo.GetDeviceInfo(12126);
|
|
if (devinfo12127.SplitByte_0 + devinfo12126.SplitByte_0 >= 1)
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append(_DeviceIdx.ToString() + "12127»ò12126Óлõ");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
return false;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
//1£º¶Ñ¶â»ú£»4£ºRGV£»6£ºAGVÈç¹ûÐèÒªÓÅ»¯µ÷¶È£¨É豸±íµÄF_NeedOptimize='1'£©
|
|
//Ö±½ÓдÈë±í£ºT_Monitor_Task_Child£¬²»·¢ËÍÃüÁî
|
|
if (ccf.NeedOptimize(deviceIdx) == true)
|
|
{
|
|
ccf.InsertMonitorOptimizeChildTask(MonitorIndex);
|
|
sendok = true;
|
|
}
|
|
else
|
|
{
|
|
sendok = sdo.SendDeviceOrder(msgIdx, MonitorIndex, deviceOrder,
|
|
deviceIdx, gc[0], gc[1], gc[2], gc[3], gc[4], gc[5]);
|
|
if ((deviceKind == 6) && (sendok == false))
|
|
{
|
|
AheadDetectUnallow.Clear();
|
|
AheadDetectUnallow.Append(_DeviceIdx.ToString() + "¶ÔÓ¦µÄAGVÎÞ·¨Á¬½Ó£¡");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
else if (_DeviceKind == 4)
|
|
{
|
|
if (ccf.NeedOptimize(deviceIdx) == true)
|
|
{
|
|
ccf.InsertMonitorOptimizeChildTask(MonitorIndex);
|
|
sendok = true;
|
|
}
|
|
else
|
|
{
|
|
sendok = sdo.SendDeviceOrder(msgIdx, MonitorIndex, deviceOrder, deviceIdx, gc[2]);
|
|
}
|
|
|
|
}
|
|
else if (_DeviceKind == 7)
|
|
{
|
|
int ControlType = ccf.GetFCONTROLTASKTYPEFromManageTask(_ManageKindIdx, _ManageTaskIdx);
|
|
#region ÌõÂëÉ豸ֱ½Ó±È¶Ô
|
|
DataView dv = dbo.ExceSQL(string.Format("SELECT F_MonitorIndex FROM T_Base_PLC_Ask ,T_Monitor_Task WHERE T_Base_PLC_Ask.F_DeviceIndex = T_Monitor_Task.F_DeviceIndex AND T_Base_PLC_Ask.F_BarCode = T_Monitor_Task.F_TxtParam and (T_Monitor_Task.F_MonitorIndex = {0})", MonitorIndex)).Tables[0].DefaultView;
|
|
if ((dv.Count > 0) || (ControlType != 1))
|
|
{//±È¶ÔÕýÈ·
|
|
object[] obj = new object[3] { _ManageKindIdx, _ManageTaskIdx, Model.CGeneralFunction.TASKABEND };
|
|
dbo.ExecuteSql(string.Format("UPDATE T_Manage_Task SET FExceptionNO=NULL WHERE (F_ManageTaskKindIndex ={0}) AND (FID ={1}) and FExceptionNO={2}", obj));
|
|
|
|
Model.CGeneralFunction.ActionComplete(deviceIdx, MonitorIndex, 0);
|
|
}
|
|
else
|
|
{ //±È¶Ô´íÎ󣬸ĵÀÒì³£´¦Àí¿Ú
|
|
//ÐÞ¸ÄÄ¿±êλÖÃÖÁÒì³£¿Ú
|
|
dv = dbo.ExceSQL(string.Format("SELECT F_Remark,F_BindingDevice,F_BarCode FROM T_Base_PLC_Ask WHERE T_Base_PLC_Ask.F_DeviceIndex = {0}", deviceIdx)).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
if ((CStaticClass.DeviceErrorAutoModifyRoutePath == "1") && (dv[0]["F_BarCode"].ToString() != "1111111"))
|
|
{
|
|
object[] obj = new object[5] { _ManageKindIdx, _ManageTaskIdx, Convert.ToInt32(dv[0]["F_Remark"]), Model.CGeneralFunction.TASKABEND, Convert.ToInt32(dv[0]["F_BindingDevice"]) };
|
|
dbo.ExecuteSql(string.Format("UPDATE T_Manage_Task SET FExceptionNO={3},FSTARTDEVICE ={4}, FSTARTCELL ='-',FENDDEVICE ={2}, FENDCELL ='-', FENDUCODE =0 WHERE (F_ManageTaskKindIndex ={0}) AND (FID ={1})", obj));
|
|
ccf.GetUseableRouteIDSubAndModifyRoute(_ManageTaskIdx, _ManageKindIdx, Convert.ToInt32(dv[0]["F_BindingDevice"]));
|
|
}
|
|
else
|
|
{
|
|
Model.MError me;
|
|
if (dv[0]["F_BarCode"].ToString() == "-")//ɨÃèÆ÷δ¶ÁÌõÂë
|
|
{
|
|
me = null;
|
|
Model.CGeneralFunction.ActionComplete(deviceIdx, MonitorIndex, 0);
|
|
//me = Model.CGetInfo.GetErrorInfo(732);
|
|
//dbo.ExecuteSql(string.Format("update T_Monitor_Task set F_Status=32 WHERE (T_Monitor_Task.F_MonitorIndex = {0})", MonitorIndex));
|
|
}
|
|
else if (dv[0]["F_BarCode"].ToString().IndexOf("1111111") >= 0)
|
|
{//"1111111111"ÌõÂëδ¶Áµ½
|
|
object[] obj = new object[3] { _ManageKindIdx, _ManageTaskIdx, Model.CGeneralFunction.TASKABEND };
|
|
dbo.ExecuteSql(string.Format("UPDATE T_Manage_Task SET FExceptionNO={2} WHERE (F_ManageTaskKindIndex ={0}) AND (FID ={1})", obj));
|
|
|
|
Model.CGeneralFunction.ActionComplete(deviceIdx, MonitorIndex, 0);
|
|
//dbo.ExecuteSql(string.Format("update T_Monitor_Task set F_Status=30 WHERE (T_Monitor_Task.F_MonitorIndex = {0})", MonitorIndex));
|
|
me = Model.CGetInfo.GetErrorInfo(730);
|
|
|
|
}
|
|
else
|
|
{//ÌõÂë²»ÕýÈ·
|
|
object[] obj = new object[3] { _ManageKindIdx, _ManageTaskIdx, Model.CGeneralFunction.TASKABEND };
|
|
dbo.ExecuteSql(string.Format("UPDATE T_Manage_Task SET FExceptionNO={2} WHERE (F_ManageTaskKindIndex ={0}) AND (FID ={1})", obj));
|
|
|
|
Model.CGeneralFunction.ActionComplete(deviceIdx, MonitorIndex, 0);
|
|
// dbo.ExecuteSql(string.Format("update T_Monitor_Task set F_Status=31 WHERE (T_Monitor_Task.F_MonitorIndex = {0})", MonitorIndex));
|
|
me = Model.CGetInfo.GetErrorInfo(731);
|
|
|
|
}
|
|
if (me != null)
|
|
{
|
|
RefreshMonitorEventArgs rmea = new RefreshMonitorEventArgs("notifyIcon1", "¾¯¸æ:" + devinfo.DeviceName + "," + deviceIdx + "·¢Éú¹ÊÕÏ£º" + me.ErrorName);
|
|
OnRefreshMonitor(rmea);
|
|
}
|
|
}
|
|
if (_ManageKindIdx == 1)
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("update IO_Control set ERROR_TEXT='").Append(devinfo.DeviceName).Append(",").Append(deviceIdx).Append("ÌõÂë²»ÕýÈ·£¡").Append("' where CONTROL_ID=").Append(manageTaskIdx);
|
|
dboM.ExceSQL(sql.ToString());
|
|
}
|
|
}
|
|
}
|
|
//20130709 dbo.ExecuteSql(string.Format("UPDATE T_Base_PLC_Ask SET F_BarCode = '-' WHERE (F_DeviceIndex = {0}) ", deviceIdx));
|
|
|
|
#endregion
|
|
return true;
|
|
}
|
|
else if (_DeviceKind == 8)
|
|
{//20130510ÔÚ¶©ÔÄ´¦Àí³ÆÖØÈÎÎñºÍÖØÁ¿
|
|
//#region ³ÆÖØ
|
|
////DataView dv = dbo.ExceSQL(string.Format("SELECT F_BoxBarcode FROM T_Base_PLC_Ask WHERE F_BoxBarcode<>'0' and T_Base_PLC_Ask.F_DeviceIndex = {0}", deviceIdx)).Tables[0].DefaultView;
|
|
////if (dv.Count > 0)
|
|
////{
|
|
//// //Ïò¹ÜÀíдÈëÖØÁ¿
|
|
//// dboM.ExecuteSql(string.Format("UPDATE IO_CONTROL SET CONTROL_REMARK ={0} WHERE CONTROL_ID={1}", dv[0][0].ToString(), manageTaskIdx));
|
|
//// Model.CGeneralFunction.ActionComplete(deviceIdx, MonitorIndex, 0);
|
|
//// dbo.ExecuteSql(string.Format("UPDATE T_Base_PLC_Ask SET F_BoxBarcode = '0' WHERE (F_DeviceIndex = {0})", deviceIdx));
|
|
|
|
////}
|
|
|
|
//#endregion
|
|
//return true;
|
|
sendok = true;
|
|
}
|
|
else if (_DeviceKind == 13 || _DeviceKind == 14)
|
|
{//richard.liu20230718ºè°²»·´©»òÕßµ¥Ì¨³µ
|
|
if (deviceOrder == 4) // ¿Õ³µÒƶ¯£¬ÊäËÍÏß·¢µ½È¡»õµØÖ·£¬ÊÖ¶¯Ï´ï²ÎÊýÔÚgc[5]
|
|
{
|
|
sendok = sdo.SendDeviceOrder(msgIdx, MonitorIndex, deviceOrder,
|
|
deviceIdx, gc[0], gc[1], gc[5], gc[3], gc[4], gc[5]);
|
|
}
|
|
else
|
|
{
|
|
sendok = sdo.SendDeviceOrder(msgIdx, MonitorIndex, deviceOrder,
|
|
deviceIdx, gc[0], gc[1], gc[2], gc[3], gc[4], gc[5]);
|
|
}
|
|
|
|
//20231017
|
|
if (sendok == true && (deviceOrder == 1 || deviceOrder == 2)) // 1£ºÈ¡Ð¶»õ 2£ºÈ¡»õ 3£ºÐ¶»õ 4£º¿Õ³µÒƶ¯
|
|
{
|
|
//AddOPCSendData(deviceIdx, MonitorIndex, itemnames, itemvalues);
|
|
sdo = CommModeCreate.CreateSendDeviceOrder(gc[2]); // »·´©È¡»õÊäËÍÏßÉ豸 _NumParam1
|
|
sdo.SendDeviceOrder(2, MonitorIndex, 0, gc[2], 0); // ¸øÈ¡»õÊäËÍÏß·¢ËͶԽÓÈÎÎñºÅ
|
|
//AddOPCSendData(gc[2], MonitorIndex, itemnames, itemvalues);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
sendok = sdo.SendDeviceOrder(msgIdx, MonitorIndex, deviceOrder, deviceIdx, gc[5]);
|
|
}
|
|
|
|
|
|
if (sendok == false)
|
|
{
|
|
if (sdo.CommLayerError != null)
|
|
{
|
|
RefreshMonitorEventArgs rmea = new RefreshMonitorEventArgs("tsStatus", sdo.CommLayerError);
|
|
OnRefreshMonitor(rmea);
|
|
}
|
|
return false;
|
|
}
|
|
else//·¢ËÍÃüÁî³É¹¦
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("update T_Monitor_Task set F_SendFlag='1' where F_MonitorIndex=").Append(MonitorIndex);
|
|
dbo.ExecuteSql(sql.ToString());//20100905Ö»ÖØ·¢Ö÷ÈÎÎñ
|
|
|
|
ccf.SendOrderSuccess(manageKindIdx, manageTaskIdx, MonitorIndex, deviceIdx, _routeID);
|
|
#region ¶à²æ¹ØÁªÈÎÎñ£¬ÄÜͬ²½µÄͬʱ±¨¸æ·¢ËÍÃüÁî³É¹¦
|
|
//20100323
|
|
devinfo = Model.CGetInfo.GetDeviceInfo(deviceIdx);
|
|
if (devinfo.IfCorrelDoubleFork == "1")
|
|
{
|
|
int[] corrtask = Model.CGeneralFunction.MutiForkIfSync(MonitorIndex, deviceIdx, deviceKind);
|
|
if (corrtask != null)
|
|
{
|
|
int rfid = 0, rmankind = 0, rdev = 0;
|
|
for (int i = 0; i < corrtask.GetLength(0); i++)
|
|
{
|
|
rfid = ccf.GetManageTaskIndexfromMonitor(corrtask[i]);
|
|
rmankind = ccf.GetManageTaskKindIndexFromMonitor(corrtask[i]);
|
|
rdev = ccf.GetDeviceindexFromMonitor(corrtask[i]);
|
|
ccf.SendOrderSuccess(rmankind, rfid, corrtask[i], rdev, 0);
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("update T_Monitor_Task set F_SendFlag='2' where F_MonitorIndex=").Append(corrtask[i]);
|
|
dbo.ExecuteSql(sql.ToString());//richard.liu20181212±»Í¬²½ÔËÐÐÉ豸ָÁî×ö±ê¼Ç2£¬OEEʱ²»Í³¼ÆÊ±¼ä
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
return true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{//20110608
|
|
CControlError = string.Format("·¢ËÍÃüÁîµ÷ÓÃSendMonitorTaskʱ£º{0}", ex.StackTrace + ex.Message);
|
|
|
|
return false;
|
|
}
|
|
}
|
|
|
|
int GetDeviceFromMonitor(int monitorIndex)
|
|
{
|
|
DataView dv = new DataView();
|
|
try
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT F_MonitorIndex, F_DeviceIndex FROM T_Monitor_Task WHERE (F_MonitorIndex = ").Append(monitorIndex).Append(")");
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
return Convert.ToInt32(dv[0]["F_DeviceIndex"]);
|
|
}
|
|
else
|
|
{
|
|
return -1;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// »ñÈ¡¿ÉÓõÄÄ¿±êλÖãºÈë¿âµÄÏïµÀ»òÕß³ö¿âվ̨
|
|
/// </summary>
|
|
/// <param name="manageTaskIdx">µ÷¶ÈÈÎÎñË÷Òý</param>
|
|
/// <param name="manageKindIdx">µ÷¶ÈÈÎÎñÀà±ð</param>
|
|
/// <returns></returns>
|
|
bool GetUsableDestination(int manageTaskIdx, int manageKindIdx)
|
|
{
|
|
//20100610²éÕÒÒ»¸ö·¾¶¿ÉÓã¬ÈÎÎñÊý×îÉÙµÄÖÕµãÉ豸
|
|
Dictionary<int, int> advDev = new Dictionary<int, int>();
|
|
object ob;
|
|
DataView dv = new DataView();
|
|
DataRowView dr = null;
|
|
DataView dvIO = new DataView();
|
|
DataTable dtd = new DataTable();
|
|
DataTable dt = new DataTable();
|
|
try
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT * FROM T_Manage_Task WHERE (FID = ").Append(manageTaskIdx).Append(") AND (F_ManageTaskKindIndex = ").Append(manageKindIdx).Append(")");
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count <= 0)
|
|
{
|
|
return false;
|
|
}
|
|
dr = dv[0];
|
|
|
|
//20091107
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("select CONTROL_ID, CONTROL_STATUS from IO_Control where (CONTROL_ID = ").Append(Convert.ToInt32(dr["FID"])).Append(") AND ((CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKALTERROUTEAPPLY).Append(") or (CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKALTERROUTEREPLY).Append("))");
|
|
dvIO = dboM.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dvIO.Count <= 0)
|
|
{
|
|
//Ö»ÐÞÉêÇë¸Äµ÷¶ÈÈÎÎñµÄ·¾¶£¬²»Ð޸ĵ÷¶È×Ô¶¯ÈÎÎñ·¾¶
|
|
if (dr["F_ManageTaskKindIndex"].ToString() != "1") return false;
|
|
|
|
string adviceDev = "";
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT F_TASKKIND, F_DESTINATION FROM T_Base_Destination WHERE (F_Warehouse='").Append(dr["FENDWAREHOUSE"]).Append("') and (F_TASKKIND = ").Append(dr["FCONTROLTASKTYPE"]).Append(") and (F_AbendStation=1) and (F_DESTINATION=").Append(dr["FENDDEVICE"]).Append(")");
|
|
dtd = dbo.ExceSQL(sql.ToString()).Tables[0];
|
|
if (dtd.Rows.Count > 0)//ÔÀ´ÖÕµãÊÇÓ¦¼±Õ¾Ì¨ÄÇô»¹·ÖÅäÕâ¸öվ̨£¬²»ÐèÒª¸Ä±ä
|
|
{
|
|
adviceDev = dtd.Rows[0]["F_DESTINATION"].ToString();
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
//²éÕÒ¿ÉÓÃÄ¿±êλÖÃ
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT F_TASKKIND, F_DESTINATION FROM T_Base_Destination WHERE (F_Warehouse='").Append(dr["FENDWAREHOUSE"]).Append("') and (F_TASKKIND = ").Append(dr["FCONTROLTASKTYPE"]).Append(") and (F_DESTINATION <>").Append(dr["FENDDEVICE"]).Append(") and (F_AbendStation=0)");
|
|
dt = dbo.ExceSQL(sql.ToString()).Tables[0];
|
|
if (dt.Rows.Count > 0)
|
|
{
|
|
for (int i = 0; i < dt.Rows.Count; i++)
|
|
{
|
|
if (CDisassembleTask.MinRouteID(Convert.ToInt32(dr["FSTARTDEVICE"]), Convert.ToInt32(dt.Rows[i]["F_DESTINATION"]), dr["FUseAwayFork"]) != -1)
|
|
{
|
|
|
|
//20100610ͳ¼Æµ½ÖÕµãÉ豸ÕýÔÚÖ´ÐеÄÈÎÎñÊý
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT count(FENDDEVICE) as counts FROM T_Manage_Task where FENDDEVICE='").Append(dt.Rows[i]["F_DESTINATION"]).Append("' and fstatus>0");
|
|
ob = dbo.GetSingle(sql.ToString());
|
|
advDev.Add(Convert.ToInt32(dt.Rows[i]["F_DESTINATION"]), Convert.ToInt32(ob));
|
|
|
|
//20100610 break;
|
|
}
|
|
}
|
|
if (advDev.Count == 0)//20100610
|
|
{
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
else
|
|
{//20100610
|
|
int mincount = 9999;
|
|
foreach (int aaa in advDev.Keys)
|
|
{
|
|
if (advDev[aaa] < mincount)
|
|
{
|
|
mincount = advDev[aaa];
|
|
adviceDev = aaa.ToString();
|
|
}
|
|
}
|
|
if (adviceDev == "")
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{//20100610
|
|
return false;
|
|
}
|
|
}
|
|
|
|
string dtime = DateTime.Now.ToString("u");
|
|
dtime = dtime.Substring(0, dtime.Length - 1);
|
|
//20091128
|
|
dboM.TransBegin();
|
|
try
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append(" update IO_CONTROL set CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKALTERROUTEAPPLY).Append(" where CONTROL_ID=").Append(dr["FID"]).Append("");
|
|
dboM.ExceSQL(sql.ToString());
|
|
//Ïò¹ÜÀíÉêÇëÐÞ¸ÄÈÎÎñ//
|
|
int appid = dboM.GetManageTableIndex("IO_CONTROL_APPLY", true);//CONTROL_APPLY_ID
|
|
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("INSERT INTO IO_CONTROL_APPLY ( CONTROL_APPLY_ID,CONTROL_ID,CONTROL_APPLY_TYPE,WAREHOUSE_CODE, STOCK_BARCODE, DEVICE_CODE, APPLY_TASK_STATUS, CREATE_TIME, ").Append(
|
|
" CONTROL_APPLY_REMARK)").Append(
|
|
"VALUES (").Append(appid).Append(",").Append(dr["FID"]).Append(",2,'").Append(dr["FENDWAREHOUSE"]).Append("','").Append(dr["FPALLETBARCODE"]).Append("','").Append(adviceDev).Append("',0,'").Append(dtime).Append("',null)");
|
|
|
|
|
|
dboM.ExceSQL(sql.ToString());
|
|
dboM.TransCommit();
|
|
//°ÑManageTaskIdx£¬ManageKindIdx µÄµ÷¶ÈÈÎÎñÈ«²¿ÉêÇë¸ÄµÀ
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("UPDATE T_Monitor_Task SET F_Status = 3 WHERE (F_ManageTaskIndex = ").Append(manageTaskIdx).Append(") AND (F_ManageTASKKINDINDEX =").Append(manageKindIdx).Append(")");
|
|
dbo.ExceSQL(sql.ToString());
|
|
CommonClassLib.CCarryConvert.WriteDarkCasket("CControl.GetUsableDestination", "¶Ñ¶â»úÈë¿âÄ¿±êλÖ÷¢Éú¸ÄµÀ", "¹ÜÀíÈÎÎñ£º" +
|
|
manageKindIdx.ToString() + "-" + manageTaskIdx.ToString(), "ÌõÂ룺" + dr["FPALLETBARCODE"].ToString().ToUpper());
|
|
return true;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
CControlError = string.Format("·¢ËÍÖ¸ÁÉêÇë¸ÄµÀʱ£º{0}", ex.StackTrace + ex.Message);
|
|
dboM.TransRollback();
|
|
return false;
|
|
}
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
dt.Dispose();
|
|
dtd.Dispose();
|
|
dv.Dispose();
|
|
dvIO.Dispose();
|
|
dr = null;
|
|
}
|
|
}
|
|
|
|
private int GetBarcodeStationRGV(int xcoor, int vStack)
|
|
{
|
|
DataView dv = new DataView();
|
|
try
|
|
{
|
|
dv = dbo.ExceSQL(string.Format("SELECT BarcodeCoor FROM T_Base_BarcodeCoor WHERE XCoor = {0} and VirtualStack={1}", xcoor, vStack)).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
return Convert.ToInt32(dv[0][0]);
|
|
}
|
|
else
|
|
{
|
|
dv = dbo.ExceSQL(string.Format("SELECT BarcodeCoor FROM T_Base_BarcodeCoor WHERE XCoor = {0} and VirtualStack={1}", xcoor, vStack)).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
return Convert.ToInt32(dv[0][0]);
|
|
}
|
|
else
|
|
{
|
|
return 0;
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
}
|
|
}
|
|
bool GetRGVIdleDestination(int manageTaskIdx, int manageKindIdx, int RGVGateDevice, bool IfUseNegativeDevice)
|
|
{
|
|
|
|
//20100610 t_Base_device ±íF_UsableEndDevice×ֶδæ·ÅÈë¿â»òÕß³ö¿â¶ÔµÈµÄÉ豸Ë÷Òý×飨ÒԷֺŸô¿ª£©£º
|
|
//¸ºÊý´ú±íλÓÚµ±Ç°Éè±¸Ç°Ãæ£¨»·ÐÎRGVÐÐ×ß·½ÏòµÄ·´·½Ïò£©£¬Ö»ÔÊÐíÔÚ·¢ËÍRGVÈ¡»õºÍµÚÒ»¡¢¶þ¸öÔ˶¯Ê±Ê¹Óã»
|
|
//ÕýÊý´ú±íµ±Ç°É豸ºóÃæµÄÉ豸£¬¿ÉÒÔÔÚ·¢ËÍËÍ»õºÍ֮ǰµÄËùÓÐÃüÁîʹÓÃ.Ö±µÀRGV¶¼ÊÇÕýÊý¡£
|
|
//T_Base_RGV_GateÐÂÔö×ֶΡ°F_EndDevice¡±ÓÃÓÚ¼ÇÔØÈë¿âʱ¿¿½üÏïµÀÒ»²àµÄRGV³öÈë¿ÚÊäËÍ»úµÄ¶ÔÓ¦µÄÏïµÀÉ豸Ë÷Òý
|
|
//»òÕß³ö¿âʱ¿¿½ü³ö¿âվ̨һ²àµÄÊäËÍ»ú¶ÔÓ¦µÄ³ö¿âվ̨Ë÷Òý
|
|
|
|
//¿É±ä¸üÄ¿±êλÖõÄÑ¡ÔñÔÔò£ºRGVÄ¿±êλÖÿÕÏС¢ÎÞÎĿ±êλÖòÎÓëµÄÕýÔÚÖ´Ðеĵ÷¶ÈÈÎÎñÊý×îÉÙ
|
|
|
|
DataView dv = new DataView();
|
|
DataRowView dr = null;
|
|
|
|
string adviceDev = "";
|
|
char[] cc = new char[1] { ';' };
|
|
string[] sp;
|
|
DataView dvIO = new DataView();
|
|
Dictionary<int, int> advDev = new Dictionary<int, int>();
|
|
object ob;
|
|
DataView dvu = new DataView();
|
|
try
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT * FROM T_Manage_Task WHERE (FID = ").Append(manageTaskIdx).Append(") AND (F_ManageTaskKindIndex = ").Append(manageKindIdx).Append(")");
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count <= 0)
|
|
{
|
|
return false;
|
|
}
|
|
dr = dv[0];
|
|
//Ö»ÐÞÉêÇë¸Äµ÷¶ÈÈÎÎñµÄ·¾¶£¬²»Ð޸ĵ÷¶È×Ô¶¯ÈÎÎñ·¾¶
|
|
if (dr["F_ManageTaskKindIndex"].ToString() != "1") return false;
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("select CONTROL_ID, CONTROL_STATUS from IO_Control where (CONTROL_ID = ").Append(Convert.ToInt32(dr["FID"])).Append(") AND ((CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKALTERROUTEAPPLY).Append(") or (CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKCANCEL).Append(") or(CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKALTERROUTEREPLY).Append("))");
|
|
dvIO = dboM.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dvIO.Count <= 0)
|
|
{
|
|
|
|
#region ¸ù¾ÝT_Base_Device±íµÄF_UsableEndDevice²éÕÒ¿ÉÓÃÖÕµãÉ豸
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("select F_UsableEndDevice from T_Base_Device where F_UsableEndDevice is not null and F_DeviceIndex=").Append(RGVGateDevice).Append("");
|
|
dvu = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dvu.Count > 0)
|
|
{
|
|
int enddv = 0, DESTINATION = 0;
|
|
sp = dvu[0]["F_UsableEndDevice"].ToString().Split(cc);
|
|
|
|
for (int i = sp.GetLowerBound(0); i <= sp.GetUpperBound(0); i++)
|
|
{
|
|
if (int.TryParse(sp[i], out enddv) == false) continue;
|
|
enddv = Convert.ToInt32(sp[i]);
|
|
if (enddv < 0)
|
|
{
|
|
//¸ºÊý´ú±íµ±Ç°Éè±¸Ç°ÃæµÄÉ豸£¨»·ÐÎRGVÐÐ×ß·½ÏòµÄ·´·½Ïò£©
|
|
if (IfUseNegativeDevice == true)
|
|
{
|
|
enddv = -(enddv);
|
|
}
|
|
else
|
|
{
|
|
continue;
|
|
}
|
|
}
|
|
devinfo = Model.CGetInfo.GetDeviceInfo(enddv);
|
|
if ((devinfo.HaveGoods == true) || (devinfo.RunState == 2))
|
|
{//Ä¿±êλÖñ»Õ¼ÓûòÕß¹ÊÕÏ
|
|
continue;
|
|
}
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT F_EndDevice FROM T_Base_RGV_Gate WHERE (F_RGVGateDeviceIndex = ").Append(enddv).Append(") AND (F_EndDevice IS NOT NULL)");
|
|
ob = dbo.GetSingle(sql.ToString());
|
|
if (ob == null) continue;
|
|
DESTINATION = Convert.ToInt32(ob);
|
|
if (CDisassembleTask.MinRouteID(Convert.ToInt32(dr["FSTARTDEVICE"]), DESTINATION, dr["FUseAwayFork"]) != -1)
|
|
{
|
|
//20100609ͳ¼Æµ½ÖÕµãÉ豸ÕýÔÚÖ´ÐеÄÈÎÎñÊý
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT count(FENDDEVICE) as counts FROM T_Manage_Task where FENDDEVICE='").Append(DESTINATION).Append("' and fstatus>0");
|
|
ob = dbo.GetSingle(sql.ToString());
|
|
advDev.Add(DESTINATION, Convert.ToInt32(ob));
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
|
|
if (advDev.Count <= 0)
|
|
{
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
int mincount = 9999;
|
|
foreach (int aaa in advDev.Keys)
|
|
{
|
|
if (advDev[aaa] < mincount)
|
|
{
|
|
mincount = advDev[aaa];
|
|
adviceDev = aaa.ToString();
|
|
}
|
|
}
|
|
if (adviceDev == "")
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
//20101108int fid = dboM.GetManageTableIndex("IO_CONTROL_APPLY");
|
|
string dtime = DateTime.Now.ToString("u");
|
|
dtime = dtime.Substring(0, dtime.Length - 1);
|
|
|
|
dboM.TransBegin();
|
|
try
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append(" update IO_CONTROL set CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKALTERROUTEAPPLY).Append(" where CONTROL_ID=").Append(dr["FID"]).Append(" and CONTROL_STATUS<>").Append(Model.CGeneralFunction.TASKCANCEL).Append("");
|
|
dboM.ExceSQL(sql.ToString());
|
|
//Ïò¹ÜÀíÉêÇëÐÞ¸ÄÈÎÎñ
|
|
int appid = dboM.GetManageTableIndex("IO_CONTROL_APPLY", true);//CONTROL_APPLY_ID
|
|
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("INSERT INTO IO_CONTROL_APPLY (CONTROL_APPLY_ID, CONTROL_ID, WAREHOUSE_CODE, STOCK_BARCODE, DEVICE_CODE, APPLY_TASK_STATUS, CREATE_TIME,CONTROL_APPLY_REMARK)").Append(
|
|
"VALUES (").Append(appid).Append(",").Append(dr["FID"]).Append(",'").Append(dr["FENDWAREHOUSE"]).Append("','").Append(dr["FPALLETBARCODE"]).Append("','").Append(adviceDev).Append("',0,'").Append(dtime).Append("',null)");
|
|
|
|
dboM.ExceSQL(sql.ToString());
|
|
dboM.TransCommit();
|
|
//°ÑManageTaskIdx£¬ManageKindIdx µÄµ÷¶ÈÈÎÎñÈ«²¿ÉêÇë¸ÄµÀ
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("UPDATE T_Monitor_Task SET F_Status = 3 WHERE (F_ManageTaskIndex = ").Append(manageTaskIdx).Append(") AND (F_ManageTASKKINDINDEX =").Append(manageKindIdx).Append(")");
|
|
dbo.ExceSQL(sql.ToString());
|
|
CommonClassLib.CCarryConvert.WriteDarkCasket("CControl.GetRGVIdleDestination", "´©Ëó³µÄ¿±êλÖ÷¢Éú¸ÄµÀ", "¹ÜÀíÈÎÎñ£º" +
|
|
manageKindIdx.ToString() + "-" + manageTaskIdx.ToString(), "ÌõÂ룺" + dr["FPALLETBARCODE"].ToString().ToUpper());
|
|
return true;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
dboM.TransRollback();
|
|
CControlError = string.Format("·¢ËÍÖ¸ÁÉêÇë¸ÄµÀʱ£º{0}", ex.StackTrace + ex.Message);
|
|
return false;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
CControlError = string.Format("·¢ËÍÖ¸ÁÉêÇë¸ÄµÀʱ£º{0}", ex.StackTrace + ex.Message);
|
|
return false;
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
dr = null;
|
|
cc = null;
|
|
sp = null;
|
|
dvIO.Dispose();
|
|
dvu.Dispose();
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// ·µ»ØÔÚ¶¥Éý´¦Èë¿âÈÎÎñ¿ÉÒÔ¶à²æ¹ØÁªµÄµ÷¶ÈÈÎÎñË÷Òý
|
|
/// </summary>
|
|
/// <param name="controlTaskType">¿ØÖÆÈÎÎñÀàÐÍ</param>
|
|
/// <param name="devindex">É豸Ë÷Òý</param>
|
|
/// <returns></returns>
|
|
int GetEnableDoubleForkManageTask(int controlTaskType, int devindex, int FID)
|
|
{
|
|
DataView dv0 = new DataView(); DataView dv = new DataView();
|
|
try
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT F_MonitorIndex,T_Monitor_Task.F_ManageTaskIndex,T_Monitor_Task.F_ManageTASKKINDINDEX FROM T_Monitor_Task ,T_Manage_Task where T_Monitor_Task.F_ManageTaskIndex = T_Manage_Task.FID AND T_Monitor_Task.F_ManageTASKKINDINDEX = T_Manage_Task.F_ManageTaskKindIndex AND F_DeviceIndex=").Append(devindex).Append(" and FCONTROLTASKTYPE=").Append(controlTaskType);
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
for (int i = 0; i < dv.Count; i++)
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("select min(F_MonitorIndex) as mm from T_Monitor_Task where F_ManageTaskIndex=").Append(dv[i]["F_ManageTaskIndex"]).Append(" and F_ManageTASKKINDINDEX=").Append(dv[i]["F_ManageTASKKINDINDEX"]);
|
|
dv0 = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv0.Count > 0)
|
|
{
|
|
if (dv0[0]["mm"].ToString() == dv[i]["F_MonitorIndex"].ToString())
|
|
{
|
|
if (FID != Convert.ToInt32(dv[i]["F_ManageTaskIndex"]))
|
|
{
|
|
return Convert.ToInt32(dv[i]["F_ManageTaskIndex"]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
else
|
|
{
|
|
return -1;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
dv0.Dispose();
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// »ñµÃ¶Ñ¶â»úÔÚ¶ÔµÈվ̨ȡ»õµÄ¶à²æ¹ØÁªÈÎÎñ
|
|
/// </summary>
|
|
/// <param name="controlTaskType">¿ØÖÆÈÎÎñÀàÐÍ</param>
|
|
/// <param name="Stackdevindex">¶Ñ¶â»úÉ豸Ë÷Òý</param>
|
|
/// <param name="StationDevice">վ̨É豸Ë÷Òý</param>
|
|
/// <param name="FID">µ÷¶ÈÈÎÎñË÷Òý</param>
|
|
/// <returns></returns>
|
|
int GetEnableDoubleForkManageTask(int controlTaskType, int Stackdevindex, int StationDevice, int FID)
|
|
{
|
|
DataView dv1 = new DataView();
|
|
DataView dv0 = new DataView();
|
|
DataView dv = new DataView();
|
|
try
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT F_ZXY FROM T_Base_Lane_Gate,T_Base_LaneInfo WHERE ").Append(
|
|
"(T_Base_Lane_Gate.F_LaneIndex = T_Base_LaneInfo.F_LaneDeviceIndex) and (T_Base_LaneInfo.F_StackIndex = ").Append(
|
|
Stackdevindex).Append(") and (F_LaneGateDeviceIndex=").Append(StationDevice).Append(")");
|
|
dv1 = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv1.Count <= 0) return -1;
|
|
char[] cc = new char[1] { '-' };
|
|
string[] zxy = dv1[0]["F_ZXY"].ToString().Split(cc);
|
|
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT F_MonitorIndex,T_Monitor_Task.F_ManageTaskIndex,T_Monitor_Task.F_ManageTASKKINDINDEX ").Append(
|
|
" FROM T_Monitor_Task ,T_Manage_Task where T_Monitor_Task.F_ManageTaskIndex = T_Manage_Task.FID AND ").Append(
|
|
"T_Monitor_Task.F_ManageTASKKINDINDEX = T_Manage_Task.F_ManageTaskKindIndex AND F_DeviceIndex=").Append(
|
|
Stackdevindex).Append(" and FCONTROLTASKTYPE=").Append(controlTaskType).Append(" and F_NumParam1=").Append(zxy[0]).Append(
|
|
" and F_NumParam2=").Append(zxy[1]).Append(" and F_NumParam3=").Append(zxy[2]).Append(" and F_RELATIVECONTORLID<>").Append(FID);
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
for (int i = 0; i < dv.Count; i++)
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("select min(F_MonitorIndex) as mm from T_Monitor_Task where F_ManageTaskIndex=").Append(dv[i]["F_ManageTaskIndex"]).Append(" and F_ManageTASKKINDINDEX=").Append(dv[i]["F_ManageTASKKINDINDEX"]).Append(" ");
|
|
dv0 = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv0.Count > 0)
|
|
{
|
|
if (dv0[0]["mm"].ToString() == dv[i]["F_MonitorIndex"].ToString())
|
|
{
|
|
if (FID != Convert.ToInt32(dv[i]["F_ManageTaskIndex"]))
|
|
{
|
|
return Convert.ToInt32(dv[i]["F_ManageTaskIndex"]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
else
|
|
{
|
|
return -1;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
dv0.Dispose();
|
|
dv1.Dispose();
|
|
}
|
|
}
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="Mankind">µ÷¶ÈÈÎÎñÀàÐÍË÷Òý</param>
|
|
/// <param name="FID">µ÷¶ÈÈÎÎñË÷Òý</param>
|
|
/// <param name="ControlTaskType">µ÷¶ÈÈÎÎñÀàÐÍ</param>
|
|
/// <param name="UseAwayFork">×îºó·ÖÅäµÄÔ¶¡¢½ü»õ²æ</param>
|
|
void AlterRoutePath(int Mankind, int FID, int ControlTaskType, char UseAwayFork, int NowDevice)
|
|
{
|
|
DataView dv = new DataView(); DataView dv1 = new DataView(); DataView dvnew = new DataView();
|
|
|
|
//ÏÈÕÒµ½ÒÔǰµÄ·¾¶ÊÇ·ñÓë×îºó·ÖÅäµÄ»õ²æÆ¥Å䣬²»Æ¥ÅäµÄ¸ÄµÀ
|
|
try
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT T_Monitor_Task.F_MonitorIndex,T_Monitor_Task.F_DeviceIndex FROM T_Monitor_Task,T_Base_Route_Device where ").Append(
|
|
" T_Monitor_Task.F_RouteID = T_Base_Route_Device.F_RouteIDSub AND T_Monitor_Task.F_DeviceIndex = T_Base_Route_Device.F_DeviceIndex and T_Monitor_Task.F_ManageTaskIndex=").Append(
|
|
FID).Append(" and T_Monitor_Task.F_ManageTASKKINDINDEX=").Append(Mankind).Append(" and T_Base_Route_Device.F_UseAwayFork<>'").Append(UseAwayFork).Append("'");
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("select * from T_Manage_Task where F_ManageTaskKindIndex=").Append(Mankind).Append(" and FID=").Append(FID);
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
//20100702
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT T_Base_Route_Device.F_RouteIDSub FROM T_Base_Route,T_Base_Route_Device where T_Base_Route.F_RouteID = T_Base_Route_Device.F_RouteID ").Append(
|
|
" and (T_Base_Route_Device.F_UseAwayFork = '").Append(UseAwayFork).Append("') AND (T_Base_Route_Device.F_DeviceIndex = ").Append(NowDevice).Append(") AND (T_Base_Route.F_StartDevice = ").Append(
|
|
dv[0]["FSTARTDEVICE"]).Append(") AND (T_Base_Route.F_EndDevice = ").Append(dv[0]["FENDDEVICE"]).Append(" and F_RouteKind=").Append(ControlTaskType).Append(")");
|
|
;
|
|
dv1 = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv1.Count > 0)
|
|
{
|
|
int routeidNew = Convert.ToInt32(dv1[0][0]);
|
|
//ɾ³ýÔÀ´µÄÉêÇëÐ޸ķ¾¶ÈÎÎñ£¬²ð·ÖеÄÈÎÎñ²¢ÇÒÖ»±£ÁôÏÖÓÐÉ豸¿ªÊ¼µÄÈÎÎñ
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("DELETE FROM T_Monitor_Task WHERE (F_ManageTaskIndex = ").Append(FID).Append(") AND (F_ManageTASKKINDINDEX =").Append(Mankind).Append(")");
|
|
dbo.ExceSQL(sql.ToString());
|
|
if (CDisassembleTask.CreateMonitor(Mankind, FID, routeidNew, dv[0], 3) > 0)
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_ManageTaskIndex = ").Append(
|
|
FID).Append(") AND (F_ManageTASKKINDINDEX = ").Append(Mankind).Append(") AND (F_DeviceIndex = ").Append(
|
|
NowDevice).Append(") AND (F_RouteID = ").Append(routeidNew).Append(
|
|
") AND (F_Status = 3) ");
|
|
dvnew = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dvnew.Count > 0)
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("delete from T_Monitor_Task where F_MonitorIndex<").Append(dvnew[0]["F_MonitorIndex"]).Append(" and (F_ManageTaskIndex = ").Append(
|
|
FID).Append(") AND (F_ManageTASKKINDINDEX = ").Append(Mankind).Append(") AND (F_Status = 3)");
|
|
dbo.ExceSQL(sql.ToString());
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("update T_Monitor_Task set F_Status =0 where (F_ManageTaskIndex = ").Append(
|
|
FID).Append(") AND (F_ManageTASKKINDINDEX = ").Append(Mankind).Append(") AND (F_Status = 3)");
|
|
dbo.ExceSQL(sql.ToString());
|
|
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
dv1.Dispose();
|
|
dvnew.Dispose();
|
|
}
|
|
}
|
|
int GetDoubleForkMinRouteTask(int taskno)
|
|
{
|
|
DataView dv = new DataView();
|
|
try
|
|
{
|
|
|
|
//²»ÊÇË«²æµÄÖ±½Ó·µ»Øtaskno£»ÊÇË«²æµ«ÊÇ¿ÉÒÔͬ²½µÄÖ±½Ó·µ»Øtaskno
|
|
//Ë«²æ²»ÄÜͬ²½µÄ·´À¡¾àÀ뵱ǰ¶Ñ¶â»úλÖÃ×î¶ÌµÄtaskno
|
|
|
|
int manKind = Model.CGeneralFunction.GetManageTaskKindIndexFromMonitor(taskno);
|
|
int manFid = Model.CGeneralFunction.GetManageTaskIndexfromMonitor(taskno);
|
|
int deviceindex = Model.CGeneralFunction.GetDeviceIndexFromMonitor(taskno);
|
|
int devKind = Model.CGeneralFunction.GetDeviceKindIdx(deviceindex);
|
|
int devOrder = Model.CGeneralFunction.GetDeviceOrderFromMonitor(taskno);
|
|
|
|
devinfo = Model.CGetInfo.GetDeviceInfo(deviceindex);
|
|
|
|
int nX = Model.CGeneralFunction.GetXCoorFromMonitor(taskno, deviceindex, devOrder);
|
|
int nY = Model.CGeneralFunction.GetYCoorFromMonitor(taskno, deviceindex, devOrder);
|
|
double nXY = 0, doubleXY = 0, doubleX = 0, doubleY = 0;
|
|
nXY = Math.Pow((double)(nX - devinfo.XCoor), 2) + (Math.Pow((double)(nY - devinfo.YCoor), 2));
|
|
|
|
if (devinfo.IfCorrelDoubleFork == "1")
|
|
{
|
|
Dictionary<int, string[]> df = Model.CGeneralFunction.GetDoubleForkMonitorInfo(taskno, deviceindex);
|
|
if (df == null) return taskno;
|
|
if (Model.CGeneralFunction.MutiForkIfSync(taskno, deviceindex, devKind) == null)
|
|
{
|
|
#region ±éÀúÿ¸ö¹ØÁªÈÎÎñ
|
|
|
|
foreach (int cortask in df.Keys)
|
|
{
|
|
//20120906
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT F_MonitorIndex FROM dbo.T_Monitor_Task WHERE (F_MonitorIndex = ").Append(cortask).Append(") AND (F_status = 0)");
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count <= 0)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
#region ¹ØÁªÖ¸Áî²»ÊǵÚÒ»¸öÖ¸Áî²»ÄÜ·¢ËÍ
|
|
int rmankind = Model.CGeneralFunction.GetManageTaskKindIndexFromMonitor(cortask);
|
|
int rman = Model.CGeneralFunction.GetManageTaskIndexfromMonitor(cortask);
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT MIN(F_MonitorIndex) AS mmi FROM dbo.T_Monitor_Task WHERE (F_ManageTaskIndex = ").Append(rman).Append(") AND (F_ManageTASKKINDINDEX = ").Append(rmankind).Append(")");
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
if ((dv[0]["mmi"] != DBNull.Value) && (dv[0]["mmi"].ToString() != cortask.ToString()))
|
|
{
|
|
return -1;
|
|
}
|
|
}
|
|
#endregion
|
|
if (devKind == 1)//¶Ñ¶â»ú
|
|
{//Èç¹û´æÔÚµ¹¿â»õ룬ÔòºóÖ´ÐиÃÈÎÎñ20120906¼ÎÐ˵çÁ¦¸Ä½ø£¬µ¹¿â»õλµÄÈ¡»õÃüÁî¼ì²â¶Ñ¶â»ú»õ²æ¶ÔÓ¦¿ª¹ØÊÇ·ñÓлõ
|
|
//if (devOrder == 5)//ËÍ»õÖ¸ÁîʱÅжÏ20110505
|
|
//{
|
|
|
|
// if (true == IfChangeForkCell_LastRun(cortask))
|
|
// {
|
|
// continue;
|
|
// }
|
|
|
|
//}
|
|
doubleX = Model.CGeneralFunction.GetXCoorFromMonitor(cortask, deviceindex, devOrder);
|
|
doubleY = Model.CGeneralFunction.GetYCoorFromMonitor(cortask, deviceindex, devOrder);
|
|
doubleXY = Math.Pow((double)(doubleX - devinfo.XCoor), 2) + (Math.Pow((double)(doubleY - devinfo.YCoor), 2));
|
|
if (nXY > doubleXY)
|
|
{
|
|
nXY = doubleXY;
|
|
taskno = cortask;
|
|
}
|
|
|
|
}
|
|
else if (devKind == 6)//AGV
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT F_Sequence FROM T_Base_AGV_Gate WHERE (F_AGVGateDeviceIndex = ").Append(nX).Append(")");
|
|
nXY = Convert.ToInt32(dbo.GetSingle(sql.ToString()));
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT F_Sequence FROM T_Base_AGV_Gate WHERE (F_AGVGateDeviceIndex = ").Append(doubleX).Append(")");
|
|
doubleXY = Convert.ToInt32(dbo.GetSingle(sql.ToString()));
|
|
if (nXY < doubleXY)
|
|
{
|
|
return taskno;
|
|
}
|
|
else
|
|
{
|
|
return Convert.ToInt32(df[0]);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return taskno;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
//·µ»Ø×îСֵµÄÈÎÎñºÅ
|
|
return taskno;
|
|
|
|
}
|
|
else
|
|
{
|
|
#region ±éÀúÿ¸ö¹ØÁªÈÎÎñ
|
|
|
|
foreach (int cortask in df.Keys)
|
|
{
|
|
|
|
#region ¹ØÁªÖ¸Áî²»ÊǵÚÒ»¸öÖ¸Áî²»ÄÜ·¢ËÍ
|
|
int rmankind = Model.CGeneralFunction.GetManageTaskKindIndexFromMonitor(cortask);
|
|
int rman = Model.CGeneralFunction.GetManageTaskIndexfromMonitor(cortask);
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT MIN(F_MonitorIndex) AS mmi FROM dbo.T_Monitor_Task WHERE (F_ManageTaskIndex = ").Append(rman).Append(") AND (F_ManageTASKKINDINDEX = ").Append(rmankind).Append(")");
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
if ((dv[0]["mmi"] != DBNull.Value) && (dv[0]["mmi"].ToString() != cortask.ToString()))
|
|
{
|
|
return -1;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
return taskno;
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
return taskno;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
CControlError = string.Format("·¢ËÍÃüÁîµ÷ÓÃGetDoubleForkMinRouteTaskʱ£º{0},{1}", sql.ToString(), ex.StackTrace + ex.Message);
|
|
return taskno;
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
}
|
|
|
|
}
|
|
|
|
|
|
bool IFAGVGate(int devIndex)
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT F_AGVGateDeviceIndex FROM T_Base_AGV_Gate WHERE (F_AGVGateDeviceIndex = ").Append(devIndex).Append(")");
|
|
if (dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView.Count > 0)
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// ͬ¹ìÁ½¸ö¶Ñ¶â»ú×éºÏ×÷Òµ£¬Í¨¹ýÖÐת»õλ½»Ìæ×÷Òµ
|
|
/// </summary>
|
|
/// <param name="taskindex"></param>
|
|
/// <param name="ChangeStackCell"></param>
|
|
/// <param name="StackIndex"></param>
|
|
void ChangeStackCellCode(int taskindex, string ChangeStackCell, int StackIndex)
|
|
{//20120820
|
|
int[] zxy = ccf.GetCoordinatesFromMonitorTask(taskindex);
|
|
StringBuilder zxystr = new StringBuilder();
|
|
DataView dvl = new DataView(); DataView dv = new DataView();
|
|
if (zxy != null)
|
|
{
|
|
zxystr.Append((zxy[3].ToString().Length == 1 ? "0" + zxy[3].ToString() : zxy[3].ToString())).Append("-").Append(
|
|
((zxy[4].ToString().Length == 1) ? ("0" + zxy[4].ToString()) : (zxy[4].ToString()))).Append("-").Append(
|
|
((zxy[5].ToString().Length == 1) ? ("0" + zxy[5].ToString()) : (zxy[5].ToString())));
|
|
}
|
|
int laneway = 0;
|
|
dvl = dbo.ExceSQL(string.Format("SELECT F_LaneDeviceIndex FROM T_Base_LaneInfo WHERE (F_StackIndex = {0})", StackIndex)).Tables[0].DefaultView;
|
|
if (dvl.Count > 0)
|
|
{
|
|
laneway = Convert.ToInt32(dvl[0]["F_LaneDeviceIndex"]);
|
|
}
|
|
else
|
|
return;
|
|
|
|
char[] cc = new char[1] { '-' };
|
|
string[] endCell = ChangeStackCell.Split(cc);
|
|
int fid = ccf.GetManageTaskIndexfromMonitor(taskindex);
|
|
int Mankind = ccf.GetManageTaskKindIndexFromMonitor(taskindex);
|
|
//dbo.TransBegin();
|
|
try
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT F_LaneGateDeviceIndex FROM T_Base_Lane_Gate,T_Base_Device WHERE (T_Base_Lane_Gate.F_LaneGateDeviceIndex = T_Base_Device.F_DeviceIndex) and (F_ZXY = '").Append(ChangeStackCell).Append("') and F_LaneIndex=").Append(laneway);
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
sql.Remove(0, sql.Length);//20120420
|
|
sql.Append("update T_Monitor_Task set F_AheadDetect=F_AheadDetect+'").Append(";N").Append(dv[0]["F_LaneGateDeviceIndex"].ToString()).Append(";R").Append(dv[0]["F_LaneGateDeviceIndex"].ToString())
|
|
.Append("', F_NumParam4=").Append(endCell[0]).Append(",F_NumParam5=").Append(endCell[1]).Append(",F_ChangeStackCell='").Append(laneway.ToString() + "," + ChangeStackCell
|
|
).Append("',F_NumParam6=").Append(endCell[2]).Append(" where F_ManageTaskIndex=").Append(fid).Append(" and F_ManageTASKKINDINDEX=").Append(Mankind).Append(" and F_DeviceIndex=").Append(StackIndex);
|
|
dbo.ExecuteSql(sql.ToString());
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("update T_Manage_Task set FREMARK='").Append(zxystr.ToString()).Append("',FExceptionNO=").Append(Model.CGeneralFunction.TASKCHANGESTACK).Append(" where FID=").Append(fid).Append(" and F_ManageTaskKindIndex=").Append(Mankind);
|
|
dbo.ExecuteSql(sql.ToString());
|
|
}
|
|
//dbo.TransCommit();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
//dbo.TransRollback();
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
dvl.Dispose();
|
|
}
|
|
}
|
|
int GetIOControlStatus(int TaskIndex)
|
|
{
|
|
int mankind = ccf.GetManageTaskKindIndexFromMonitor(TaskIndex);
|
|
int Fid = ccf.GetManageTaskIndexfromMonitor(TaskIndex);
|
|
if (mankind == 1)
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT CONTROL_STATUS FROM IO_CONTROL WHERE (CONTROL_ID = ").Append(Fid).Append(")");
|
|
object ob = dboM.GetSingle(sql.ToString());
|
|
if (ob != null)
|
|
{
|
|
return Convert.ToInt32(ob);
|
|
}
|
|
else
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// ·µ»ØAGVË«²æµÄ¹ØÁªÕ¾Ì¨,¡°-1¡±´ú±íûÓйØÁª
|
|
/// </summary>
|
|
/// <param name="taskindex">É豸ָÁîË÷Òý</param>
|
|
/// <returns></returns>
|
|
int GetAGVCorrelIndex(int taskindex)
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT F_NumParam2 FROM T_Monitor_Task WHERE (F_MonitorIndex = ").Append(taskindex).Append(")");
|
|
object ob = dbo.GetSingle(sql.ToString());
|
|
if (ob != null)
|
|
{
|
|
int cs = Convert.ToInt32(ob);
|
|
if (cs % 2 == 0)
|
|
{
|
|
return (cs - 1);
|
|
}
|
|
else
|
|
{
|
|
return (cs + 1);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return -1;
|
|
}
|
|
}
|
|
int GetAGVCorrelConveyorIndex(int taskindex)
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT F_NumParam2 FROM T_Monitor_Task WHERE (F_MonitorIndex = ").Append(taskindex).Append(")");
|
|
object ob = dbo.GetSingle(sql.ToString());
|
|
if (ob != null)
|
|
{
|
|
int cs = Convert.ToInt32(ob);
|
|
if (cs % 2 == 0)
|
|
{
|
|
return (cs + 1);
|
|
}
|
|
else
|
|
{
|
|
return (cs - 1);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return -1;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// ·µ»ØAGVÔÚ´Ëվ̨ȡ»õµÄµ÷¶ÈÈÎÎñË÷Òý
|
|
/// </summary>
|
|
/// <param name="controltype">¿ØÖÆÈÎÎñÀàÐÍ</param>
|
|
/// <param name="stationIndex">AGVվ̨Ë÷Òý</param>
|
|
/// <returns></returns>
|
|
int GetAGVEnableDoubleForkManageTask(int controltype, int stationIndex, int agv)
|
|
{//20110412
|
|
DataView dv = new DataView();
|
|
try
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT F_MonitorIndex,T_Monitor_Task.F_ManageTaskIndex,T_Monitor_Task.F_ManageTASKKINDINDEX ").Append(
|
|
" FROM T_Monitor_Task ,T_Manage_Task where T_Monitor_Task.F_ManageTaskIndex = T_Manage_Task.FID AND ").Append(
|
|
"T_Monitor_Task.F_ManageTASKKINDINDEX = T_Manage_Task.F_ManageTaskKindIndex and FCONTROLTASKTYPE=").Append(
|
|
controltype).Append(" and F_NumParam2=").Append(stationIndex).Append(" and F_DeviceIndex=").Append(agv).Append(" and F_Status=0 and F_DeviceCommandIndex=2");
|
|
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
return Convert.ToInt32(dv[0]["F_ManageTaskIndex"]);
|
|
}
|
|
|
|
return -1;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
}
|
|
}
|
|
bool IfInSameLimitX(int fid, int mfid, int manKind)
|
|
{
|
|
DataView dv = new DataView(); DataView dv1 = new DataView();
|
|
try
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT F_ForwardLimitX,F_BackLimitX,FEndCol FROM T_Manage_Task,T_Base_LaneInfo WHERE T_Manage_Task.FLANEWAY = T_Base_LaneInfo.F_LaneDeviceIndex and (F_ManageTaskKindIndex = ").Append(manKind).Append(") AND (FID = ").Append(fid).Append(")");
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count == 0)
|
|
{
|
|
return false;
|
|
}
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT F_ForwardLimitX,F_BackLimitX,FEndCol FROM T_Manage_Task,T_Base_LaneInfo WHERE T_Manage_Task.FLANEWAY = T_Base_LaneInfo.F_LaneDeviceIndex and (F_ManageTaskKindIndex = ").Append(manKind).Append(") AND (FID = ").Append(mfid).Append(")");
|
|
dv1 = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv1.Count == 0)
|
|
{
|
|
return false;
|
|
}
|
|
if ((dv[0]["FEndCol"].ToString() == dv[0]["F_ForwardLimitX"].ToString()) && (dv1[0]["F_ForwardLimitX"].ToString() == dv1[0]["FEndCol"].ToString()))
|
|
{
|
|
return true;
|
|
}
|
|
if ((dv[0]["FEndCol"].ToString() == dv[0]["F_BackLimitX"].ToString()) && (dv1[0]["F_BackLimitX"].ToString() == dv1[0]["FEndCol"].ToString()))
|
|
{
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
dv1.Dispose();
|
|
}
|
|
}
|
|
int GetAGVFromConveyorDoubleForkGetGoodManageTask(int controltype, int stationIndex, int agv)
|
|
{
|
|
DataView dv0 = new DataView();
|
|
DataView dv = new DataView();
|
|
try
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT T_Monitor_Task.F_ManageTaskIndex,F_MonitorIndex,T_Manage_Task.F_ManageTaskKindIndex ").Append(
|
|
" FROM T_Monitor_Task ,T_Manage_Task where T_Monitor_Task.F_ManageTaskIndex = T_Manage_Task.FID AND ").Append(
|
|
"T_Monitor_Task.F_ManageTASKKINDINDEX = T_Manage_Task.F_ManageTaskKindIndex and FCONTROLTASKTYPE=").Append(
|
|
controltype).Append(" and F_NumParam2=").Append(stationIndex).Append(" and F_DeviceIndex=").Append(agv).Append(" and F_Status=0 and F_DeviceCommandIndex=2 order by F_MonitorIndex asc");//20110412
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
for (int i = 0; i < dv.Count; i++)
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
if (CStaticClass.DBFactory == "OracleDBFactory")
|
|
{//20151120µ÷¶ÈϵͳoracleµÄÌØÊâÓï¾ä
|
|
sql.Append("SELECT F_MonitorIndex ").Append(" FROM T_Monitor_Task where rownum=1 and T_Monitor_Task.F_ManageTaskIndex = ")
|
|
.Append(dv[i]["F_ManageTaskIndex"].ToString()).Append(
|
|
" and F_ManageTASKKINDINDEX = ").Append(dv[i]["F_ManageTaskKindIndex"].ToString()).Append(" order by F_MonitorIndex asc");
|
|
}
|
|
else
|
|
{//20151120µ÷¶ÈϵͳSQLServerµÄÌØÊâÓï¾ä
|
|
sql.Append("SELECT top 1 F_MonitorIndex ").Append(" FROM T_Monitor_Task where T_Monitor_Task.F_ManageTaskIndex = ")
|
|
.Append(dv[i]["F_ManageTaskIndex"].ToString()).Append(
|
|
" and F_ManageTASKKINDINDEX = ").Append(dv[i]["F_ManageTaskKindIndex"].ToString()).Append(" order by F_MonitorIndex asc");
|
|
}
|
|
dv0 = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;//20151120µ÷¶ÈϵͳoracleµÄÌØÊâÓï¾ä
|
|
if (dv0[0]["F_MonitorIndex"].ToString() == dv[i]["F_MonitorIndex"].ToString())
|
|
{
|
|
|
|
return Convert.ToInt32(dv[i]["F_ManageTaskIndex"]);
|
|
}
|
|
}
|
|
}
|
|
|
|
return -1;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
dv0.Dispose();
|
|
}
|
|
}
|
|
bool IFHaveSameEndDevice(int fid, int CorrelFid, int mti)
|
|
{
|
|
DataView dv0 = new DataView(); DataView dv = new DataView();
|
|
try
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT FENDDEVICE, FENDCELL, FUseAwayFork FROM T_Manage_Task WHERE (F_ManageTaskKindIndex = ").Append(mti).Append(") AND (FID = ").Append(fid).Append(")");
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT FENDDEVICE, FENDCELL, FUseAwayFork FROM T_Manage_Task WHERE (F_ManageTaskKindIndex = ").Append(mti).Append(") AND (FID = ").Append(CorrelFid).Append(")");
|
|
dv0 = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv0.Count > 0)
|
|
{
|
|
if ((dv[0]["FENDDEVICE"].ToString() == dv0[0]["FENDDEVICE"].ToString()) && (dv[0]["FENDDEVICE"].ToString() == "28001") && (Math.Abs(Convert.ToInt32(dv[0]["FENDCELL"]) - Convert.ToInt32(dv0[0]["FENDCELL"])) == 1))//20110412
|
|
{
|
|
if ((Convert.ToInt32(dv[0]["FENDCELL"]) > Convert.ToInt32(dv0[0]["FENDCELL"])) && (Convert.ToInt32(dv[0]["FUseAwayFork"]) > Convert.ToInt32(dv0[0]["FUseAwayFork"])))
|
|
{
|
|
return true;
|
|
}
|
|
if ((Convert.ToInt32(dv[0]["FENDCELL"]) < Convert.ToInt32(dv0[0]["FENDCELL"])) && (Convert.ToInt32(dv[0]["FUseAwayFork"]) < Convert.ToInt32(dv0[0]["FUseAwayFork"])))
|
|
{
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
dv0.Dispose();
|
|
}
|
|
}
|
|
void UpdateAheadDetectUnallow(StringBuilder aheadUnallow, int taskindex)
|
|
{
|
|
#region 20110505Ôö¼ÓµÄÐÅÏ¢Ìáʾ
|
|
int rec = 0;
|
|
if (aheadUnallow.Length > 0)
|
|
{
|
|
rec = dbo.ExecuteSql(string.Format("UPDATE T_Monitor_Task SET F_ErrorCode ='{0}' WHERE F_MonitorIndex ={1} and F_ErrorCode <>'{0}'", aheadUnallow.ToString(), taskindex));
|
|
}
|
|
else
|
|
{
|
|
rec = dbo.ExecuteSql(string.Format("UPDATE T_Monitor_Task SET F_ErrorCode ='' WHERE F_MonitorIndex ={1} and F_ErrorCode <>''", aheadUnallow.ToString(), taskindex));
|
|
}
|
|
if (rec > 0)
|
|
{
|
|
CDataChangeEventArgs cea = new CDataChangeEventArgs(null, null);
|
|
OnDataChange("·¢ËÍÌáǰ¼ì²âʱ£¬Òì³£", cea);
|
|
|
|
}
|
|
#endregion
|
|
}
|
|
/// <summary>
|
|
/// Èç¹ûÊǵ¹²æ»õ룬ÄÇËüºóÖ´ÐÐ
|
|
/// </summary>
|
|
/// <param name="TaskIndex"></param>
|
|
/// <returns></returns>
|
|
bool IfChangeForkCell_LastRun(int TaskIndex)
|
|
{//20110505
|
|
DataView dv = new DataView();
|
|
try
|
|
{
|
|
|
|
int laneway = ccf.GetLaneWayFromLaneInfo(ccf.GetDeviceindexFromMonitor(TaskIndex));
|
|
int[] zxy = ccf.GetCoordinatesFromMonitorTask(TaskIndex);
|
|
string zxystr = (zxy[3].ToString().Length == 1 ? "0" + zxy[0].ToString() : zxy[3].ToString()) + "-" +
|
|
((zxy[4].ToString().Length == 1) ? ("0" + zxy[4].ToString()) : (zxy[4].ToString())) + "-" +
|
|
((zxy[5].ToString().Length == 1) ? ("0" + zxy[5].ToString()) : (zxy[5].ToString()));
|
|
int lanedev = ccf.GetChangeCellStationFromLaneGate(laneway, zxystr);
|
|
|
|
dv = dbo.ExceSQL(string.Format("SELECT F_ChangeForkCell FROM T_Base_LaneInfo WHERE F_LaneDeviceIndex={0} and (F_ChangeForkCell like '%{1}%' or F_ChangeForkCell like '%{2}%')", laneway, zxystr, lanedev)).Tables[0].DefaultView;
|
|
if (dv.Count > 0)//µ¹¿â»õλµÄÈÎÎñºóÖ´ÐÐ
|
|
{
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
|
|
}
|
|
|
|
}
|
|
/// <summary>
|
|
/// ·ÖÅäʵ¼Ê¹¤×÷µÄ¶Ñ¶â»úÉ豸Ë÷Òý20111020
|
|
/// </summary>
|
|
/// <param name="deviceIndex">ÐéÄâ¶Ñ¶â»úÉ豸Ë÷Òý</param>
|
|
/// <param name="taskIndex">É豸ָÁîË÷Òý</param>
|
|
/// <param name="manKind">µ÷¶ÈÈÎÎñÀàÐÍ</param>
|
|
/// <param name="fid">µ÷¶ÈÈÎÎñË÷Òý</param>
|
|
bool AssignStackNo(int deviceIndex, int taskIndex, int manKind, int fid)
|
|
{//20120820
|
|
DataView dv = new DataView();
|
|
Model.MDevice devinfo; int resDev = 0;
|
|
try
|
|
{
|
|
int Xcoor = Model.CGeneralFunction.GetXCoorFromMonitor(taskIndex, deviceIndex, ccf.GetDeviceOrderFromMonitor(taskIndex));
|
|
int Zcoor = Model.CGeneralFunction.GetZCoorFromMonitor(taskIndex, deviceIndex, ccf.GetDeviceOrderFromMonitor(taskIndex));
|
|
int XcoorS = Model.CGeneralFunction.GetXCoorFromMonitor(taskIndex, deviceIndex, 5);
|
|
int ZcoorS = Model.CGeneralFunction.GetZCoorFromMonitor(taskIndex, deviceIndex, 5);
|
|
int sno = 0; bool IfCombinedWork = false;
|
|
GetSpecialStackNo(deviceIndex, Zcoor, Xcoor, ZcoorS, XcoorS, out sno, out IfCombinedWork);
|
|
//ÏÈ¿¼ÂÇÌØÊâÇé¿ö20111226
|
|
if (IfCombinedWork == true)
|
|
{
|
|
//Á½¸ö¶Ñ¶â»ú×éºÏ½»Ìæ×÷Òµ
|
|
string ChangeStackCell = GetChangeStackCell(deviceIndex);
|
|
if (ChangeStackCell != "")
|
|
{
|
|
|
|
ChangeStackCellCode(taskIndex, ChangeStackCell, deviceIndex);
|
|
SetStackNo(deviceIndex, sno, manKind, fid);
|
|
return true;
|
|
}
|
|
else
|
|
{//20120820ûÓпÕÏеÄÁ½¸ö¶Ñ¶â»ú¹«ÓõĽ»½Ó»õλ
|
|
return false;
|
|
}
|
|
}
|
|
//È»ºóÆäÓàÇé¿ö¸ù¾Ý×ÜÁÐÊýÕÛÖзÖÅ䏸Á½¸ö¶Ñ¶â»ú
|
|
resDev = GetPRIStackNo(deviceIndex, Zcoor, Xcoor, ZcoorS, XcoorS);
|
|
|
|
devinfo = Model.CGetInfo.GetDeviceInfo(resDev);
|
|
if (devinfo.RunState == 0 && ccf.GetManTaskReserve(resDev) <= 0 && ccf.GetDeviceLockedState(resDev) == 0)
|
|
{//¿ÕÏС¢ÎÞÈÎÎñÖ´ÐС¢ÎÞ¹ÜÀíÈÎÎñÔ¤Ô¼Ëø
|
|
SetStackNo(deviceIndex, resDev, manKind, fid);
|
|
return true;
|
|
}
|
|
else
|
|
{//¸ù¾Ý35001µ±Ç°Î»ÖúÍÕýÔÚÖ´ÐеÄÈÎÎñµÄÄ¿±êλÖÿ¼ÂÇÊÇ·ñ·ÖÅä35002
|
|
resDev = devinfo.MutexStack;
|
|
devinfo = Model.CGetInfo.GetDeviceInfo(resDev);
|
|
if (devinfo.RunState == 0 && ccf.GetManTaskReserve(resDev) <= 0 && ccf.GetDeviceLockedState(resDev) == 0)
|
|
{
|
|
sql = new StringBuilder(string.Format("SELECT F_DeviceCommandIndex,F_NumParam1, F_NumParam2, F_NumParam3, F_NumParam4, F_NumParam5, F_NumParam6 FROM T_Monitor_Task WHERE (F_Status > 0) AND (F_DeviceIndex = {0})", devinfo.MutexStack));
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
if (dv[0]["F_DeviceCommandIndex"].ToString() == "4")//È¡»õ
|
|
{
|
|
if ((GetBarcodeCoor(Convert.ToInt32(dv[0]["F_NumParam2"]), Convert.ToInt32(dv[0]["F_NumParam1"])) + StackMutexXCoor) <= GetBarcodeCoor(Xcoor, Zcoor))
|
|
{
|
|
SetStackNo(deviceIndex, resDev, manKind, fid);
|
|
return true;
|
|
}
|
|
}
|
|
if (dv[0]["F_DeviceCommandIndex"].ToString() == "5")//ËÍ»õ
|
|
{
|
|
if ((GetBarcodeCoor(Convert.ToInt32(dv[0]["F_NumParam5"]), Convert.ToInt32(dv[0]["F_NumParam4"])) + StackMutexXCoor) <= GetBarcodeCoor(Xcoor, Zcoor))
|
|
{
|
|
SetStackNo(deviceIndex, resDev, manKind, fid);
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{//(resDev - devinfo.MutexStack)É豸±àºÅСµÄÉ豸£¬Êµ¼ÊÐÐ×ßλÖõÄ×ø±êֵҲС
|
|
int xcMutex = (resDev - devinfo.MutexStack) * (GetBarcodeCoor(Xcoor, Zcoor) - Model.CGetInfo.GetDeviceInfo(devinfo.MutexStack).XCoor);//20120513
|
|
int xMutex = Math.Abs(GetBarcodeCoor(Xcoor, Zcoor) - Model.CGetInfo.GetDeviceInfo(devinfo.MutexStack).XCoor);
|
|
int xDev = Math.Abs(GetBarcodeCoor(Xcoor, Zcoor) - Model.CGetInfo.GetDeviceInfo(resDev).XCoor);
|
|
devinfo = Model.CGetInfo.GetDeviceInfo(devinfo.MutexStack);//20120513
|
|
if ((xDev < xMutex) || ((devinfo.RunState >= 2) && (devinfo.RunState <= 4) && (xcMutex > StackMutexXCoor)))//20120513
|
|
{
|
|
SetStackNo(deviceIndex, resDev, manKind, fid);
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
}
|
|
}
|
|
|
|
private string GetChangeStackCell(int stack)
|
|
{//20120820¸ù¾ÝÁ½¸ö¶Ñ¶â»úµÄ×éºÏÈÎÎñÅжÏÄĸö¸ü»»¶Ñ¶â»úվ̨¿ÕÏÐ
|
|
DataView dv = new DataView();
|
|
int fids = 0; string cell = ""; int minfids = int.MaxValue;
|
|
try
|
|
{
|
|
dv = dbo.ExceSQL(string.Format("SELECT F_LaneDeviceIndex, F_ChangeStackCell FROM T_Base_LaneInfo where F_StackIndex={0}", stack)).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
char[] cc = new char[1] { ';' };
|
|
string[] sp = dv[0]["F_ChangeStackCell"].ToString().Split(cc);
|
|
string ChangeStackCell = string.Empty;
|
|
int lanedev = 0;
|
|
for (int i = 0; i < sp.GetLength(0); i++)
|
|
{//T_Monitor_Task±íÐÂÔö F_ChangeStackCell "18001,01-30-02"
|
|
int.TryParse(sp[i], out lanedev);
|
|
if (lanedev > 0)
|
|
{//T_Base_LaneInfo±íµÄ F_ChangeStackCell ºÍF_ChangeForkCell×ֶοÉÒÔÌîдµ¹²æ»õλ¶ÔÓ¦ÐéÄâվ̨µÄÉ豸Ë÷Òý
|
|
sp[i] = ccf.GetChangeCellFromLaneGate(Convert.ToInt32(dv[0]["F_LaneDeviceIndex"]), lanedev);
|
|
}
|
|
ChangeStackCell = dv[0]["F_LaneDeviceIndex"].ToString() + "," + sp[i];
|
|
fids = Convert.ToInt32(dbo.GetSingle(string.Format("SELECT count(distinct F_ManageTaskIndex) as fids FROM T_Monitor_Task where F_ChangeStackCell='{0}'", ChangeStackCell)));
|
|
if (fids < minfids)
|
|
{
|
|
minfids = fids;
|
|
cell = sp[i];
|
|
}
|
|
}
|
|
}
|
|
|
|
return cell;
|
|
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
}
|
|
}
|
|
void SetStackNo(int dummyStackno, int stackno, int manKind, int fid)
|
|
{
|
|
//20111226¿¼Âǵ÷ÕûÅäÌ×µÄվ̨ºÍÌáǰ¼ì²â£¬35001-32038£»35002-32036
|
|
if (StackIfExitTask(stackno) == true) return;
|
|
|
|
object[] ob = new object[4] { stackno, manKind, fid, dummyStackno };
|
|
dbo.ExecuteSql(string.Format("UPDATE T_Monitor_Task SET F_DeviceIndex ={0} WHERE (F_ManageTASKKINDINDEX = {1}) AND (F_ManageTaskIndex = {2}) AND (F_DeviceIndex = {3})", ob));
|
|
dbo.ExecuteSql(string.Format("UPDATE T_Monitor_Task SET F_AheadDetect =replace(F_AheadDetect,{3},{0}) WHERE (F_ManageTASKKINDINDEX = {1}) AND (F_ManageTaskIndex = {2}) ", ob));
|
|
}
|
|
|
|
public int GetMonitorStartStationfromMonitor(int MonitorIdx)
|
|
{
|
|
DataView dv = new DataView();
|
|
try
|
|
{
|
|
//20100108
|
|
//20101124
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT F_NumParam1 FROM T_Monitor_Task WHERE (F_MonitorIndex = ").Append(MonitorIdx).Append(")");
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
return Convert.ToInt32(dv[0]["F_NumParam1"]);
|
|
}
|
|
else
|
|
{
|
|
return -1;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{//20100108
|
|
throw ex;
|
|
}
|
|
finally
|
|
{//20100108
|
|
dv.Dispose();
|
|
}
|
|
}
|
|
|
|
public int GetMonitorEndStationfromMonitor(int MonitorIdx)
|
|
{
|
|
DataView dv = new DataView();
|
|
try
|
|
{
|
|
// HSYL F_NumParam4 = 0 £¬²éÕÒÏÂÒ»¸öËÍ»õÈÎÎñµÄ F_NumParam1
|
|
int fid = ccf.GetManageTaskIndexfromMonitor(MonitorIdx);
|
|
int device = ccf.GetDeviceindexFromMonitor(MonitorIdx);
|
|
if (fid > 0 && device > 0)
|
|
{
|
|
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT F_NumParam1 FROM T_Monitor_Task WHERE F_DeviceCommandIndex = 3 and F_DeviceIndex = ").Append(device).Append(" and F_ManageTaskIndex = ").Append(fid);
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
return Convert.ToInt32(dv[0]["F_NumParam1"]);
|
|
}
|
|
else
|
|
{
|
|
return -1;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return -1;
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{//20100108
|
|
throw ex;
|
|
}
|
|
finally
|
|
{//20100108
|
|
dv.Dispose();
|
|
}
|
|
}
|
|
|
|
// 202410 µÃµ½Ö¸¶¨´©Ëó³µÕýÔÚÖ´ÐÐÖУ¨ÒÑ·¢ËÍ¡¢ÔËÐС¢±¨¾¯£©ÈÎÎñµÄÄ¿µÄվ̨ºÅ£»Ã»ÓÐÖ´ÐÐÖÐÈÎÎñ·µ»Ø0
|
|
void GetStackRunRGVZcoor(int StackdeviceIndex, out int Xcoor)
|
|
{
|
|
DataView dv = new DataView();
|
|
try
|
|
{
|
|
Xcoor = 0;
|
|
sql = new StringBuilder(string.Format("SELECT F_DeviceCommandIndex,F_NumParam1,F_NumParam4 FROM T_Monitor_Task WHERE (F_Status > 0) AND (F_DeviceIndex = {0})", StackdeviceIndex));
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
if ((dv[0]["F_DeviceCommandIndex"].ToString() == "2") || (dv[0]["F_DeviceCommandIndex"].ToString() == "7")) //È¡»õ,Ô˶¯
|
|
{
|
|
Xcoor = Convert.ToInt32(dv[0]["F_NumParam1"]);
|
|
}
|
|
else if (dv[0]["F_DeviceCommandIndex"].ToString() == "3") //ËÍ»õ
|
|
{
|
|
Xcoor = Convert.ToInt32(dv[0]["F_NumParam1"]);
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
}
|
|
|
|
}
|
|
void GetStackRunX_Zcoor(int StackdeviceIndex, out int Xcoor, out int Zcoor)
|
|
{//20111020
|
|
DataView dv = new DataView();
|
|
try
|
|
{
|
|
Xcoor = 0;
|
|
Zcoor = 1;
|
|
sql = new StringBuilder(string.Format("SELECT F_DeviceCommandIndex,F_NumParam1, F_NumParam2, F_NumParam3, F_NumParam4, F_NumParam5, F_NumParam6 FROM T_Monitor_Task WHERE (F_Status > 0) AND (F_DeviceIndex = {0})", StackdeviceIndex));
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
if ((dv[0]["F_DeviceCommandIndex"].ToString() == "2") || (dv[0]["F_DeviceCommandIndex"].ToString() == "4"))//½«È¡£¬È¡»õ
|
|
{
|
|
Zcoor = Convert.ToInt32(dv[0]["F_NumParam1"]);
|
|
Xcoor = Convert.ToInt32(dv[0]["F_NumParam2"]);
|
|
}
|
|
else if (dv[0]["F_DeviceCommandIndex"].ToString() == "5")//ËÍ»õ
|
|
{
|
|
Zcoor = Convert.ToInt32(dv[0]["F_NumParam4"]);
|
|
Xcoor = Convert.ToInt32(dv[0]["F_NumParam5"]);
|
|
|
|
}
|
|
|
|
}
|
|
//else
|
|
//{
|
|
|
|
// int ManTaskReserve = ccf.GetManTaskReserve(StackdeviceIndex);
|
|
// if (ManTaskReserve > 0)
|
|
// {
|
|
// int mti =Convert.ToInt32( ManTaskReserve.ToString().Substring(0, 1));
|
|
// int fid = Convert.ToInt32(ManTaskReserve.ToString().Substring(1));
|
|
// sql = new StringBuilder(string.Format("SELECT F_DeviceIndex,F_DeviceCommandIndex,F_NumParam1, F_NumParam2, F_NumParam3, F_NumParam4, F_NumParam5, F_NumParam6 FROM T_Monitor_Task WHERE (F_ManageTASKKINDINDEX={0}) AND (F_ManageTaskIndex = {1}) order by F_MonitorIndex asc", mti, fid));
|
|
// dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
// if (dv.Count > 0)
|
|
// {
|
|
// if (dv[0]["F_DeviceIndex"].ToString() == StackdeviceIndex.ToString())
|
|
// {
|
|
// if ((dv[0]["F_DeviceCommandIndex"].ToString() == "2") || (dv[0]["F_DeviceCommandIndex"].ToString() == "4"))//½«È¡£¬È¡»õ
|
|
// {
|
|
// Zcoor = Convert.ToInt32(dv[0]["F_NumParam1"]);
|
|
// Xcoor = Convert.ToInt32(dv[0]["F_NumParam2"]);
|
|
// }
|
|
// else if (dv[0]["F_DeviceCommandIndex"].ToString() == "5")//ËÍ»õ
|
|
// {
|
|
// Zcoor = Convert.ToInt32(dv[0]["F_NumParam4"]);
|
|
// Xcoor = Convert.ToInt32(dv[0]["F_NumParam5"]);
|
|
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
//}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
}
|
|
|
|
}
|
|
void GetStackRunReserveX_Zcoor(int StackdeviceIndex, out int Xcoor, out int Zcoor)
|
|
{//20111020
|
|
Xcoor = 0;
|
|
Zcoor = 1; DataView dv = new DataView();
|
|
try
|
|
{
|
|
int ManTaskReserve = ccf.GetManTaskReserve(StackdeviceIndex);
|
|
if (ManTaskReserve > 0)
|
|
{
|
|
int mti = Convert.ToInt32(ManTaskReserve.ToString().Substring(0, 1));
|
|
int fid = Convert.ToInt32(ManTaskReserve.ToString().Substring(1));
|
|
sql = new StringBuilder(string.Format("SELECT F_DeviceIndex,F_DeviceCommandIndex,F_NumParam1, F_NumParam2, F_NumParam3, F_NumParam4, F_NumParam5, F_NumParam6 FROM T_Monitor_Task WHERE (F_ManageTASKKINDINDEX={0}) AND (F_ManageTaskIndex = {1}) order by F_MonitorIndex asc", mti, fid));
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
if (dv[0]["F_DeviceIndex"].ToString() == StackdeviceIndex.ToString())
|
|
{
|
|
if ((dv[0]["F_DeviceCommandIndex"].ToString() == "2") || (dv[0]["F_DeviceCommandIndex"].ToString() == "4"))//½«È¡£¬È¡»õ
|
|
{
|
|
Zcoor = Convert.ToInt32(dv[0]["F_NumParam1"]);
|
|
Xcoor = Convert.ToInt32(dv[0]["F_NumParam2"]);
|
|
}
|
|
else if (dv[0]["F_DeviceCommandIndex"].ToString() == "5")//ËÍ»õ
|
|
{
|
|
Zcoor = Convert.ToInt32(dv[0]["F_NumParam4"]);
|
|
Xcoor = Convert.ToInt32(dv[0]["F_NumParam5"]);
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
}
|
|
|
|
}
|
|
/// <summary>
|
|
/// ²åÈë±ÜÈÃÖ¸Áî
|
|
/// </summary>
|
|
/// <param name="stackno">±ÜÈöѶâ»ú</param>
|
|
/// <param name="order">Ö¸Áî</param>
|
|
/// <param name="Barcodecoor">±ÜÈõ½´ïµÄÌõÂë×ø±ê</param>
|
|
/// <param name="layerhigh">±ÜÈöѶâ»úµÄ»õÎï²ã¸ß¶È</param>
|
|
void InsertStackMutexOrder(int stackno, int order, int Barcodecoor, int layerhigh)
|
|
{//20111020
|
|
DataView dv = new DataView();
|
|
try
|
|
{
|
|
dv = dbo.ExceSQL("SELECT MAX(BarcodeCoor) AS maxcoor, MIN(BarcodeCoor) AS mincoor FROM T_Base_BarcodeCoor").Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
if (Barcodecoor > Convert.ToInt32(dv[0]["maxcoor"]))
|
|
{
|
|
Barcodecoor = Convert.ToInt32(dv[0]["maxcoor"]);
|
|
}
|
|
if (Barcodecoor < Convert.ToInt32(dv[0]["mincoor"]))
|
|
{
|
|
Barcodecoor = Convert.ToInt32(dv[0]["mincoor"]);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return;
|
|
}
|
|
if (order == 2 || order == 4)
|
|
{
|
|
if (CStaticClass.GetDevicePhotoelectric(stackno, 0) == 0)//20120110
|
|
{
|
|
order = 2;
|
|
|
|
}
|
|
else
|
|
{
|
|
order = 1;
|
|
}
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
if (CStaticClass.GetDevicePhotoelectric(stackno, 0) == 1)//20120110
|
|
{
|
|
order = 3;
|
|
|
|
}
|
|
else
|
|
{
|
|
order = 1;
|
|
}
|
|
|
|
}
|
|
int zc = 0, xc = 0, yc = 0, zc1 = 0, xc1 = 0, yc1 = 0;
|
|
if (stackno == 35001)
|
|
{
|
|
sql.Clear();
|
|
if (CStaticClass.DBFactory == "OracleDBFactory")
|
|
{//20151120µ÷¶ÈϵͳoracleµÄÌØÊâÓï¾ä
|
|
sql.Append(string.Format("SELECT ABS(MIN(BarcodeCoor - {0})) AS Expr1, XCoor, ZCoor FROM T_Base_BarcodeCoor where rownum=1 and BarcodeCoor<={0} and layerhigh<={1} and (brorder=0 or brorder={2}) GROUP BY XCoor, ZCoor ORDER BY Expr1", Barcodecoor, layerhigh, order));
|
|
}
|
|
else
|
|
{//20151120µ÷¶ÈϵͳSQLServerµÄÌØÊâÓï¾ä
|
|
sql.Append(string.Format("SELECT TOP 1 ABS(MIN(BarcodeCoor - {0})) AS Expr1, XCoor, ZCoor FROM T_Base_BarcodeCoor where BarcodeCoor<={0} and layerhigh<={1} and (brorder=0 or brorder={2}) GROUP BY XCoor, ZCoor ORDER BY Expr1", Barcodecoor, layerhigh, order));
|
|
}
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;//20151120µ÷¶ÈϵͳoracleµÄÌØÊâÓï¾ä
|
|
}
|
|
else
|
|
{
|
|
sql.Clear();
|
|
if (CStaticClass.DBFactory == "OracleDBFactory")
|
|
{//20151120µ÷¶ÈϵͳoracleµÄÌØÊâÓï¾ä
|
|
sql.Append(string.Format("SELECT ABS(MIN(BarcodeCoor - {0})) AS Expr1, XCoor, ZCoor FROM T_Base_BarcodeCoor where rownum=1 and BarcodeCoor>={0} and layerhigh<={1} and (brorder=0 or brorder={2}) GROUP BY XCoor, ZCoor ORDER BY Expr1", Barcodecoor, layerhigh, order));
|
|
}
|
|
else
|
|
{//20151120µ÷¶ÈϵͳSQLServerµÄÌØÊâÓï¾ä
|
|
sql.Append(string.Format("SELECT TOP 1 ABS(MIN(BarcodeCoor - {0})) AS Expr1, XCoor, ZCoor FROM T_Base_BarcodeCoor where BarcodeCoor>={0} and layerhigh<={1} and (brorder=0 or brorder={2}) GROUP BY XCoor, ZCoor ORDER BY Expr1", Barcodecoor, layerhigh, order));
|
|
}
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;//20151120µ÷¶ÈϵͳoracleµÄÌØÊâÓï¾ä
|
|
|
|
}
|
|
|
|
if (dv.Count > 0)
|
|
{
|
|
|
|
if (order == 2)
|
|
{
|
|
zc = Convert.ToInt32(dv[0]["ZCoor"]);
|
|
xc = Convert.ToInt32(dv[0]["XCoor"]);
|
|
if (xc == 51) xc = 52;//20120110
|
|
if (xc <= 5)
|
|
{
|
|
zc = 2;
|
|
xc = 2;
|
|
}
|
|
yc = 1;
|
|
if (xc == 52) zc = 1;
|
|
}
|
|
else
|
|
{
|
|
zc1 = Convert.ToInt32(dv[0]["ZCoor"]);
|
|
xc1 = Convert.ToInt32(dv[0]["XCoor"]);
|
|
if (xc1 == 51) xc1 = 52;//20120110
|
|
if (xc1 <= 5)
|
|
{
|
|
zc1 = 2;
|
|
xc1 = 2;
|
|
}
|
|
yc1 = 1;
|
|
|
|
if (xc1 == 52) zc1 = 2;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (order != 1)
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
dv = dbo.ExceSQL(string.Format("select F_MonitorIndex from T_Monitor_Task where F_DeviceIndex={0} and F_TxtParam='brbrbr'", stackno)).Tables[0].DefaultView;
|
|
if (dv.Count <= 0)
|
|
{
|
|
int hidx = ccf.GetTempManageIdx();
|
|
int hmindx = ccf.GetMonitorIndex(hidx, 2);
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("insert into T_Monitor_Task(F_MonitorTaskLevel,F_RouteID,F_ManageTaskIndex,F_ManageTaskKindIndex,F_MonitorIndex,").
|
|
Append("F_DeviceIndex,F_DeviceCommandIndex,F_NumParam1,F_NumParam2,F_NumParam3,F_NumParam4,F_NumParam5,F_NumParam6,F_TxtParam,F_AheadDetect) ").
|
|
Append("values(2,").Append(ccf.GetRouteIDsub(stackno)).Append(",").
|
|
Append(hidx).Append(",4,").Append(hmindx).Append(",").Append(stackno).
|
|
Append(",").Append(order).Append(",").Append(zc).Append(",").Append(xc).Append(",").Append(yc).Append(",").Append(zc1).Append(",").Append(xc1).Append(",").Append(yc1).Append(",'brbrbr','-')");
|
|
dbo.ExecuteSql(sql.ToString());
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
CControlError = string.Format("²åÈ뻥³â¶Ñ¶â»ú±ÜÈÃÖ¸Áîʱ£º{0}", ex.StackTrace + ex.Message);
|
|
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
}
|
|
}
|
|
int GetNowDevice(int taskindex)
|
|
{
|
|
DataView dvb = new DataView();
|
|
try
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT F_NumParam1 FROM T_Monitor_Task WHERE (F_MonitorIndex = ").Append(taskindex).Append(")");
|
|
dvb = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dvb.Count > 0)
|
|
{
|
|
return Convert.ToInt32(dvb[0]["F_NumParam1"]);
|
|
}
|
|
else
|
|
{
|
|
return 0;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
dvb.Dispose();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// É豸ָÁî¶ÓÁÐÖÐÊÇ·ñ´æÔÚ¿ÉÒÔ¹ØÁª¶Ñ¶â»úµÄÈ¡»õÃüÁî
|
|
/// </summary>
|
|
/// <param name="Stackdev">¶Ñ¶â»ú</param>
|
|
/// <param name="zxy">È¡»õ»õλ</param>
|
|
/// <param name="Correlzxy">¹ØÁª»õλ</param>
|
|
/// <param name="nottaskindex">´Ë´ÎÉ豸ָÁîË÷Òý</param>
|
|
/// <returns></returns>
|
|
bool IFHaveStackCorrelGetCommand(int Stackdev, string zxy, string Correlzxy, int nottaskindex)
|
|
{
|
|
DataView dv = new DataView();
|
|
char[] cc = new char[1] { '-' };
|
|
string[] zxystr = zxy.Split(cc);
|
|
string[] zxystrCorrl = Correlzxy.Split(cc);
|
|
try
|
|
{
|
|
int laneway = ccf.GetLaneWayNoFromStack(Stackdev);
|
|
int corrdev = 0;
|
|
dv = dbo.ExceSQL(string.Format("SELECT F_LaneGateDeviceIndex FROM T_Base_Lane_Gate WHERE (F_LaneIndex = {0}) AND (F_ZXY = '{1}')", laneway, Correlzxy)).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
corrdev = Convert.ToInt32(dv[0]["F_LaneGateDeviceIndex"]);
|
|
}
|
|
|
|
object[] ob = new object[8] { Stackdev, nottaskindex, Convert.ToInt32(zxystr[0]), Convert.ToInt32(zxystr[1]),Convert.ToInt32(zxystr[2]),
|
|
Convert.ToInt32(zxystrCorrl[0]),Convert.ToInt32(zxystrCorrl[1]),Convert.ToInt32(zxystrCorrl[2]) };
|
|
dv = dbo.ExceSQL(string.Format("SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_DeviceIndex = {0}) AND (F_DeviceCommandIndex =4) AND (F_MonitorIndex<>{1}) and (((F_NumParam1 = {2}) AND (F_NumParam2 = {3}) AND (F_NumParam3 = {4})) or ((F_NumParam1 = {5}) AND (F_NumParam2 = {6}) AND (F_NumParam3 = {7})))", ob)).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{//20120906²»ÊÇÒѾµÈ´ý¶à²æ¹ØÁªÈÎÎñ
|
|
sql.Remove(0, sql.Length);//ÊäËÍ»úµÈ´ýË«²æÈÎÎñºÅµÈÓڶѶâ»úÈ¡»õTaskIdx
|
|
sql.Append("SELECT F_TaskIndex,F_DeviceIndex,F_Remark FROM T_Base_PLC_Ask WHERE (F_TaskIndex =").Append(Convert.ToInt32(dv[0]["F_MonitorIndex"])).Append(") AND (F_DeviceIndex=").Append(corrdev).Append(")");
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
cc = null;
|
|
zxystrCorrl = null;
|
|
zxystr = null;
|
|
}
|
|
}
|
|
int GetDeviceOrderFromManTaskReserve(int manTaskReserve, int deviceIndex)
|
|
{
|
|
DataView dv = new DataView();
|
|
try
|
|
{
|
|
int mti = Convert.ToInt32(manTaskReserve.ToString().Substring(0, 1));
|
|
int fid = Convert.ToInt32(manTaskReserve.ToString().Substring(1));
|
|
dv = dbo.ExceSQL(string.Format("SELECT F_DeviceIndex,F_DeviceCommandIndex FROM T_Monitor_Task WHERE (F_ManageTASKKINDINDEX = {0}) AND (F_ManageTaskIndex = {1}) order by F_MonitorIndex asc", mti, fid)).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
if (deviceIndex == Convert.ToInt32(dv[0]["F_DeviceIndex"]))
|
|
{
|
|
return Convert.ToInt32(dv[0]["F_DeviceCommandIndex"]);
|
|
}
|
|
else
|
|
{
|
|
return -1;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return -1;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
}
|
|
}
|
|
int GetLayerHigh(int Zcoor, int Xcoor)
|
|
{
|
|
DataView dv = new DataView();
|
|
try
|
|
{
|
|
dv = dbo.ExceSQL(string.Format("SELECT LayerHigh FROM T_Base_BarcodeCoor WHERE (ZCoor = {0}) AND (XCoor = {1})", Zcoor, Xcoor)).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
return Convert.ToInt32(dv[0][0]);
|
|
|
|
}
|
|
else
|
|
{
|
|
return 3;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
}
|
|
}
|
|
void InsertUpDeviceUP(int updevice, int Mankind, int ManFID, int mindex)
|
|
{
|
|
DataRowView drv = null; DataView dv = new DataView();
|
|
try
|
|
{
|
|
|
|
|
|
dv = dbo.ExceSQL(string.Format("SELECT F_MonitorTaskLevel, F_RouteID, F_TxtParam, F_UseAwayFork,F_PriorMonitor FROM T_Monitor_Task WHERE F_MonitorIndex={0}", mindex)).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
mindex = Convert.ToInt32(dv[0]["F_PriorMonitor"]);
|
|
drv = dv[0];
|
|
}
|
|
else
|
|
return;
|
|
StringBuilder ah = new StringBuilder();
|
|
ah.Append("D-").Append(updevice).Append(".7;D").Append(updevice).Append(".0;I").Append(updevice);
|
|
if (DeviceAndOrderExitInMonitor(Mankind, ManFID, updevice, 9, 0) == false)
|
|
{
|
|
#region Éú³ÉÊäËÍ»úÃüÁî
|
|
|
|
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("INSERT INTO T_Monitor_Task ").Append(
|
|
"(F_ManageTaskIndex, F_ManageTASKKINDINDEX, F_MonitorIndex,F_MonitorTaskLevel,").Append(
|
|
" F_DeviceIndex, F_DeviceCommandIndex, F_RouteID, F_Status,F_NumParam1, F_NumParam4,").Append(
|
|
" F_AheadDetect,F_TxtParam,F_UseAwayFork)").Append(
|
|
"VALUES (").Append(ManFID).Append(",").Append(Mankind).Append(",").Append(mindex).Append(",").Append(drv["F_MonitorTaskLevel"]
|
|
).Append(",").Append(updevice).Append(",").Append(9).Append(",").Append(drv["F_RouteID"]).Append(",").Append(0).Append(",").Append(updevice).Append("," + 0
|
|
).Append(",'").Append(ah).Append("','").Append(drv["F_TxtParam"]).Append("','").Append(drv["F_UseAwayFork"]).Append("')");
|
|
dbo.ExceSQL(sql.ToString());
|
|
|
|
|
|
#endregion
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
CControlError = "²åÈë¶¥Éý»úÉÏÉýÖ¸Áîʱ£º" + ex.StackTrace + ex.Message;
|
|
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
drv = null;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// Åжϵ÷¶È±íT_Monitor_TaskÊÇ·ñ´æÔÚµ÷¶ÈÈÎÎñµÄÉ豸ºÍÃüÁî
|
|
/// </summary>
|
|
/// <param name="Mankind">µ÷¶ÈÈÎÎñÀàÐÍ</param>
|
|
/// <param name="ManFID">µ÷¶ÈÈÎÎñË÷Òý</param>
|
|
/// <param name="DeviceIndex">É豸ËùÒý</param>
|
|
/// <param name="Order">É豸ÃüÁî</param>
|
|
/// <returns></returns>
|
|
public bool DeviceAndOrderExitInMonitor(int Mankind, int ManFID, int DeviceIndex, int Order, int ArrowAddress)
|
|
{
|
|
DataView dv = new DataView();
|
|
try
|
|
{
|
|
if (Order == -1) return true;
|
|
sql.Remove(0, sql.Length);
|
|
switch (ccf.GetDeviceKindIdx(DeviceIndex))
|
|
{
|
|
case 1://¶Ñ¶â»ú
|
|
sql.Append("SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_ManageTaskIndex = ").Append(ManFID).Append(")").Append(
|
|
" AND (F_ManageTASKKINDINDEX = ").Append(Mankind).Append(") AND (F_DeviceIndex = ").Append(DeviceIndex).Append(")").Append(
|
|
" AND (F_DeviceCommandIndex = ").Append(Order).Append(")");
|
|
break;
|
|
case 2://ÊäËÍ»ú
|
|
sql.Append("SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_ManageTaskIndex = ").Append(ManFID).Append(")").Append(
|
|
" AND (F_ManageTASKKINDINDEX = ").Append(Mankind).Append(") AND (F_DeviceIndex = ").Append(DeviceIndex).Append(")").Append(
|
|
" AND (F_DeviceCommandIndex = ").Append(Order).Append(")");
|
|
break;
|
|
case 4://RGV
|
|
sql.Append("SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_ManageTaskIndex = ").Append(ManFID).Append(")").Append(
|
|
" AND (F_ManageTASKKINDINDEX = ").Append(Mankind).Append(") AND (F_DeviceIndex = ").Append(DeviceIndex).Append(")").Append(
|
|
" AND (F_DeviceCommandIndex = ").Append(Order).Append(") and F_NumParam1=").Append(ArrowAddress);
|
|
break;
|
|
case 6://AGV
|
|
sql.Append("SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_ManageTaskIndex = ").Append(ManFID).Append(")").Append(
|
|
" AND (F_ManageTASKKINDINDEX = ").Append(Mankind).Append(") AND (F_DeviceIndex = ").Append(DeviceIndex).Append(")").Append(
|
|
" AND (F_DeviceCommandIndex = ").Append(Order).Append(")");
|
|
break;
|
|
default:
|
|
sql.Append("SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_ManageTaskIndex = ").Append(ManFID).Append(")").Append(
|
|
" AND (F_ManageTASKKINDINDEX = ").Append(Mankind).Append(") AND (F_DeviceIndex = ").Append(DeviceIndex).Append(")").Append(
|
|
" AND (F_DeviceCommandIndex = ").Append(Order).Append(")");
|
|
break;
|
|
}
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
CControlError = "ControlSystem.CControl.DeviceAndOrderExitInMonitor:" + ex.StackTrace + ex.Message;
|
|
return false;
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// ¶Ñ¶â»úÊÇ·ñ´æÔÚ±ÜÈÃÖ¸ÁîÕýÔÚÔËÐÐ
|
|
/// </summary>
|
|
/// <param name="DeviceIndex"></param>
|
|
/// <returns></returns>
|
|
bool DeviceHandTaskIfRun(int DeviceIndex)
|
|
{
|
|
DataView dv = new DataView();
|
|
try
|
|
{
|
|
dv = dbo.ExceSQL(string.Format("SELECT F_MonitorIndex FROM T_Monitor_Task where F_ManageTASKKINDINDEX=4 and F_DeviceIndex={0} and F_Status>0", DeviceIndex)).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
}
|
|
|
|
}
|
|
/// <summary>
|
|
/// ¶Ñ¶â»úÊÇ·ñ´æÔÚ±ÜÈÃÖ¸ÁîµÈ´ýÔËÐÐ
|
|
/// </summary>
|
|
/// <param name="DeviceIndex"></param>
|
|
/// <returns></returns>
|
|
bool DeviceHandTaskIfWaitRun(int DeviceIndex)
|
|
{
|
|
DataView dv = new DataView();
|
|
try
|
|
{
|
|
dv = dbo.ExceSQL(string.Format("SELECT F_MonitorIndex FROM T_Monitor_Task where F_ManageTASKKINDINDEX=4 and F_DeviceIndex={0} and F_Status=0", DeviceIndex)).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
}
|
|
|
|
}
|
|
bool StackIfExitTask(int stackno)
|
|
{
|
|
DataView dv = new DataView();
|
|
try
|
|
{
|
|
dv = dbo.ExceSQL(string.Format("SELECT F_MonitorIndex FROM T_Monitor_Task where F_DeviceIndex={0}", stackno)).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
}
|
|
}
|
|
|
|
void GetSpecialStackNo(int virStack, int startZ, int startX, int endZ, int endX, out int stackno, out bool IfCombinedWork)
|
|
{
|
|
stackno = 0; IfCombinedWork = false;
|
|
int Getdevice = 0, Sendevice = 0;
|
|
char[] fcc = new char[1] { ';' };
|
|
char[] dcc = new char[1] { ',' };
|
|
char[] hcc = new char[1] { '-' };
|
|
DataView dv = new DataView();
|
|
string[] zxys; string[] zx_x; string[] x_x;
|
|
try
|
|
{
|
|
dv = dbo.ExceSQL(string.Format("SELECT T_Base_StackInfo.F_StackIndex, T_Base_StackInfo.F_SpecialZXArea,T_Base_StackInfo.F_PRIZXArea FROM T_Base_StackInfo WHERE T_Base_StackInfo.F_Mutex IS NOT NULL and T_Base_StackInfo.F_VirtualStack={0}", virStack)).Tables[0].DefaultView;
|
|
|
|
for (int i = 0; i < dv.Count; i++)
|
|
{
|
|
zxys = dv[i]["F_SpecialZXArea"].ToString().Split(fcc);//1,0-2;2,0-5
|
|
|
|
for (int d = 0; d < zxys.GetLength(0); d++)
|
|
{
|
|
zx_x = zxys[d].Split(dcc);
|
|
if (zx_x.GetLength(0) > 1)
|
|
{
|
|
for (int h = 1; h < zx_x.GetLength(0); h++)
|
|
{
|
|
x_x = zx_x[h].Split(hcc);
|
|
|
|
if (x_x.GetLength(0) > 1)
|
|
{
|
|
if ((Convert.ToInt32(zx_x[0]) == startZ) && (startX >= Convert.ToInt32(x_x[0])) && (startX <= Convert.ToInt32(x_x[1])))
|
|
{
|
|
Getdevice = Convert.ToInt32(dv[i]["F_StackIndex"]);
|
|
}
|
|
if ((Convert.ToInt32(zx_x[0]) == endZ) && (endX >= Convert.ToInt32(x_x[0])) && (endX <= Convert.ToInt32(x_x[1])))
|
|
{
|
|
Sendevice = Convert.ToInt32(dv[i]["F_StackIndex"]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
stackno = Getdevice;
|
|
if (Getdevice != Sendevice)
|
|
{
|
|
devinfo = Model.CGetInfo.GetDeviceInfo(Getdevice);
|
|
if (Sendevice == devinfo.VirtualStack)
|
|
{
|
|
IfCombinedWork = true;
|
|
}
|
|
else
|
|
{
|
|
IfCombinedWork = false;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
IfCombinedWork = false;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
CControlError = "·ÖÅä¶Ñ¶â»úºÅGetSpecialStackNo:" + ex.StackTrace + ex.Message;
|
|
}
|
|
finally
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// ¼ÆËã·Ö±ðÓÃÁí¸örgvµÄÐг̡¢ÊÇ·ñÐèÒªÁíһ̨rgv±ÜÈÃ
|
|
/// </summary>
|
|
/// <param name="devinfo11001"></param>
|
|
/// <param name="devinfo11002"></param>
|
|
/// <param name="monitorid"></param>
|
|
/// <returns></returns>
|
|
int[,] Calulate_DistanceRGV(Model.MDevice devinfo15301, Model.MDevice devinfo15302, int monitorid)
|
|
{
|
|
DataView dvspQ = new DataView();
|
|
DataView dvspS = new DataView();
|
|
int locationStart = 0;
|
|
int locationEnd = 0;
|
|
int Distancecar1 = 0;
|
|
int Distancecar2 = 0;
|
|
int minLocation15301 = 0;
|
|
int maxLocation15301 = 0;
|
|
int minLocation15302 = 0;
|
|
int maxLocation15302 = 0;
|
|
|
|
int[,] Distance = new int[,] { { -1, -1, 0 }, { -1, -1, 0 } };
|
|
// »ñµÃRGVµÄÈ¡»õºÍËÍ»õ×ø±ê
|
|
int[] coor = Model.CGeneralFunction.GetCoorFromMonitor(monitorid);
|
|
if (coor == null)
|
|
{
|
|
return Distance;
|
|
}
|
|
int ZcoorQ = coor[0]; // È¡»õվ̨ºÅ
|
|
int ZcoorS = coor[1]; // ËÍ»õվ̨ºÅ
|
|
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("select * from T_Base_BarcodeCoor where XCoor = ").Append(ZcoorS).Append(" and VirtualStack = ").Append(devinfo15301.VirtualStack);//ORDER BY desc, asc
|
|
dvspS = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("select * from T_Base_BarcodeCoor where XCoor = ").Append(ZcoorQ).Append(" and VirtualStack = ").Append(devinfo15301.VirtualStack);//ORDER BY desc, asc
|
|
dvspQ = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dvspQ.Count > 0)
|
|
{
|
|
locationStart = Convert.ToInt32(dvspQ[0]["BarcodeCoor"]);// È¡»õվ̨ÌõÂëÖµ
|
|
}
|
|
else
|
|
{
|
|
return Distance;
|
|
}
|
|
if (dvspS.Count > 0)
|
|
{
|
|
locationEnd = Convert.ToInt32(dvspS[0]["BarcodeCoor"]);// ËÍ»õվ̨ÌõÂëÖµ
|
|
}
|
|
else
|
|
{
|
|
return Distance;
|
|
}
|
|
|
|
// Ôݶ¨15302×ø±êÓÀÔ¶´óÓÚ15301µÄ×ø±ê£¬¼´·½°¸Í¼ÖÐÉÏ·½×ø±ê´óÓÚÏ·½×ø±ê
|
|
minLocation15301 = locationStart < locationEnd ? locationStart : locationEnd;
|
|
minLocation15301 = devinfo15301.XCoor < minLocation15301 ? devinfo15301.XCoor : minLocation15301;//È¡ËÍ»õºÍ15301×ø±êÖÐ×îСµÄ
|
|
|
|
minLocation15302 = locationStart < locationEnd ? locationStart : locationEnd;
|
|
minLocation15302 = devinfo15302.XCoor < minLocation15302 ? devinfo15302.XCoor : minLocation15302;//È¡ËÍ»õºÍ15302×ø±êÖÐ×îСµÄ
|
|
|
|
maxLocation15301 = locationStart > locationEnd ? locationStart : locationEnd;
|
|
maxLocation15301 = devinfo15301.XCoor > maxLocation15301 ? devinfo15301.XCoor : maxLocation15301;//È¡ËÍ»õºÍ15301×ø±êÖÐ×î´óµÄ
|
|
|
|
maxLocation15302 = locationStart > locationEnd ? locationStart : locationEnd;
|
|
maxLocation15302 = devinfo15302.XCoor > maxLocation15302 ? devinfo15302.XCoor : maxLocation15302;//È¡ËÍ»õºÍ15302×ø±êÖÐ×î´óµÄ
|
|
if ((devinfo15302.XCoor > maxLocation15301) || (devinfo15302.XCoor < minLocation15301))//Èç¹ûÓÃ15301³µ15302²»Ðë±ÜÈÃʱ
|
|
{
|
|
// Ö»ÊÇÑ¡³µÃ»¿¼Âǰ²È«¾àÀë
|
|
Distancecar1 = System.Math.Abs((int)(devinfo15301.XCoor - locationStart)) + System.Math.Abs((int)(locationEnd - locationStart));
|
|
Distance[0, 2] = 0; // ¼Ç¼15302²»ÐèÒª±ÜÈÃ
|
|
}
|
|
else // Èç¹ûÓÃ15301£¬15302Ðë±ÜÈÃʱ
|
|
{
|
|
// 15302±ÜÈÃÖ»ÄÜÏò·½°¸Í¼ÖÐÏÂÃæ×ߣ¬¼´Ïò×ø±êСµÄ·½Ïò×ß
|
|
Distancecar1 = System.Math.Abs((int)(devinfo15301.XCoor - locationStart)) + System.Math.Abs((int)(locationEnd - locationStart)) + System.Math.Abs((int)(maxLocation15301 - devinfo15302.XCoor));
|
|
Distance[0, 2] = 1;// ¼Ç¼15302ÐèÒª±ÜÈÃ
|
|
}
|
|
Distance[0, 0] = devinfo15301.DeviceIndex;
|
|
Distance[0, 1] = Distancecar1;
|
|
|
|
if ((devinfo15301.XCoor > maxLocation15302) || (devinfo15301.XCoor < minLocation15302))
|
|
{
|
|
// Èç¹ûÓÃ15302³µ15301²»Ðë±ÜÈÃʱ
|
|
Distancecar2 = System.Math.Abs((int)(devinfo15302.XCoor - locationStart)) + System.Math.Abs((int)(locationEnd - locationStart));
|
|
Distance[1, 2] = 0;
|
|
}
|
|
else
|
|
{
|
|
// 15301±ÜÈÃÖ»ÄÜÏò·½°¸Í¼ÖÐÉÏÃæ×ߣ¬¼´Ïò×ø±êСµÄ·½Ïò×ß
|
|
Distancecar2 = System.Math.Abs((int)(devinfo15302.XCoor - locationStart)) + System.Math.Abs((int)(locationEnd - locationStart)) + System.Math.Abs((int)(minLocation15302 - devinfo15301.XCoor));
|
|
Distance[1, 2] = 1;
|
|
}
|
|
Distance[1, 0] = devinfo15302.DeviceIndex;
|
|
Distance[1, 1] = Distancecar2;
|
|
|
|
return Distance;
|
|
}
|
|
|
|
/// <summary>
|
|
/// ¼ÆËã·Ö±ðÓÃÁí¸ö¶â»úµÄÐг̡¢ÊÇ·ñÐèÒªÁíһ̨¶â»ú±ÜÈÃ
|
|
/// </summary>
|
|
/// <param name="devinfo11001"></param>
|
|
/// <param name="devinfo11002"></param>
|
|
/// <param name="monitorid"></param>
|
|
/// <returns></returns>
|
|
int[,] Calulate_Distance(Model.MDevice devinfo11001, Model.MDevice devinfo11002, int monitorid)
|
|
{
|
|
int Distancecar1 = 0; int Distancecar2 = 0; DataView dvspS = new DataView(); DataView dvspE = new DataView();
|
|
int locationstart = 0; int locationEnd = 0; int minLocation11001 = 0; int maxLocation11001 = 0; int minLocation11002 = 0; int maxLocation11002 = 0;
|
|
int[,] Distance = new int[,] { { -1, -1, 0 }, { -1, -1, 0 } };
|
|
|
|
int[] coor = Model.CGeneralFunction.GetCoorFromMonitor(monitorid);//»ñµÃ¶Ñ¶â»úµÄÈ¡»õºÍËÍ»õ×ø±ê
|
|
if (coor == null)
|
|
{
|
|
return Distance;
|
|
}
|
|
int Xcoor = coor[1];
|
|
int Zcoor = coor[0];
|
|
//int Ycoor = coor[2];
|
|
|
|
//if ((Zcoor == 1) || (Zcoor == 2))
|
|
//{
|
|
Zcoor = 1;//TJBS
|
|
//}
|
|
//else
|
|
//{
|
|
// Zcoor = 2;
|
|
//}
|
|
|
|
int XcoorS = coor[4];
|
|
int ZcoorS = coor[3];
|
|
//int YcoorS = coor[5];
|
|
ZcoorS = 1;//TJBS
|
|
//if ((ZcoorS == 1) || (ZcoorS == 2))
|
|
//{
|
|
// ZcoorS = 1;
|
|
//}
|
|
//else
|
|
//{
|
|
// ZcoorS = 2;
|
|
//}
|
|
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("select * from T_Base_BarcodeCoor where XCoor = ").Append(XcoorS).Append(" and ZCoor = ").Append(ZcoorS).Append(" and VirtualStack = 11222");//ORDER BY desc, asc.Append(" and LayerHigh = ").Append(YcoorS)
|
|
dvspE = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("select * from T_Base_BarcodeCoor where XCoor = ").Append(Xcoor).Append(" and ZCoor = ").Append(Zcoor).Append(" and VirtualStack = 11222");//ORDER BY desc, asc.Append(" and LayerHigh = ").Append(Ycoor)
|
|
dvspS = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dvspS.Count > 0)
|
|
{
|
|
locationstart = Convert.ToInt32(dvspS[0]["BarcodeCoor"]);
|
|
}
|
|
else
|
|
{
|
|
return Distance;
|
|
}
|
|
if (dvspE.Count > 0)
|
|
{
|
|
locationEnd = Convert.ToInt32(dvspE[0]["BarcodeCoor"]);
|
|
}
|
|
else
|
|
{
|
|
return Distance;
|
|
}
|
|
//Ôݶ¨11002×ø±êÓÀÔ¶´óÓÚ11001µÄ×ø±ê£¬¼´·½°¸Í¼ÖÐÓÒ²à×ø±ê´óÓÚ×ó²à×ø±ê
|
|
minLocation11001 = locationstart < locationEnd ? locationstart : locationEnd;
|
|
minLocation11001 = devinfo11001.XCoor < minLocation11001 ? devinfo11001.XCoor : minLocation11001;//È¡ËÍ»õºÍ11001×ø±êÖÐ×îСµÄ
|
|
|
|
minLocation11002 = locationstart < locationEnd ? locationstart : locationEnd;
|
|
minLocation11002 = devinfo11002.XCoor < minLocation11002 ? devinfo11002.XCoor : minLocation11002;//È¡ËÍ»õºÍ11002×ø±êÖÐ×îСµÄ
|
|
|
|
maxLocation11001 = locationstart > locationEnd ? locationstart : locationEnd;
|
|
maxLocation11001 = devinfo11001.XCoor > maxLocation11001 ? devinfo11001.XCoor : maxLocation11001;//È¡ËÍ»õºÍ11001×ø±êÖÐ×î´óµÄ
|
|
|
|
maxLocation11002 = locationstart > locationEnd ? locationstart : locationEnd;
|
|
maxLocation11002 = devinfo11002.XCoor > maxLocation11002 ? devinfo11002.XCoor : maxLocation11002;//È¡ËÍ»õºÍ11002×ø±êÖÐ×î´óµÄ
|
|
//Ö»ÊÇÑ¡³µÃ»¿¼Âǰ²È«¾àÀë
|
|
if ((devinfo11002.XCoor > maxLocation11001) || (devinfo11002.XCoor < minLocation11001))//Èç¹ûÓÃ11001³µ11002²»Ðë±ÜÈÃʱ
|
|
{
|
|
Distancecar1 = System.Math.Abs((int)(devinfo11001.XCoor - locationstart)) + System.Math.Abs((int)(locationEnd - locationstart));
|
|
Distance[0, 2] = 0;//¼Ç¼11002²»ÐèÒª±ÜÈÃ
|
|
}
|
|
else//Èç¹ûÓÃ11001³µ11002Ðë±ÜÈÃʱ
|
|
{
|
|
//11002±ÜÈÃÖ»ÄÜÏò·½°¸Í¼ÖÐÓÒÃæ×ߣ¬¼´Ïò×ø±ê´óµÄ·½Ïò×ß
|
|
Distancecar1 = System.Math.Abs((int)(devinfo11001.XCoor - locationstart)) + System.Math.Abs((int)(locationEnd - locationstart)) + System.Math.Abs((int)(maxLocation11001 - devinfo11002.XCoor));
|
|
Distance[0, 2] = 1;//¼Ç¼11002ÐèÒª±ÜÈÃ
|
|
}
|
|
Distance[0, 0] = devinfo11001.DeviceIndex;
|
|
Distance[0, 1] = Distancecar1;
|
|
|
|
if ((devinfo11001.XCoor > maxLocation11002) || (devinfo11001.XCoor < minLocation11002))//Èç¹ûÓÃ11002³µ11001²»Ðë±ÜÈÃʱ
|
|
{
|
|
Distancecar2 = System.Math.Abs((int)(devinfo11002.XCoor - locationstart)) + System.Math.Abs((int)(locationEnd - locationstart));
|
|
Distance[1, 2] = 0;
|
|
}
|
|
else
|
|
{
|
|
//15003±ÜÈÃÖ»ÄÜÏò·½°¸Í¼ÖÐÏÂÃæ×ߣ¬¼´Ïò×ø±êСµÄ·½Ïò×ß
|
|
Distancecar2 = System.Math.Abs((int)(devinfo11002.XCoor - locationstart)) + System.Math.Abs((int)(locationEnd - locationstart)) + System.Math.Abs((int)(minLocation11002 - devinfo11001.XCoor));
|
|
Distance[1, 2] = 1;
|
|
}
|
|
Distance[1, 0] = devinfo11002.DeviceIndex;
|
|
Distance[1, 1] = Distancecar2;
|
|
|
|
return Distance;
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="DeviceIndex"></param>
|
|
/// <returns></returns>
|
|
int Get_F_ManTaskReserve(int DeviceIndex)
|
|
{
|
|
int ManTaskReserve = 0;
|
|
DataView dvdv = new DataView();
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT F_DeviceIndex, F_LockedState,F_ManTaskReserve FROM T_Base_Device where F_DeviceIndex=").Append(DeviceIndex);
|
|
dvdv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dvdv.Count > 0)
|
|
{
|
|
ManTaskReserve = Convert.ToInt32(dvdv[0]["F_ManTaskReserve"]);
|
|
}
|
|
else
|
|
{
|
|
ManTaskReserve = -1;
|
|
}
|
|
return ManTaskReserve;
|
|
}
|
|
|
|
int Get_F_LockedState(int DeviceIndex)
|
|
{
|
|
int ManTaskReserve = 0;
|
|
DataView dvdv = new DataView();
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT F_DeviceIndex, F_LockedState,F_ManTaskReserve FROM T_Base_Device where F_DeviceIndex=").Append(DeviceIndex);
|
|
dvdv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dvdv.Count > 0)
|
|
{
|
|
ManTaskReserve = Convert.ToInt32(dvdv[0]["F_LockedState"]);
|
|
}
|
|
else
|
|
{
|
|
ManTaskReserve = -1;
|
|
}
|
|
return ManTaskReserve;
|
|
}
|
|
|
|
private int GetBarcodeCoor(int xcoor, int zcoor, int vStack)
|
|
{
|
|
DataView dv = new DataView();
|
|
try
|
|
{
|
|
dv = dbo.ExceSQL(string.Format("SELECT BarcodeCoor FROM T_Base_BarcodeCoor WHERE (XCoor = {0}) AND (ZCoor = {1}) and (VirtualStack={2})", xcoor, zcoor, vStack)).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
return Convert.ToInt32(dv[0][0]);
|
|
}
|
|
else
|
|
{
|
|
dv = dbo.ExceSQL(string.Format("SELECT BarcodeCoor FROM T_Base_BarcodeCoor WHERE (XCoor = {0}) and (VirtualStack={1})", xcoor, vStack)).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
return Convert.ToInt32(dv[0][0]);
|
|
}
|
|
else
|
|
{
|
|
return 0;
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
}
|
|
}
|
|
|
|
int GetPRIStackNo(int virStack, int startZ, int startX, int endZ, int endX)
|
|
{
|
|
int Getdevice = 0;
|
|
char[] fcc = new char[1] { ';' };
|
|
char[] dcc = new char[1] { ',' };
|
|
char[] hcc = new char[1] { '-' };
|
|
DataView dv = new DataView();
|
|
|
|
string[] zxys; string[] zx_x; string[] x_x;
|
|
try
|
|
{
|
|
dv = dbo.ExceSQL(string.Format("SELECT T_Base_StackInfo.F_StackIndex, T_Base_StackInfo.F_SpecialZXArea,T_Base_StackInfo.F_PRIZXArea FROM T_Base_StackInfo WHERE T_Base_StackInfo.F_Mutex IS NOT NULL and T_Base_StackInfo.F_VirtualStack={0}", virStack)).Tables[0].DefaultView;
|
|
|
|
|
|
for (int i = 0; i < dv.Count; i++)
|
|
{
|
|
zxys = dv[i]["F_PRIZXArea"].ToString().Split(fcc);//1,0-2;2,0-5
|
|
|
|
for (int d = 0; d < zxys.GetLength(0); d++)
|
|
{
|
|
zx_x = zxys[d].Split(dcc);
|
|
if (zx_x.GetLength(0) > 1)
|
|
{
|
|
for (int h = 1; h < zx_x.GetLength(0); h++)
|
|
{
|
|
x_x = zx_x[h].Split(hcc);
|
|
|
|
if (x_x.GetLength(0) > 1)
|
|
{
|
|
if ((Convert.ToInt32(zx_x[0]) == startZ) && (startX >= Convert.ToInt32(x_x[0])) && (startX <= Convert.ToInt32(x_x[1])))
|
|
{
|
|
Getdevice = Convert.ToInt32(dv[i]["F_StackIndex"]);
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return Getdevice;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
CControlError = "·ÖÅä¶Ñ¶â»úºÅGetPRIStackNo:" + ex.StackTrace + ex.Message;
|
|
return Getdevice;
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
|
|
}
|
|
|
|
}
|
|
/// <summary>
|
|
/// »ñÈ¡¿É¹ØÁªµÄÈÎÎñ½øÐÐÅä¶à²æ¹ØÁª
|
|
/// </summary>
|
|
/// <param name="DevLanewayIOInfo">ÏïµÀ³öÈë¿ÚÐÅÏ¢</param>
|
|
/// <param name="TaskIdx">É豸ָÁîË÷Òý</param>
|
|
/// <param name="CONTROLTASKTYPE">¿ØÖÆÈÎÎñÀàÐÍ</param>
|
|
/// <param name="mti">¿ØÖÆÈÎÎñÀà±ð</param>
|
|
/// <param name="fid">¿ØÖÆÈÎÎñ±àºÅ</param>
|
|
/// <param name="dtime">µ±Ç°Ê±¼ä</param>
|
|
/// <returns></returns>
|
|
bool GetCorrManageTask(string[] DevLanewayIOInfo, int TaskIdx, int CONTROLTASKTYPE, int mti, int fid, string dtime, out bool IfCorrTaskEnd)
|
|
{
|
|
IfCorrTaskEnd = false;
|
|
DataView dv = new DataView();
|
|
try
|
|
{
|
|
sql.Remove(0, sql.Length);//ÊäËÍ»úµÈ´ýË«²æÈÎÎñºÅµÈÓڶѶâ»úÈ¡»õTaskIdx
|
|
sql.Append("SELECT F_TaskIndex,F_DeviceIndex,F_Remark FROM T_Base_PLC_Ask WHERE (F_TaskIndex =").Append(Convert.ToInt32(TaskIdx)).Append(") AND (F_Remark <> '') AND (F_DeviceIndex=").Append(DevLanewayIOInfo[0]).Append(")");
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count > 0)
|
|
{
|
|
#region ÓÐÈÎÎñµÈ´ý¹ØÁªÈÎÎñ
|
|
|
|
string zxy = DevLanewayIOInfo[9];
|
|
int waitdevice = Convert.ToInt32(dv[0]["F_DeviceIndex"]);
|
|
//DevLanewayIOInfo[8]°üº¬¶à¸ö¹ØÁªÉ豸ÐÅÏ¢ÖðÒ»¼ì²é20120906
|
|
char[] cc = new char[1] { ';' };
|
|
string[] CorrStations = DevLanewayIOInfo[8].Split(cc);
|
|
foreach (string cs in CorrStations)
|
|
{
|
|
DevLanewayIOInfo = ccf.GetLanewayDeviceInfoFromStackDev(devinfo.DeviceIndex, Convert.ToInt32(cs));//¹ØÁªÕ¾Ì¨µÄÐÅÏ¢
|
|
string Correlzxy = DevLanewayIOInfo[9];
|
|
DateTime dtq = Convert.ToDateTime(dv[0]["F_Remark"]).AddSeconds(Convert.ToInt32(CStaticClass.DoubleForkWaitTime));
|
|
if ((GetIOControlStatus(TaskIdx) != Model.CGeneralFunction.TASKSINGLEFORKRUN) && (dtq > DateTime.Now))
|
|
{
|
|
#region û³¬Ê±,²»Êǵ¥²æÔËÐÐ
|
|
|
|
//20111231û³¬Ê±,²»Êǵ¥²æÔËÐÐ
|
|
//²éÕÒ±¾µØ¹ÜÀíÈÎÎñ×ö¶à²æ¹ØÁªÅä¶Ô£¬¹ØÁªÈÎÎñ·ÖÅä»õ²æ
|
|
int mfid = GetEnableDoubleForkManageTask(CONTROLTASKTYPE, devinfo.DeviceIndex, int.Parse(DevLanewayIOInfo[0]), fid);
|
|
if (mfid > 0)
|
|
{
|
|
#region Ë«²æÍ¬ÎªÇ°¼«ÏÞºóÕߺó¼«ÏÞ²»¹ØÁª£¬µ¥¶ÀÖ´ÐÐ
|
|
if ((IfInSameLimitX(fid, mfid, mti) == true) && (mti == 1))
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append(" update IO_CONTROL set CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKSINGLEFORKRUN).Append(" WHERE (CONTROL_ID = ").Append(fid).Append(")");
|
|
dboM.ExecuteSql(sql.ToString());
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append(" update IO_CONTROL set CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKSINGLEFORKRUN).Append(" WHERE (CONTROL_ID = ").Append(mfid).Append(")");
|
|
dboM.ExecuteSql(sql.ToString());
|
|
CommonClassLib.CCarryConvert.WriteDarkCasket("µ¥²æÖ´ÐÐÔÒò", TaskIdx.ToString(), devinfo.DeviceIndex.ToString(), "Ë«²æÍ¬ÎªÇ°¼«ÏÞºóÕߺó¼«ÏÞ²»¹ØÁª£¬µ¥¶ÀÖ´ÐÐ");
|
|
IfCorrTaskEnd = true;
|
|
return true;
|
|
}
|
|
#endregion
|
|
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("update T_Manage_Task set F_RELATIVECONTORLID=").Append(fid).Append(" where F_ManageTaskKindIndex=").Append(mti).Append(" and FID=").Append(fid);
|
|
dbo.ExecuteSql(sql.ToString());
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("update T_Manage_Task set F_RELATIVECONTORLID=").Append(fid).Append(" where F_ManageTaskKindIndex=").Append(mti).Append(" and FID=").Append(mfid);
|
|
dbo.ExecuteSql(sql.ToString());
|
|
//ÅжÏÊÇ·ñΪ1²æµÄ¹ØÁªÈÎÎñ:ÊÇ£¬Å䲿½áÊø
|
|
if (ccf.GetManageTaskStackFork(mti, mfid) == "1")
|
|
{
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("update T_Base_PLC_Ask set F_Remark='' where (F_TaskIndex=").Append(TaskIdx).Append(")");
|
|
dbo.ExecuteSql(sql.ToString());
|
|
IfCorrTaskEnd = true;
|
|
}
|
|
continue;
|
|
}
|
|
else
|
|
{
|
|
//20110505
|
|
AheadDetectUnallow.Append(devinfo.DeviceIndex.ToString() + "Ë«²æ¶Ñ¶â»úµÈ´ý¶à²æ¹ØÁªÈ¡»õÈÎÎñ£¡");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, TaskIdx);
|
|
continue;
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
else
|
|
{
|
|
#region 20111230µ¥²æÖ´Ðм«ÏÞ»õλÐèÒªµ¹»õ²æ
|
|
#region ¶Ñ¶â»úÔÚ¶¥Éý»úÈ¡µ¥²æÈÎÎñ£¬ÑéÖ¤ÊÇ·ñÐèÒª»»»õ²æ
|
|
string ChangeForkCell = ccf.IfLimitCellChangeFork(TaskIdx, devinfo.DeviceIndex);
|
|
|
|
if (ChangeForkCell != "-")//Ö÷ÈÎÎñÐèÒªµ¹»»»õ²æ
|
|
{
|
|
ccf.ChangeEndCellCode(TaskIdx, ChangeForkCell, devinfo.DeviceIndex);
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("update T_Base_PLC_Ask set F_TaskIndex=0,F_Remark='' where (F_DeviceIndex=").Append(waitdevice).Append(")");
|
|
dbo.ExecuteSql(sql.ToString());
|
|
CommonClassLib.CCarryConvert.WriteDarkCasket("µ¥²æÖ´ÐÐÔÒò", TaskIdx.ToString(), devinfo.DeviceIndex.ToString(), "Ö÷ÈÎÎñÐèÒªµ¹»»»õ²æ");
|
|
IfCorrTaskEnd = true;
|
|
return true;
|
|
}
|
|
#endregion
|
|
#endregion
|
|
|
|
if ((IFHaveStackCorrelGetCommand(devinfo.DeviceIndex, zxy, Correlzxy, TaskIdx) == true) && (GetIOControlStatus(TaskIdx) != Model.CGeneralFunction.TASKSINGLEFORKRUN))//20101124
|
|
{//¶ÓÁÐÖÐÓпÉÒÔ¹ØÁªµÄÈÎÎñ£¬ÖØÐ¼ÆÊ±
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("update T_Base_PLC_Ask set F_Remark='").Append(dtime).Append("' where (F_DeviceIndex=").Append(waitdevice).Append(")");
|
|
dbo.ExecuteSql(sql.ToString());
|
|
//20110505
|
|
AheadDetectUnallow.Append(devinfo.DeviceIndex.ToString() + "Ë«²æ¶Ñ¶â»úÔÚË«²æ¶ÔµÈվ̨ȡ»õ" + "£¬µÈ´ý¶à²æ¹ØÁªÈÎÎñ£¡");
|
|
UpdateAheadDetectUnallow(AheadDetectUnallow, TaskIdx);
|
|
return false;
|
|
}
|
|
else
|
|
{//³¬Ê±»òÕß¹ÜÀíÇ¿ÖÆÖ´Ðе¥²æÈÎÎñ
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("update T_Base_PLC_Ask set F_TaskIndex=0,F_Remark='' where (F_DeviceIndex=").Append(waitdevice).Append(")");
|
|
dbo.ExecuteSql(sql.ToString());
|
|
CommonClassLib.CCarryConvert.WriteDarkCasket("µ¥²æÖ´ÐÐÔÒò", TaskIdx.ToString(), devinfo.DeviceIndex.ToString(), "³¬Ê±»òÕß¹ÜÀíÇ¿ÖÆÖ´Ðе¥²æÈÎÎñ");
|
|
IfCorrTaskEnd = true;
|
|
return true;
|
|
}
|
|
|
|
}
|
|
}
|
|
#endregion
|
|
}
|
|
return false;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
CControlError = "»ñÈ¡¶Ñ¶â»ú¹ØÁªÅ䲿GetCorrManageTask:" + ex.StackTrace + ex.Message;
|
|
return false;
|
|
}
|
|
finally
|
|
{
|
|
dv.Dispose();
|
|
}
|
|
}
|
|
}
|
|
}
|