174 lines
7.8 KiB
C#
174 lines
7.8 KiB
C#
using System;
|
|
using System.Configuration;
|
|
using System.Data;
|
|
using bizFacade;
|
|
//using SystemFramework;
|
|
using MesServerWork;
|
|
|
|
namespace MesServerFunctions
|
|
{
|
|
partial class Functions_BASE_26
|
|
{
|
|
/// <summary>
|
|
/// 申请上线
|
|
/// </summary>
|
|
/// <param name="OpName"></param>
|
|
/// <param name="tagValue"></param>
|
|
private void PartLoad(object e)
|
|
{
|
|
try
|
|
{
|
|
//object locker = new object();
|
|
//lock (locker)
|
|
{
|
|
DoWhatPlc.CustomeEvetnArgs msgEvent = (DoWhatPlc.CustomeEvetnArgs)e;
|
|
string OpName = Convert.ToString(msgEvent.OpName);
|
|
int tagValue = Convert.ToInt32(msgEvent.TagValue);
|
|
|
|
PartLoad(OpName, tagValue.ToString());
|
|
}
|
|
|
|
}
|
|
catch (Exception err)
|
|
{
|
|
////ApplicationLog.WriteLog(err, "Function03:PartLoad");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// MES将盆子码(DB24-63)[74]、小车号(DBB20)[112]、机型代码(DBB22)[73]、机型(DBB64-103)[75]信息写到交互DB块中
|
|
/// (DBX0.1=1)[5] MES传递机型
|
|
/// </summary>
|
|
public void PartLoad(string OpName, string tagValue)
|
|
{
|
|
//获得 盆子码(发动机号)、小车号、机型代码、机型 取最小的一个
|
|
try
|
|
{
|
|
int desType = 1;
|
|
int engineTypeID;
|
|
string engineID;
|
|
string engineType;
|
|
byte kuweiNum;
|
|
string kuweiNumStr;
|
|
//小车是否需要报警
|
|
Boolean carIsWarning = false;
|
|
|
|
if (tagValue == "1")
|
|
{
|
|
//订单完成 1 没完成 0
|
|
//DtWebApi.ReadWritePLC.WritePLC("52", OpName, true);
|
|
//DtWebApi.ReadWritePLC.WritePLC("52", OpName, false);
|
|
|
|
//
|
|
// BaseDataSystemMES.MesServer_Process_EngineTypeOver(OpName);
|
|
DataTable dt;
|
|
BaseDataSystemMES.GetUpLoadBarCodeEngineID(OpName, out dt);
|
|
if (dt.Rows.Count == 0)
|
|
{
|
|
// 库里无件时去判断需不需要给清料信号
|
|
// 1.根据工位号获取上个订单盆子过站数量 判断是否全部订单都绑定了盆子 绑定了就给清料
|
|
DataTable dt4;
|
|
BaseDataSystemMES.GetMaxPartCount(OpName, out dt4);
|
|
// 3.判断是否全部订单都绑定了盆子 绑定了就给清料
|
|
if (Convert.ToInt32(dt4.Rows[0]["未绑定数"]) == 0)
|
|
{
|
|
// 4.返回清料信号
|
|
DtWebApi.ReadWritePLC.WritePLC("52", OpName, true);
|
|
|
|
//5.删除工位小车所有信息,上料位置,抓取位置等
|
|
//BaseDataSystemMES.ClearOpCarData(OpName);
|
|
}
|
|
// 告诉PLC MES 程序处理完成了
|
|
DtWebApi.ReadWritePLC.WritePLC("26", OpName, true);
|
|
return;
|
|
}
|
|
// 有件时去把清料信号给去掉
|
|
DtWebApi.ReadWritePLC.WritePLC("52", OpName, false);
|
|
engineTypeID = Convert.ToInt32(dt.Rows[0]["机型代码"]);
|
|
desType = Convert.ToInt32(dt.Rows[0]["加工方式"]);
|
|
engineID = dt.Rows[0]["发动机号"].ToString();
|
|
engineType = dt.Rows[0]["发动机型号"].ToString();
|
|
kuweiNum = Convert.ToByte(dt.Rows[0]["库位号"]);
|
|
kuweiNumStr = dt.Rows[0]["库位号"].ToString();
|
|
string OrderForm = dt.Rows[0]["订单号"].ToString();
|
|
MIS_BASE.Read_PalletCode(OpName, out int PartPallet_Code);
|
|
|
|
//BaseDataSystemMES.OpName_MIS_MOBY_Insert(OpName, OrderForm, engineTypeID, engineType, engineID, PartPallet_Code, 0, 0, "");
|
|
|
|
//判断对应小车的低车位是否有料
|
|
String[] carSensorStr = { "76", "61", "62", "63", "64", "65" };
|
|
String carCheckStr = carSensorStr[Convert.ToInt32(kuweiNumStr) -1];
|
|
|
|
|
|
Boolean checkGo = Convert.ToBoolean(DtWebApi.ReadWritePLC.ReadPLC(carCheckStr, OpName));
|
|
|
|
//如果当前车位无工件信号就报警
|
|
carIsWarning = !checkGo;
|
|
|
|
// 在高车位时判断低车位是否有件
|
|
if (Convert.ToInt32(kuweiNumStr) % 2 == 0 && !carIsWarning)
|
|
{
|
|
String checkLowCar = carSensorStr[Convert.ToInt32(kuweiNumStr) - 2];
|
|
carIsWarning = Convert.ToBoolean(DtWebApi.ReadWritePLC.ReadPLC(checkLowCar, OpName));
|
|
}
|
|
|
|
//判断三个小车位是否存在信号
|
|
String[] carSensorStr2 = { "33", "34", "35" };
|
|
String carCheckStr2 = carSensorStr2[((Convert.ToInt32(kuweiNumStr) + 1) / 2) - 1];
|
|
//如果车位无信号就报警
|
|
if (!Convert.ToBoolean(DtWebApi.ReadWritePLC.ReadPLC(carCheckStr2, OpName)))
|
|
{
|
|
carIsWarning = true;
|
|
}
|
|
|
|
//判断是否需要给报警信号
|
|
if (carIsWarning)
|
|
{
|
|
DtWebApi.ReadWritePLC.WritePLC("25", OpName, true);
|
|
return;
|
|
}
|
|
DtWebApi.ReadWritePLC.WritePLC("25", OpName, false);
|
|
|
|
////将产品信息写入PLC
|
|
MIS_BASE.Write_EngineTypeID_MES(OpName, engineTypeID);
|
|
MIS_BASE.Write_EngineType_MES(OpName, engineType);
|
|
MIS_BASE.Write_EngineID_MES(OpName, engineID);
|
|
MIS_BASE.Write_TagTypeID(116, OpName, OrderForm);
|
|
// 库位号
|
|
DtWebApi.ReadWritePLC.WritePLC("112", OpName, kuweiNum);
|
|
// DES1 DES2
|
|
DtWebApi.ReadWritePLC.WritePLC("88", OpName, desType);
|
|
|
|
//获取订单号,发动机型号,发动机型号代码(在线首工位将选择的订单,机型等信息保存到监控表中)
|
|
// bizFacade.BaseDataSystemMES.OpName_MIS_CreateMoby_Select(OpName, out string orderForm, out engineTypeID, out engineType, out engineID, out string palletCode, out int isRepair, out string repairCode);
|
|
// 判断空死盆子 发送到地址变量 70
|
|
DataTable dt2 = BaseDataSystemMES.WorkPlatePartSelect(OpName, engineType);
|
|
if (dt2.Rows.Count > 0)
|
|
{
|
|
if (dt2.Rows[0]["零件名称"].ToString() == "通盆子")
|
|
{
|
|
MIS_BASE.WritePLC(70, OpName, 1);
|
|
}
|
|
else
|
|
{
|
|
MIS_BASE.WritePLC(70, OpName, 0);
|
|
}
|
|
}
|
|
// 写入MES传递机型
|
|
MIS_BASE.Write_EngineTypeGetOver_MES(OpName, true);
|
|
// 写占用盆子 更新数据库是否占用 = 1
|
|
//BaseDataSystemMES.UpdateKuWeiStatus(OpName, kuweiNumStr);
|
|
|
|
// 告诉PLC MES 程序处理完成了
|
|
DtWebApi.ReadWritePLC.WritePLC("26", OpName, true);
|
|
}
|
|
|
|
}
|
|
catch (Exception err)
|
|
{
|
|
////ApplicationLog.WriteLog(err, "Function03:PartLoad");
|
|
}
|
|
}
|
|
}
|
|
}
|