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.
159 lines
6.3 KiB
159 lines
6.3 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using System.Data;
|
|
using System.Threading;
|
|
using Microsoft.VisualBasic;
|
|
using DBFactory;
|
|
using ICommLayer;
|
|
|
|
namespace MidDataTable
|
|
{
|
|
/// <summary>
|
|
/// 20200430中间表接口
|
|
/// 发送设备命令类
|
|
///
|
|
/// </summary>
|
|
public class CSendDeviceOrder: ISendDeviceOrder
|
|
{
|
|
string _commLayerError;
|
|
|
|
public string CommLayerError
|
|
{
|
|
get { return _commLayerError; }
|
|
set { _commLayerError = value; }
|
|
}
|
|
DBOperator dbo = CommonClassLib.AppSettings.dbo;//20130510
|
|
public CSendDeviceOrder()
|
|
{
|
|
dbo.Open();
|
|
}
|
|
//~CSendDeviceOrder()
|
|
//{
|
|
// dbo.Close();
|
|
//}
|
|
/// <summary>
|
|
/// 发送环形穿梭车命令
|
|
/// </summary>
|
|
/// <param name="MessageIndex">消息编号</param>
|
|
/// <param name="TaskIndex">任务编号</param>
|
|
/// <param name="Order">环穿命令字</param>
|
|
///1-取送货
|
|
///2.3... 待扩展
|
|
/// <param name="DeviceIndex">设备编号</param>
|
|
/// <param name="StartX">0</param>
|
|
/// <param name="StartY">0</param>
|
|
/// <param name="StartZ">环穿取货站台(或区域)</param>
|
|
/// <param name="EndX"></param>
|
|
/// <param name="EndY"></param>
|
|
/// <param name="EndZ">环穿送货站台(或区域)</param>
|
|
/// <returns>发送环穿命令是否成功</returns>
|
|
public bool SendDeviceOrder(int MessageIndex, int TaskIndex, int Order, int DeviceIndex, int StartX, int StartY, int StartZ, int EndX, int EndY, int EndZ)
|
|
{
|
|
//return true;
|
|
StringBuilder sql = new StringBuilder();
|
|
StringBuilder sss = new StringBuilder();
|
|
DataView dv = new DataView();
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT * FROM T_Monitor_Task WHERE F_MonitorIndex = ").Append(TaskIndex).Append(" AND F_Status = 0");
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count == 0)
|
|
{
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder发生错误:不存在"+ TaskIndex +" 对应的空闲指令!";
|
|
return false;
|
|
}
|
|
try
|
|
{
|
|
int fid = Model.CGeneralFunction.GetManageTaskIndexfromMonitor(TaskIndex);
|
|
sql.Remove(0, sql.Length);
|
|
sql.Append("SELECT * FROM RGV_TASK WHERE FID = ").Append(fid).Append(" AND RGV_TASK_ID = ")
|
|
.Append(TaskIndex);
|
|
if (dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView.Count > 0)
|
|
{
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder发生错误:中间表已存在该指令:"+ TaskIndex;
|
|
return false;
|
|
}
|
|
StringBuilder dtime = new StringBuilder(DateTime.Now.ToString("u"));
|
|
dtime.Remove(dtime.Length - 1, 1);
|
|
int TaskLevel = Convert.ToInt32(dv[0]["F_MonitorTaskLevel"]);
|
|
|
|
string PalletBarcode = dv[0]["F_TxtParam"].ToString();
|
|
|
|
sql.Clear();
|
|
sql.Append("select * from T_Manage_Task where FID = ").Append(fid);
|
|
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
|
|
if (dv.Count == 0)
|
|
{
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder发生错误:找不到对应的管理任务!";
|
|
return false;
|
|
|
|
}
|
|
|
|
int TaskType = Convert.ToInt32(dv[0]["FCONTROLTASKTYPE"]);
|
|
int LaneWay = TaskType == 2 ? Convert.ToInt32(dv[0]["FSTARTDEVICE"]) : Convert.ToInt32(dv[0]["FENDDEVICE"]);
|
|
|
|
string command = string.Format(
|
|
"INSERT INTO RGV_TASK(RGV_TASK_ID, RGV_TASK_TYPE, RGV_TASK_LEVEL, PALLET_BARCODE, START_DEVICE_CODE, END_AREA_CODE, LANE_CODE, RGV_TASK_BEGINTIME,FID)"+
|
|
" VALUES({0}, {1}, {2}, '{3}', '{4}', '{5}', '{6}', '{7}',{8})",
|
|
TaskIndex, TaskType, TaskLevel, PalletBarcode, StartZ, EndZ, LaneWay, dtime.ToString(), fid);
|
|
dbo.ExecuteSql(command);
|
|
sss.Remove(0, sss.Length);
|
|
sss.Append("条码:").Append(PalletBarcode).Append("**写标志1").Append("**任务号" + TaskIndex.ToString())
|
|
.Append("**起始站台" + StartZ.ToString()).Append("**终止站台" + EndZ.ToString());
|
|
|
|
CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "发送环形穿梭车命令","", sss.ToString());
|
|
return true;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_commLayerError = "OPCClient.CSendDeviceOrder.SendDeviceOrder发生错误:" + ex.Message;
|
|
return false;
|
|
}
|
|
|
|
}
|
|
/// <summary>
|
|
/// 发送堆垛机以外的其它设备命令
|
|
/// </summary>
|
|
/// <param name="MessageIndex">消息编号</param>
|
|
/// <param name="TaskIndex">任务编号</param>
|
|
/// <param name="Order">命令字</param>
|
|
/// 穿梭车命令字:
|
|
///1-复位
|
|
///2-左接货
|
|
///3-左送货
|
|
///4-右接货
|
|
///5-右送货
|
|
///6-停止
|
|
///7-运动到1#位置
|
|
///8-运动到2#位置
|
|
/// …
|
|
///输送机、台车命令字:
|
|
///1-入库(朝向库)
|
|
/// 2-出库(背向库)
|
|
/// 3-送货
|
|
/// 4-停止
|
|
/// <param name="DeviceIndex">设备编号</param>
|
|
/// <returns>发送其它设备命令是否成功</returns>
|
|
public bool SendDeviceOrder(int MessageIndex, int TaskIndex, int Order, int DeviceIndex, int ArrowDeviceIndex)
|
|
{
|
|
return true;
|
|
}
|
|
public bool SendDeviceOrder(int MessageIndex, int TaskIndex, int Order, int DeviceIndex, int StartX, int StartY, int StartZ, int EndX, int EndY, int EndZ, string DoubleFork)
|
|
{
|
|
return true;
|
|
|
|
}
|
|
public bool SendDeviceOrder(int DeviceIndex, string TobaccoCode, bool HaveFirstProjectCode, bool IfSmallTobacco, int Count)
|
|
{
|
|
return true;
|
|
}
|
|
public bool WriteDBData(StringBuilder[] ItemNames, StringBuilder[] ItemValues)
|
|
{
|
|
return true;
|
|
}
|
|
public bool WriteDBData(StringBuilder[] ItemNames, StringBuilder[] ItemValues, string PLCconnectionID)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
}
|