chore: initial commit
This commit is contained in:
328
MisDataFunction/Function1054/MesServerFunction/Fun_1054.cs
Normal file
328
MisDataFunction/Function1054/MesServerFunction/Fun_1054.cs
Normal file
@@ -0,0 +1,328 @@
|
||||
using MesServerWork;
|
||||
using MisDataFunDll;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace MesServerFunctions
|
||||
{
|
||||
public partial class FunctionMES
|
||||
{
|
||||
object lockFunWork;
|
||||
//public void FunWork(DeviceDriver_BasicData.CustomeEvetnArgs e)
|
||||
public void FunWork(string recData)
|
||||
{
|
||||
|
||||
|
||||
lockFunWork = new object();
|
||||
lock (lockFunWork)
|
||||
{
|
||||
List<string> dataArray = MisDataFun.GetCmdStringList(recData);
|
||||
//string[] dataArray = recData.Split('|');
|
||||
//if (dataArray.Count != 4)
|
||||
//return;
|
||||
//消息来源
|
||||
string m_Source = dataArray[0].ToString();
|
||||
//消息类型 Barcode
|
||||
string m_Command = dataArray[1].ToString();
|
||||
//工位号
|
||||
string m_OpName = dataArray[2].ToString();
|
||||
//消息参数
|
||||
string m_Value = dataArray[3].ToString();
|
||||
|
||||
DeviceDriver_BasicData.CustomeEvetnArgs e = new DeviceDriver_BasicData.CustomeEvetnArgs();// = Newtonsoft.Json.JsonConvert.DeserializeObject<DeviceDriver_BasicData.CustomeEvetnArgs>(m_Value);
|
||||
string tagValue;
|
||||
string OpName = m_OpName;
|
||||
switch (m_Source)
|
||||
{
|
||||
case "PLC":
|
||||
e = Newtonsoft.Json.JsonConvert.DeserializeObject<DeviceDriver_BasicData.CustomeEvetnArgs>(m_Value);
|
||||
switch (e.TagValue.ToString().ToLower())
|
||||
{
|
||||
case "false":
|
||||
tagValue = "0";
|
||||
break;
|
||||
case "true":
|
||||
tagValue = "1";
|
||||
break;
|
||||
default:
|
||||
tagValue = e.TagValue.ToString();
|
||||
break;
|
||||
}
|
||||
e.TagValue = tagValue;
|
||||
switch (e.TagTypeCodeID.ToString())
|
||||
{
|
||||
// AGV相关变量类型代码处理说明:
|
||||
// 301:AGV请求进入
|
||||
// 302:AGV器具放置完毕
|
||||
// 303:AGV退出光栅
|
||||
// 304:送料信息验证完成
|
||||
// 305:送料信息验证结果
|
||||
// 305:任务发送状态 0 没有 1 发送 2 失败
|
||||
// 311:请求叫料
|
||||
// 312:请求退空
|
||||
// 313:请求退料
|
||||
// 314:允许AGV进入
|
||||
// 315:允许AGV离开
|
||||
// 316:器具码扫描完毕
|
||||
// 317:退回并重新配送
|
||||
// 318:器具号
|
||||
// 319:请求上料机型
|
||||
// 320:收到状态反馈点
|
||||
// 321:转序
|
||||
// 322:下空托盘
|
||||
// 323:上空托盘
|
||||
// 324:点对点
|
||||
// 500:AGV请求下降
|
||||
// 501:AGV请求举升
|
||||
// 550:允许AGV下降
|
||||
// 551:允许AGV举升
|
||||
|
||||
// 请求叫料
|
||||
case "311":
|
||||
fun_CallMaterials(e);
|
||||
break;
|
||||
// 请求退空
|
||||
case "312":
|
||||
fun_RequestReturns(e);
|
||||
break;
|
||||
// 请求退料
|
||||
case "313":
|
||||
fun_RequestReturnMaterial(e);
|
||||
break;
|
||||
// 允许AGV进入
|
||||
case "314":
|
||||
fun_AllowAGVEnter(e);
|
||||
break;
|
||||
// 允许AGV离开
|
||||
case "315":
|
||||
fun_AllowAGVLeave(e);
|
||||
break;
|
||||
// 器具码扫描完毕
|
||||
case "316":
|
||||
fun_ToolCodeScanOver(e);
|
||||
break;
|
||||
// 退回并重新配送
|
||||
case "317":
|
||||
fun_ReturnAndRedispatch(e);
|
||||
break;
|
||||
// 收到任务状态握手
|
||||
case "320":
|
||||
//MIS_BASE.WritePLC(306, m_OpName, 0);
|
||||
break;
|
||||
// 转序
|
||||
case "321":
|
||||
fun_TransferSequence(e);
|
||||
break;
|
||||
// 下空托盘
|
||||
case "322":
|
||||
fun_UnloadEmptyTray(e);
|
||||
break;
|
||||
// 上空托盘
|
||||
case "323":
|
||||
fun_LoadEmptyTray(e);
|
||||
break;
|
||||
// 允许AGV下降
|
||||
case "550":
|
||||
fun_AllowAGVLower(e);
|
||||
break;
|
||||
// 允许AGV举升
|
||||
case "551":
|
||||
fun_AllowAGVRaise(e);
|
||||
break;
|
||||
// AGV插头完成
|
||||
case "400":
|
||||
break;
|
||||
// AGV拔插头完成
|
||||
case "401":
|
||||
break;
|
||||
// MES允许开始磨合
|
||||
case "402":
|
||||
break;
|
||||
// MES反馈磨合结束
|
||||
case "403":
|
||||
break;
|
||||
// 托盘压紧气缸压紧
|
||||
case "404":
|
||||
if (tagValue == "1") MIS_BASE.WritePLC(405, OpName, false);
|
||||
break;
|
||||
// 托盘压紧气缸松开
|
||||
case "405":
|
||||
if (tagValue == "1") MIS_BASE.WritePLC(404, OpName, false);
|
||||
break;
|
||||
// 插头推靠气缸推靠
|
||||
case "406":
|
||||
if (tagValue == "1") MIS_BASE.WritePLC(407, OpName, false);
|
||||
break;
|
||||
// 插头推靠气缸退回
|
||||
case "407":
|
||||
if (tagValue == "1") MIS_BASE.WritePLC(406, OpName, false);
|
||||
break;
|
||||
// 自动模式
|
||||
case "408":
|
||||
if (tagValue == "1") MIS_BASE.WritePLC(409, OpName, false); // 自动掉手动模式
|
||||
break;
|
||||
// 手动模式
|
||||
case "409":
|
||||
if (tagValue == "1") MIS_BASE.WritePLC(408, OpName, false); // 自动掉自动模式
|
||||
break;
|
||||
// 请求上线
|
||||
case "450":
|
||||
MisDataFun.Rrunning_UpdateOpCallStatus(OpName, Convert.ToInt32(tagValue)); // 更新至数据库库位状态
|
||||
break;
|
||||
// 请求下线
|
||||
case "451":
|
||||
break;
|
||||
// 请求插插头
|
||||
case "452":
|
||||
// 需要调用AGV插插头接口 去插
|
||||
break;
|
||||
// 请求拔插头
|
||||
case "453":
|
||||
break;
|
||||
// 开始磨合
|
||||
case "454":
|
||||
break;
|
||||
// 磨合完成
|
||||
case "455":
|
||||
break;
|
||||
// 推靠气缸原位
|
||||
case "456":
|
||||
break;
|
||||
// 推靠气缸到位
|
||||
case "457":
|
||||
break;
|
||||
// 压紧气缸原位
|
||||
case "458":
|
||||
break;
|
||||
// 压紧气缸到位
|
||||
case "459":
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 叫料流程
|
||||
// 1.请求叫料 收到请求叫料后 调用叫料接口 后续收到AGV的
|
||||
// 2.收到工厂 请求进入接口(工厂未开发 跳过) 发给PLC AGV请求进入
|
||||
// 3.收到允许AGV进入 调用接口(未开发 跳过) 允许进入
|
||||
// 4.收到 器具码扫码完成 根据318器具号 调用器具号查询接口 得出校验结果
|
||||
// 5.若器具码校验通过 调用 确认物料配送接口 调用成功后 给PLC发送 送料信息验证结果(1 合格 2 不合格) 和 送料信息验证完成
|
||||
// 6.收到AGV请求离开接口后(未开发 跳过) 发送给PLC请求离开点位
|
||||
// 7.收到PLC允许离开信号后 调用AGV允许离开接口(未开发 跳过)
|
||||
|
||||
// 退空托流程
|
||||
// 1.收到请求退空 调用退空托接口
|
||||
// 2.如叫料AGV请求进入 请求离开。。。。 只不过不需要扫描器具码部分
|
||||
|
||||
|
||||
// AGV相关方法声明(PLC触发的信号)
|
||||
/// <summary>
|
||||
/// 请求叫料
|
||||
/// </summary>
|
||||
public void fun_CallMaterials(DeviceDriver_BasicData.CustomeEvetnArgs e)
|
||||
{
|
||||
ThreadPool.QueueUserWorkItem(CallMaterials, e);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 请求退空
|
||||
/// </summary>
|
||||
public void fun_RequestReturns(DeviceDriver_BasicData.CustomeEvetnArgs e)
|
||||
{
|
||||
ThreadPool.QueueUserWorkItem(RequestReturns, e);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 请求退料
|
||||
/// </summary>
|
||||
public void fun_RequestReturnMaterial(DeviceDriver_BasicData.CustomeEvetnArgs e)
|
||||
{
|
||||
ThreadPool.QueueUserWorkItem(RequestReturnMaterial, e);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 允许AGV进入
|
||||
/// </summary>
|
||||
public void fun_AllowAGVEnter(DeviceDriver_BasicData.CustomeEvetnArgs e)
|
||||
{
|
||||
ThreadPool.QueueUserWorkItem(AllowAGVEnter, e);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 允许AGV离开
|
||||
/// </summary>
|
||||
public void fun_AllowAGVLeave(DeviceDriver_BasicData.CustomeEvetnArgs e)
|
||||
{
|
||||
ThreadPool.QueueUserWorkItem(AllowAGVLeave, e);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 允许AGV下降
|
||||
/// </summary>
|
||||
public void fun_AllowAGVLower(DeviceDriver_BasicData.CustomeEvetnArgs e)
|
||||
{
|
||||
ThreadPool.QueueUserWorkItem(AllowAGVLower, e);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 允许AGV举升
|
||||
/// </summary>
|
||||
public void fun_AllowAGVRaise(DeviceDriver_BasicData.CustomeEvetnArgs e)
|
||||
{
|
||||
ThreadPool.QueueUserWorkItem(AllowAGVRaise, e);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 器具码扫描完毕
|
||||
/// </summary>
|
||||
public void fun_ToolCodeScanOver(DeviceDriver_BasicData.CustomeEvetnArgs e)
|
||||
{
|
||||
ThreadPool.QueueUserWorkItem(ToolCodeScanOver, e);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 退回并重新配送
|
||||
/// </summary>
|
||||
public void fun_ReturnAndRedispatch(DeviceDriver_BasicData.CustomeEvetnArgs e)
|
||||
{
|
||||
ThreadPool.QueueUserWorkItem(ReturnAndRedispatch, e);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 转序
|
||||
/// </summary>
|
||||
public void fun_TransferSequence(DeviceDriver_BasicData.CustomeEvetnArgs e)
|
||||
{
|
||||
ThreadPool.QueueUserWorkItem(TransferSequence, e);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 下空托盘
|
||||
/// </summary>
|
||||
public void fun_UnloadEmptyTray(DeviceDriver_BasicData.CustomeEvetnArgs e)
|
||||
{
|
||||
ThreadPool.QueueUserWorkItem(UnloadEmptyTray, e);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 上空托盘
|
||||
/// </summary>
|
||||
public void fun_LoadEmptyTray(DeviceDriver_BasicData.CustomeEvetnArgs e)
|
||||
{
|
||||
ThreadPool.QueueUserWorkItem(LoadEmptyTray, e);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 点对点
|
||||
/// </summary>
|
||||
public void fun_PointToPoint(DeviceDriver_BasicData.CustomeEvetnArgs e)
|
||||
{
|
||||
ThreadPool.QueueUserWorkItem(PointToPoint, e);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
BIN
MisDataFunction/Function1054/MesServerFunction/vssver2.scc
Normal file
BIN
MisDataFunction/Function1054/MesServerFunction/vssver2.scc
Normal file
Binary file not shown.
Reference in New Issue
Block a user