chore: 初始化平芝126KV断路器线程序

This commit is contained in:
yexingqiang
2026-06-08 17:19:31 +08:00
commit e1eb90c6ed
318 changed files with 39531 additions and 0 deletions

View File

@@ -0,0 +1,235 @@
using MesServerWork;
using MisDataFunDll;
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;
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相关变量类型代码处理说明
// 301AGV请求进入
// 302AGV器具放置完毕
// 303AGV退出光栅
// 304送料信息验证完成
// 305送料信息验证结果
// 305任务发送状态 0 没有 1 发送 2 失败
// 311请求叫料
// 312请求退空
// 313请求退料
// 314允许AGV进入
// 315允许AGV离开
// 316器具码扫描完毕
// 317退回并重新配送
// 318器具号
// 319请求上料机型
// 320收到状态反馈点
// 321转序
// 322下空托盘
// 323上空托盘
// 324点对点
// 请求叫料
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;
// 点对点
case "324":
fun_PointToPoint(e);
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>
/// 器具码扫描完毕
/// </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);
}
}
}