Compare commits

..

3 Commits

Author SHA1 Message Date
SoulStar 341bab8d40 cfx - 最终验证 4 days ago
SoulStar 5e93cbd541 change - 随便改 2 months ago
SoulStar e966f2b130 change - ForTest 2 months ago

@ -15,7 +15,6 @@ using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using static System.Runtime.CompilerServices.RuntimeHelpers;
namespace Sln.Iot.Business
{
@ -67,21 +66,19 @@ namespace Sln.Iot.Business
{
//转换托盘码
string traycode = Encoding.ASCII.GetString(trayBytesResult.Content);
traycode = traycode.Replace("\0", "");
_log.Info($"RFID01 [{traycode}]");
_log.Info("RFID01" + traycode);
byte[] prodBytes = pordBytesResult.Content;
string[] prodcode = new string[6];
//分割转换产品码
for (int i = 0; i < 6; i++)
{
prodcode[i] = Encoding.ASCII.GetString(prodBytes[(i * 20)..(i * 20 + 20)]);
prodcode[i] = prodcode[i].Replace("\0", "");
}
//connect1.SendValidateUnitsRequest("", traycode, prodcode);
connect1.SendValidateUnitsRequest("", traycode, prodcode);
//生成work唯一guid(tid)
Guid tid = Guid.NewGuid();
Guid tid = new Guid();
//sql更新
bool res = trayBindingService.TrayBindingRefresh(tid, traycode, prodcode);
if (!res)
@ -100,14 +97,10 @@ namespace Sln.Iot.Business
Task.Run(() =>
{
//单元抵达事件
connect1.PublishEvent(new CFXEnvelope(unitsArrivedEvent.Handle(traycode, prodcode)));
connect2.PublishEvent(new CFXEnvelope(unitsArrivedEvent.Handle(traycode, prodcode)));
connect3.PublishEvent(new CFXEnvelope(unitsArrivedEvent.Handle(traycode, prodcode)));
_log.Info($"{traycode} 抵达设备");
//工作开始事件
connect1.PublishEvent(new CFXEnvelope(workStartedEvent.Handle(tid, traycode, prodcode)));
connect2.PublishEvent(new CFXEnvelope(workStartedEvent.Handle(tid, traycode, prodcode)));
connect3.PublishEvent(new CFXEnvelope(workStartedEvent.Handle(tid, traycode, prodcode)));
_log.Info($"工作开始ID:{tid}");
//预热炉工段开启
connect3.PublishEvent(new CFXEnvelope(workStageStartedEvent.Handle(tid, "PreHeatOven", 1)));

@ -65,18 +65,14 @@ namespace Sln.Iot.Business
{
//转换托盘码
string traycode = Encoding.ASCII.GetString(trayBytesResult.Content);
traycode = traycode.Replace("\0", "");
_log.Info($"RFID02 [{traycode}]");
_log.Info("RFID02" + traycode);
//sql更新
//待开发 记录数据
//取出work唯一guid(tid)
string stid = trayBindingService.TidGet(traycode);
if(!Guid.TryParse(stid, out Guid tid))
{
tid = Guid.Parse("11111111-1111-4111-9111-111111111111");
_log.Error("找不到对应的托盘信息赋值默认GUID");
}
Guid.TryParse(stid, out Guid tid);
bool res = false;
if (!res)

@ -59,17 +59,13 @@ namespace Sln.Iot.Business
{
//转换托盘码
string traycode = Encoding.ASCII.GetString(trayBytesResult.Content);
traycode = traycode.Replace("\0", "");
_log.Info($"RFID03 [{traycode}]");
_log.Info("RFID03" + traycode);
//sql更新
//取出work唯一guid(tid)
string stid = trayBindingService.TidGet(traycode);
if (!Guid.TryParse(stid, out Guid tid))
{
tid = Guid.Parse("11111111-1111-4111-9111-111111111111");
_log.Error("找不到对应的托盘信息赋值默认GUID");
}
Guid.TryParse(stid, out Guid tid);
bool res = trayBindingService.UpDateTime(DateTime.Now.ToString(), traycode, "1");
if (!res)
{

@ -65,17 +65,12 @@ namespace Sln.Iot.Business
{
//转换托盘吗
string traycode = Encoding.ASCII.GetString(trayBytesResult.Content);
traycode = traycode.Replace("\0", "");
_log.Info($"RFID04 [{traycode}]");
_log.Info("RFID04" + traycode);
//sql更新
//取出work唯一guid(tid)
string stid = trayBindingService.TidGet(traycode);
if (!Guid.TryParse(stid, out Guid tid))
{
tid = Guid.Parse("11111111-1111-4111-9111-111111111111");
_log.Error("找不到对应的托盘信息赋值默认GUID");
}
Guid.TryParse(stid, out Guid tid);
bool res = trayBindingService.UpDateTime(DateTime.Now.ToString(), traycode, "2");
if (!res)
@ -122,7 +117,6 @@ namespace Sln.Iot.Business
{
//转换托盘吗
string traycode = Encoding.ASCII.GetString(trayBytesResult.Content);
traycode = traycode.Replace("\0", "");
//sql更新
string nowTime = DateTime.Now.ToString();

@ -67,17 +67,12 @@ namespace Sln.Iot.Business
{
//转换托盘吗
string traycode = Encoding.ASCII.GetString(trayBytesResult.Content);
traycode = traycode.Replace("\0", "");
_log.Info($"RFID05 [{traycode}]");
_log.Info("RFID05" + traycode);
//sql更新
//取出work唯一guid(tid)
string stid = trayBindingService.TidGet(traycode);
if (!Guid.TryParse(stid, out Guid tid))
{
tid = Guid.Parse("11111111-1111-4111-9111-111111111111");
_log.Error("找不到对应的托盘信息赋值默认GUID");
}
Guid.TryParse(stid, out Guid tid);
bool res = trayBindingService.UpDateTime(DateTime.Now.ToString(), traycode, "4");
if (!res)

@ -74,18 +74,14 @@ namespace Sln.Iot.Business
{
//转换托盘吗
string traycode = Encoding.ASCII.GetString(trayBytesResult.Content);
traycode = traycode.Replace("\0", "");
_log.Info($"RFID06 [{traycode}]");
_log.Info("RFID06" + traycode);
//sql更新
//取出work唯一guid(tid)
string stid = trayBindingService.TidGet(traycode);
if (!Guid.TryParse(stid, out Guid tid))
{
tid = Guid.Parse("11111111-1111-4111-9111-111111111111");
_log.Error("找不到对应的托盘信息赋值默认GUID");
}
Guid.TryParse(stid, out Guid tid);
//待开发
string[] prodcode = trayBindingService.ProdCodeGet(traycode);
bool res = trayBindingService.TrayCodeDelete(traycode);
@ -108,17 +104,12 @@ namespace Sln.Iot.Business
//固化炉工段完成事件
connect3.PublishEvent(new CFXEnvelope(workStageCompletedEvent.Handle(tid, "CureOven", 3)));
_log.Info($"固化炉工段完成, {tid}");
//工单完成事件
connect1.PublishEvent(new CFXEnvelope(workCompletedEvent.Handle(tid, traycode, prodcode)));
connect2.PublishEvent(new CFXEnvelope(workCompletedEvent.Handle(tid, traycode, prodcode)));
connect3.PublishEvent(new CFXEnvelope(workCompletedEvent.Handle(tid, traycode, prodcode)));
_log.Info($"工单完成 ID:{tid}");
//单元离站事件
connect1.PublishEvent(new CFXEnvelope(unitsDepartedEvent.Handle(traycode, prodcode)));
connect2.PublishEvent(new CFXEnvelope(unitsDepartedEvent.Handle(traycode, prodcode)));
connect3.PublishEvent(new CFXEnvelope(unitsDepartedEvent.Handle(traycode, prodcode)));
_log.Info($"{traycode} 单元离站 ");
//工单完成事件
connect2.PublishEvent(new CFXEnvelope(workCompletedEvent.Handle(tid, traycode, prodcode)));
_log.Info($"工单完成 ID:{tid}");
//固化炉数据采集
var unitsdata = unitsProcessPLCDataGetBusiness.CureOvenPlcDataGet();

@ -14,7 +14,6 @@ using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using static System.Runtime.CompilerServices.RuntimeHelpers;
namespace Sln.Iot.Business
{
@ -25,24 +24,15 @@ namespace Sln.Iot.Business
private readonly PLCConnect _plc = PLCConnect.Instance;
private readonly SerilogHelper _log = SerilogHelper.Instance;
private TrayBindingService trayBindingService = TrayBindingService.Instance;
private ErrorAnalyseBusiness _errorAnalyse;
private RecipeBusiness _recipeBusiness;
public TestBusiness()
{
//_errorAnalyse = new ErrorAnalyseBusiness();
//_recipeBusiness = new RecipeBusiness();
_errorAnalyse = new ErrorAnalyseBusiness();
_recipeBusiness = new RecipeBusiness();
//_timer = new Timer(TimerCallback, null, 0, 1000);
//sql更新
//取出work唯一guid(tid)
var traycode = "M3\0\0\0\0\0\0\0\0\0\0";
traycode = traycode.Replace("\0", "");
bool res = trayBindingService.UpDateTime(DateTime.Now.ToString(), traycode, "1");
}
/// <summary>

@ -23,29 +23,29 @@ namespace Sln.Iot.CFX.CFXBusiness
/// <returns></returns>
public CommonProcessData ProcessDataGet1(UnitsProcess1Entity entity)
{
//entity = new UnitsProcess1Entity()
//{
// GlueAmountSetValue1 = 123.4f,
// GluePushSpeedSetValue1 = 10.1f,
// BarrelA1TempActValue1 = 60,
// BarrelA2TempActValue1 = 60,
// BarrelB1TempActValue1 = 60,
// BarrelB2TempActValue1 = 60,
// PumpAPressureActValue1 = 3.5f,
// PumpBPressureActValue1 = 3.2f,
// VacuumDegreeActValue1 = 3000.4f,
// PressureHoldTimeSetValue1 = 100,
// GlueAmountSetValue2 = 123.4f,
// GluePushSpeedSetValue2 = 10.1f,
// BarrelA1TempActValue2 = 60,
// BarrelA2TempActValue2 = 60,
// BarrelB1TempActValue2 = 60,
// BarrelB2TempActValue2 = 60,
// PumpAPressureActValue2 = 3.5f,
// PumpBPressureActValue2 = 3.2f,
// VacuumDegreeActValue2 = 3000.4f,
// PressureHoldTimeSetValue2 = 100,
//};
entity = new UnitsProcess1Entity()
{
GlueAmountSetValue1 = 123.4f,
GluePushSpeedSetValue1 = 10.1f,
BarrelA1TempActValue1 = 60,
BarrelA2TempActValue1 = 60,
BarrelB1TempActValue1 = 60,
BarrelB2TempActValue1 = 60,
PumpAPressureActValue1 = 3.5f,
PumpBPressureActValue1 = 3.2f,
VacuumDegreeActValue1 = 3000.4f,
PressureHoldTimeSetValue1 = 100,
GlueAmountSetValue2 = 123.4f,
GluePushSpeedSetValue2 = 10.1f,
BarrelA1TempActValue2 = 60,
BarrelA2TempActValue2 = 60,
BarrelB1TempActValue2 = 60,
BarrelB2TempActValue2 = 60,
PumpAPressureActValue2 = 3.5f,
PumpBPressureActValue2 = 3.2f,
VacuumDegreeActValue2 = 3000.4f,
PressureHoldTimeSetValue2 = 100,
};
CommonProcessData processData = new CommonProcessData()
{
@ -203,18 +203,53 @@ namespace Sln.Iot.CFX.CFXBusiness
{
Zone = new CommonUseZone()
{
ZoneName = "Zone1",
ZoneName = "Zone",
StageSequence = 1,
StageName = "Conveyor1"
},
},
//new CommonUseZoneData()
//{
// Zone = new CommonUseZone()
// {
// ZoneName = "Zone2",
// StageSequence = 2,
// StageName = "Conveyor2"
// },
//}
}
};
return processData;
}
/// <summary>
/// 升降回流数据
/// </summary>
/// <returns></returns>
public CommonProcessData ProcessDataGet4()
{
CommonProcessData processData = new CommonProcessData()
{
ZoneData = new List<CommonUseZoneData>
{
//new CommonUseZoneData()
//{
// Zone = new CommonUseZone()
// {
// ZoneName = "Zone1",
// StageSequence = 1,
// StageName = "Conveyor1"
// },
//},
new CommonUseZoneData()
{
Zone = new CommonUseZone()
{
ZoneName = "Zone2",
StageSequence = 2,
ZoneName = "Zone",
StageSequence = 1,
StageName = "Conveyor2"
},
}
@ -230,18 +265,18 @@ namespace Sln.Iot.CFX.CFXBusiness
/// <returns></returns>
public CommonProcessData ProcessDataGet3(UnitsProcess3Entity entity)
{
//entity = new UnitsProcess3Entity()
//{
// PreheatOvenTempActValue = 800,
// PreCureOven1TempActValue = 800,
// PreCureOven2TempActValue = 800,
// PreCureOven3TempActValue = 800,
// PreCureOven4TempActValue = 800,
// CureOven1TempActValue = 800,
// CureOven2TempActValue = 800,
// CureOven3TempActValue = 800,
// CureOven4TempActValue = 800,
//};
entity = new UnitsProcess3Entity()
{
PreheatOvenTempActValue = 800,
PreCureOven1TempActValue = 800,
PreCureOven2TempActValue = 800,
PreCureOven3TempActValue = 800,
PreCureOven4TempActValue = 800,
CureOven1TempActValue = 800,
CureOven2TempActValue = 800,
CureOven3TempActValue = 800,
CureOven4TempActValue = 800,
};
CommonProcessData processData = new CommonProcessData()
{

@ -40,7 +40,7 @@ namespace Sln.Iot.CFX.CFXConnect
CFXEventTools cFXEventTools = CFXEventTools.Instance;
public string CFXHandle { get; set; } = "CFX.A00.SDSH000001";
public string CFXHandle { get; set; } = "CFX.A00.OT00470018";
protected override CFXMessage HandleRequest(CFXEnvelope request)
{

@ -42,7 +42,7 @@ namespace Sln.Iot.CFX.CFXConnect
CFXEventTools cFXEventTools = CFXEventTools.Instance;
public string CFXHandle { get; set; } = "SDSH000002";
public string CFXHandle { get; set; } = "CFX.A00.OT00470019";
protected override CFXMessage HandleRequest(CFXEnvelope request)
{
@ -112,7 +112,7 @@ namespace Sln.Iot.CFX.CFXConnect
var validateresult = Endpoint.ExecuteRequest(uri, new CFXEnvelope(msg)
{
Source = Endpoint.CFXHandle,
Target = "CFX.A00.SDSH000002"
Target = "inline-control"
});
if (validateresult == null)

@ -42,7 +42,7 @@ namespace Sln.Iot.CFX.CFXConnect
CFXEventTools cFXEventTools = CFXEventTools.Instance;
public string CFXHandle { get; set; } = "SDSH000003";
public string CFXHandle { get; set; } = "CFX.A00.OT00470017";
protected override CFXMessage HandleRequest(CFXEnvelope request)
{
@ -112,7 +112,7 @@ namespace Sln.Iot.CFX.CFXConnect
var validateresult = Endpoint.ExecuteRequest(uri, new CFXEnvelope(msg)
{
Source = Endpoint.CFXHandle,
Target = "CFX.A00.SDSH000003"
Target = "inline-control"
});
if (validateresult == null)

@ -0,0 +1,132 @@
using CFX.InformationSystem.UnitValidation;
using CFX.ResourcePerformance;
using CFX.Structures;
using CFX;
using Sln.Iot.CFX.RequestReceived;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using CFX.Production;
using Sln.Iot.CFX.CFXRequestes;
using Sln.Iot.CFX.CFXBusiness;
using Sln.Iot.CFX.Event;
namespace Sln.Iot.CFX.CFXConnect
{
/// <summary>
/// 提升机2连接
/// </summary>
public class CFXConnect4 : CFXHelper
{
private static readonly Lazy<CFXConnect4> lazy = new Lazy<CFXConnect4>(() => new CFXConnect4());
public static CFXConnect4 Instance
{
get
{
return lazy.Value;
}
}
AreYouThereRequestReceived4 areYouThereRequestReceived4 = new AreYouThereRequestReceived4();
GetEndpointInformationRequestReceived4 getEndpointInformationRequestReceived4 = new GetEndpointInformationRequestReceived4();
WhoIsThereRequestReceived4 whoIsThereRequestReceived4 = new WhoIsThereRequestReceived4();
GetActiveRecipeRequestReceived4 getActiveRecipeRequestReceived4 = new GetActiveRecipeRequestReceived4();
GetActiveFaultsRequestReceived4 getActiveFaultsRequestReceived4 = new GetActiveFaultsRequestReceived4();
HandleFaultRequestReceived4 handleFaultRequestReceived4 = new HandleFaultRequestReceived4();
ModifyStationParametersRequestReceived4 modifyStationParametersRequestReceived4 = new ModifyStationParametersRequestReceived4();
//HeartbeatEvent heartbeatEvent = new HeartbeatEvent();
CFXEventTools cFXEventTools = CFXEventTools.Instance;
public string CFXHandle { get; set; } = "CFX.A00.OT00470020";
protected override CFXMessage HandleRequest(CFXEnvelope request)
{
CFXMessage response = null;
if (request.MessageBody is AreYouThereRequest) //存在性检测请求
{
areYouThereRequestReceived4.Handle(request.MessageBody as AreYouThereRequest, out response);
}
else if (request.MessageBody is GetEndpointInformationRequest) //获取终端节点信息请求
{
getEndpointInformationRequestReceived4.Handle(request.MessageBody as GetEndpointInformationRequest, out response);
}
else if (request.MessageBody is WhoIsThereRequest) //设备存在性查询请求
{
whoIsThereRequestReceived4.Handle(request.MessageBody as WhoIsThereRequest, out response);
}
else if (request.MessageBody is GetActiveRecipeRequest) //获取当前激活配方请求
{
getActiveRecipeRequestReceived4.Handle(request.MessageBody as GetActiveRecipeRequest, out response);
}
else if (request.MessageBody is GetActiveFaultsRequest) //获取当前错误状态请求
{
getActiveFaultsRequestReceived4.Handle(request.MessageBody as GetActiveFaultsRequest, out response);
}
else if (request.MessageBody is HandleFaultRequest) //处理错误请求
{
handleFaultRequestReceived4.Handle(request.MessageBody as HandleFaultRequest, out response);
}
else if (request.MessageBody is ModifyStationParametersRequest) //设备修改参数请求
{
modifyStationParametersRequestReceived4.Handle(request.MessageBody as ModifyStationParametersRequest, out response);
}
else //不支持的请求类型
{
response = new NotSupportedResponse()
{
RequestResult = new RequestResult()
{
Result = StatusResult.Failed,
ResultCode = 0,
Message = $"不支持的请求类型:{request.MessageBody.GetType().Name}"
}
};
}
return response;
}
/// <summary>
/// 发送生产单元验证请求接收通知
/// </summary>
public void SendValidateUnitsRequest(string uri, string primaryIdentifier, string[] unitsIdentifier)
{
try
{
ValidateUnitsRequest msg = new ValidateUnitsRequest()
{
Validations = new List<ValidationType>()
{
ValidationType.UnitTraceValidation,
},
PrimaryIdentifier = primaryIdentifier,
Units = cFXEventTools.UnitPositionTrans(unitsIdentifier)
};
var validateresult = Endpoint.ExecuteRequest(uri, new CFXEnvelope(msg)
{
Source = Endpoint.CFXHandle,
Target = "inline-control"
});
if (validateresult == null)
{
return;
}
var response = validateresult.MessageBody as ValidateUnitsResponse;
//响应逻辑
}
catch (Exception ex)
{
}
}
}
}

@ -52,7 +52,7 @@ public class AreYouThereRequestReceived1 : BaseAreYouThereRequestReceived
Message = "",
},
CFXHandle = "CFX.A00.SDSH000001",
CFXHandle = "CFX.A00.OT00470018",
RequestNetworkUri = "amqp://127.0.0.1:1235/",
RequestTargetAddress = "amqp://127.0.0.1:8888/"
};

@ -52,7 +52,7 @@ public class AreYouThereRequestReceived2 : BaseAreYouThereRequestReceived
Message = "",
},
CFXHandle = "CFX.A00.SDSH000002",
CFXHandle = "CFX.A00.OT00470019",
RequestNetworkUri = "amqp://127.0.0.1:1235/",
RequestTargetAddress = "amqp://127.0.0.1:8888/"
};

@ -52,7 +52,7 @@ public class AreYouThereRequestReceived3 : BaseAreYouThereRequestReceived
Message = "",
},
CFXHandle = "CFX.A00.SDSH000003",
CFXHandle = "CFX.A00.OT00470017",
RequestNetworkUri = "amqp://127.0.0.1:1235/",
RequestTargetAddress = "amqp://127.0.0.1:8888/"
};

@ -0,0 +1,63 @@
#region << 版 本 注 释 >>
/*--------------------------------------------------------------------
* (c) 2025 WenJY
* CLR4.0.30319.42000
* Mr.Wen's MacBook Pro
* Sln.Iot.CFX.CoreCommunications
* 8D142D51-E08D-42FC-8C59-4551A1B36306
*
* WenJY
*
* 2025-10-24 14:58:25
* V1.0.0
*
*
*--------------------------------------------------------------------
*
*
*
*
* V1.0.0
*--------------------------------------------------------------------*/
#endregion << 版 本 注 释 >>
using CFX;
using CFX.Structures;
using Sln.Iot.CFX.RequestReceived;
using Sln.Iot.Serilog;
namespace Sln.Iot.CFX.CFXRequestes;
/// <summary>
/// 5.4.1.1-端点在位查询请求
/// AreYouThereRequest/Response
/// </summary>
public class AreYouThereRequestReceived4 : BaseAreYouThereRequestReceived
{
/// <summary>
/// 子类重写处理
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public override CFXMessage SubHandle(AreYouThereRequest request)
{
CFXMessage response = new AreYouThereResponse()
{
Result = new RequestResult()
{
Result = StatusResult.Success,
ResultCode = 0,
Message = "",
},
CFXHandle = "CFX.A00.OT00470020",
RequestNetworkUri = "amqp://127.0.0.1:1235/",
RequestTargetAddress = "amqp://127.0.0.1:8888/"
};
return response;
}
}

@ -48,27 +48,27 @@ public class GetActiveFaultsRequestReceived1 : BaseGetActiveFaultsRequestReceive
public override CFXMessage SubHandle(GetActiveFaultsRequest request)
{
// 获取现在所有的错误
var errorList1 = errorService.GetV1List().ToList();
var errorList2 = errorService.GetV2List().ToList();
//var errorList1 = errorService.GetV1List().ToList();
//var errorList2 = errorService.GetV2List().ToList();
List<Fault> faults = new List<Fault>();
//List<Fault> faults = new List<Fault>();
foreach (var fault in errorList1)
{
faults.Add(new Fault()
{
Description = fault.ErrorName,
FaultCode = fault.ErrorCode,
});
}
foreach (var fault in errorList2)
{
faults.Add(new Fault()
{
Description = fault.ErrorName,
FaultCode = fault.ErrorCode,
});
}
//foreach (var fault in errorList1)
//{
// faults.Add(new Fault()
// {
// Description = fault.ErrorName,
// FaultCode = fault.ErrorCode,
// });
//}
//foreach (var fault in errorList2)
//{
// faults.Add(new Fault()
// {
// Description = fault.ErrorName,
// FaultCode = fault.ErrorCode,
// });
//}
CFXMessage response = new GetActiveFaultsResponse()
{

@ -48,18 +48,18 @@ public class GetActiveFaultsRequestReceived2 : BaseGetActiveFaultsRequestReceive
public override CFXMessage SubHandle(GetActiveFaultsRequest request)
{
// 获取现在所有的错误
var errorList = errorService.GetLiftList().ToList();
//var errorList = errorService.GetLiftList().ToList();
List<Fault> faults = new List<Fault>();
//List<Fault> faults = new List<Fault>();
foreach (var fault in errorList)
{
faults.Add(new Fault()
{
Description = fault.ErrorName,
FaultCode = fault.ErrorCode,
});
}
//foreach (var fault in errorList)
//{
// faults.Add(new Fault()
// {
// Description = fault.ErrorName,
// FaultCode = fault.ErrorCode,
// });
//}
CFXMessage response = new GetActiveFaultsResponse()
{

@ -50,16 +50,16 @@ public class GetActiveFaultsRequestReceived3 : BaseGetActiveFaultsRequestReceive
// 获取现在所有的错误
var errorList = errorService.GetOvenList().ToList();
List<Fault> faults = new List<Fault>();
//List<Fault> faults = new List<Fault>();
foreach (var fault in errorList)
{
faults.Add(new Fault()
{
Description = fault.ErrorName,
FaultCode = fault.ErrorCode,
});
}
//foreach (var fault in errorList)
//{
// faults.Add(new Fault()
// {
// Description = fault.ErrorName,
// FaultCode = fault.ErrorCode,
// });
//}
CFXMessage response = new GetActiveFaultsResponse()
{

@ -0,0 +1,84 @@
#region << 版 本 注 释 >>
/*--------------------------------------------------------------------
* (c) 2025 WenJY
* CLR4.0.30319.42000
* Mr.Wen's MacBook Pro
* Sln.Iot.CFX
* CB14024A-08C4-4FF4-BD6C-8E8667D00263
*
* WenJY
*
* 2025-10-24 15:23:00
* V1.0.0
*
*
*--------------------------------------------------------------------
*
*
*
*
* V1.0.0
*--------------------------------------------------------------------*/
#endregion << 版 本 注 释 >>
using CFX;
using CFX.ResourcePerformance;
using CFX.Structures;
using Sln.Iot.CFX.RequestReceived;
using Sln.Iot.Repository.service;
using Sln.Iot.Serilog;
namespace Sln.Iot.CFX.CFXRequestes;
/// <summary>
/// 5.4.4.1.5 - 查询当前有无错误
/// GetActiveFaultsRequest/Response
/// </summary>
public class GetActiveFaultsRequestReceived4 : BaseGetActiveFaultsRequestReceived
{
private readonly ErrorService errorService = ErrorService.Instance;
/// <summary>
/// 子类重写处理
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public override CFXMessage SubHandle(GetActiveFaultsRequest request)
{
// 获取现在所有的错误
var errorList = errorService.GetOvenList().ToList();
//List<Fault> faults = new List<Fault>();
//foreach (var fault in errorList)
//{
// faults.Add(new Fault()
// {
// Description = fault.ErrorName,
// FaultCode = fault.ErrorCode,
// });
//}
CFXMessage response = new GetActiveFaultsResponse()
{
Result = new RequestResult()
{
Result = StatusResult.Success,
ResultCode = 0,
Message = "",
},
ActiveFaults = new List<Fault>()
{
new Fault()
{
Description = "测试错误1",
FaultCode = "5003",
}
}
};
return response;
}
}

@ -54,20 +54,18 @@ public class GetActiveRecipeRequestReceived1 : BaseGetActiveRecipeRequestReceive
string restr1 = string.Empty;
string restr2 = string.Empty;
//获取现在激活的配方
var res1 = _plc.ReadBytes(_plc.DeltaInstance1, "D600", 10);
var res2 = _plc.ReadBytes(_plc.DeltaInstance2, "D600", 10);
////获取现在激活的配方
//var res1 = _plc.ReadBytes(_plc.DeltaInstance1, "D600", 10);
//var res2 = _plc.ReadBytes(_plc.DeltaInstance2, "D600", 10);
if (res1.IsSuccess)
{
restr1 = Encoding.ASCII.GetString(res1.Content);
restr1 = restr1.Replace("\0", "");
}
if (res2.IsSuccess)
{
restr2 = Encoding.ASCII.GetString(res2.Content);
restr2 = restr2.Replace("\0", "");
}
//if (res1.IsSuccess)
//{
// restr1 = Encoding.ASCII.GetString(res1.Content);
//}
//if (res2.IsSuccess)
//{
// restr2 = Encoding.ASCII.GetString(res2.Content);
//}
CFXMessage response = new GetActiveRecipeResponse()
{

@ -0,0 +1,62 @@
#region << 版 本 注 释 >>
/*--------------------------------------------------------------------
* (c) 2025 WenJY
* CLR4.0.30319.42000
* Mr.Wen's MacBook Pro
* Sln.Iot.CFX
* 686D7EAB-9E42-43B2-B990-AF162E76F781
*
* WenJY
*
* 2025-10-24 15:18:38
* V1.0.0
*
*
*--------------------------------------------------------------------
*
*
*
*
* V1.0.0
*--------------------------------------------------------------------*/
#endregion << 版 本 注 释 >>
using CFX;
using CFX.Production;
using CFX.Structures;
using Sln.Iot.CFX.RequestReceived;
using Sln.Iot.Serilog;
namespace Sln.Iot.CFX.CFXRequestes;
/// <summary>
/// 5.4.3.1.3 - 获取激活配方请求
/// GetActiveRecipeRequest/Response
/// </summary>
public class GetActiveRecipeRequestReceived4 : BaseGetActiveRecipeRequestReceived
{
/// <summary>
/// 子类重写处理
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public override CFXMessage SubHandle(GetActiveRecipeRequest request)
{
CFXMessage response = new GetActiveRecipeResponse()
{
ActiveRecipeName = "No Recipe Device",
ActiveRecipeRevision = "1.0",
Result = new RequestResult()
{
Result = StatusResult.Success,
ResultCode = 0,
Message = ""
}
//配方数据
};
return response;
}
}

@ -55,14 +55,14 @@ public class GetEndpointInformationRequestReceived1 : BaseGetEndpointInformation
},
EndpointInformation = new Endpoint()
{
CFXHandle = "CFX.A00.SDSH000001",
CFXHandle = "CFX.A00.OT00470018",
CFXVersion = "2.0",
RequestNetworkUri = "amqp://127.0.0.1:1235/",
RequestTargetAddress = "amqp://127.0.0.1:8888/",
ModelNumber = "XYZ真空注胶机",
ModelNumber = "真空注胶机",
NumberOfLanes = 1,
Vendor = "木子贸易中山有限公司",
SerialNumber = "SDSH000001",
SerialNumber = "OT00470018",
Stages = new List<StageInformation>
{
new StageInformation()

@ -55,14 +55,14 @@ public class GetEndpointInformationRequestReceived2 : BaseGetEndpointInformation
},
EndpointInformation = new Endpoint()
{
CFXHandle = "CFX.A00.SDSH000002",
CFXHandle = "CFX.A00.OT00470019",
CFXVersion = "2.0",
RequestNetworkUri = "amqp://127.0.0.1:1235/",
RequestTargetAddress = "amqp://127.0.0.1:8888/",
ModelNumber = "升降回流",
ModelNumber = "升降回流机-1",
NumberOfLanes = 1,
Vendor = "木子贸易中山有限公司",
SerialNumber = "SDSH000002",
SerialNumber = "OT00470019",
Stages = new List<StageInformation>
{
new StageInformation()
@ -74,15 +74,15 @@ public class GetEndpointInformationRequestReceived2 : BaseGetEndpointInformation
StageSequence = 1,
}
},
new StageInformation()
{
Stage = new Stage()
{
StageName = "ConveyorOut",
StageType = StageType.Work,
StageSequence = 2,
}
}
//new StageInformation()
//{
// Stage = new Stage()
// {
// StageName = "ConveyorOut",
// StageType = StageType.Work,
// StageSequence = 2,
// }
//}
},
SupportedTopics = CFXSupportedTopicList.SupportedTopics
}

@ -55,14 +55,14 @@ public class GetEndpointInformationRequestReceived3 : BaseGetEndpointInformation
},
EndpointInformation = new Endpoint()
{
CFXHandle = "CFX.A00.SDSH000003",
CFXHandle = "CFX.A00.OT00470017",
CFXVersion = "2.0",
RequestNetworkUri = "amqp://127.0.0.1:1235/",
RequestTargetAddress = "amqp://127.0.0.1:8888/",
ModelNumber = "隧道烤箱",
NumberOfLanes = 1,
Vendor = "木子贸易中山有限公司",
SerialNumber = "SDSH000003",
SerialNumber = "OT00470017",
Stages = new List<StageInformation>
{
new StageInformation()

@ -0,0 +1,93 @@
#region << 版 本 注 释 >>
/*--------------------------------------------------------------------
* (c) 2025 WenJY
* CLR4.0.30319.42000
* Mr.Wen's MacBook Pro
* Sln.Iot.CFX.CoreCommunications
* 4063233D-BE40-415F-B28C-EBA14C47EA52
*
* WenJY
*
* 2025-10-24 15:00:21
* V1.0.0
*
*
*--------------------------------------------------------------------
*
*
*
*
* V1.0.0
*--------------------------------------------------------------------*/
#endregion << 版 本 注 释 >>
using CFX;
using CFX.Structures;
using Sln.Iot.CFX.CFXBusiness;
using Sln.Iot.CFX.RequestReceived;
using Sln.Iot.Serilog;
namespace Sln.Iot.CFX.CFXRequestes;
/// <summary>
/// 5.4.1.4 - 获取端点信息请求
/// GetEndpointInformationRequest/Response
/// </summary>
public class GetEndpointInformationRequestReceived4 : BaseGetEndpointInformationRequestReceived
{
/// <summary>
/// 子类重写处理
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public override CFXMessage SubHandle(GetEndpointInformationRequest request)
{
CFXMessage response = new GetEndpointInformationResponse()
{
Result = new RequestResult()
{
Result = StatusResult.Success,
ResultCode = 0,
Message = "",
},
EndpointInformation = new Endpoint()
{
CFXHandle = "CFX.A00.OT00470020",
CFXVersion = "2.0",
RequestNetworkUri = "amqp://127.0.0.1:1235/",
RequestTargetAddress = "amqp://127.0.0.1:8888/",
ModelNumber = "升降回流机-2",
NumberOfLanes = 1,
Vendor = "木子贸易中山有限公司",
SerialNumber = "OT00470020",
Stages = new List<StageInformation>
{
//new StageInformation()
//{
// Stage = new Stage()
// {
// StageName = "ConveyorIn",
// StageType = StageType.Work,
// StageSequence = 1,
// }
//},
new StageInformation()
{
Stage = new Stage()
{
StageName = "ConveyorOut",
StageType = StageType.Work,
StageSequence = 1,
}
}
},
SupportedTopics = CFXSupportedTopicList.SupportedTopics
}
};
return response;
}
}

@ -0,0 +1,65 @@
#region << 版 本 注 释 >>
/*--------------------------------------------------------------------
* (c) 2025 WenJY
* CLR4.0.30319.42000
* Mr.Wen's MacBook Pro
* Sln.Iot.CFX
* F3C2C0B6-F8E7-4869-B396-291233785B23
*
* WenJY
*
* 2025-10-24 15:20:11
* V1.0.0
*
*
*--------------------------------------------------------------------
*
*
*
*
* V1.0.0
*--------------------------------------------------------------------*/
#endregion << 版 本 注 释 >>
using CFX;
using CFX.ResourcePerformance;
using CFX.Structures;
using Sln.Iot.CFX.RequestReceived;
using Sln.Iot.Serilog;
namespace Sln.Iot.CFX.CFXRequestes;
/// <summary>
/// 5.4.4.1.4 - 处理故障请求
/// HandleFaultRequest/Response
/// </summary>
public class HandleFaultRequestReceived4 : BaseHandleFaultRequestReceived
{
/// <summary>
/// 子类重写处理
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public override CFXMessage SubHandle(HandleFaultRequest request)
{
if (request.HandleRemote == true)
{
//熄灭报警灯
}
CFXMessage response = new HandleFaultResponse()
{
Result = new RequestResult()
{
Result = StatusResult.Success,
ResultCode = 0,
Message = "",
},
};
return response;
}
}

@ -0,0 +1,63 @@
#region << 版 本 注 释 >>
/*--------------------------------------------------------------------
* (c) 2025 WenJY
* CLR4.0.30319.42000
* Mr.Wen's MacBook Pro
* Sln.Iot.CFX.CoreCommunications
* 8E7C0E19-8462-42CA-AC22-F89BF2927C6A
*
* WenJY
*
* 2025-10-24 15:00:54
* V1.0.0
*
*
*--------------------------------------------------------------------
*
*
*
*
* V1.0.0
*--------------------------------------------------------------------*/
#endregion << 版 本 注 释 >>
using CFX;
using CFX.ResourcePerformance;
using CFX.Structures;
using Sln.Iot.CFX.RequestReceived;
using Sln.Iot.Serilog;
namespace Sln.Iot.CFX.CFXRequestes;
/// <summary>
/// 5.4.1.5 - 广播查询请求
/// WhoIsThereRequest/Response
/// </summary>
public class ModifyStationParametersRequestReceived4 : BaseModifyStationParametersRequestReceived
{
/// <summary>
/// 子类重写处理
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public override CFXMessage SubHandle(ModifyStationParametersRequest request)
{
//配方修改
//同时主动上报StationParameterModified
CFXMessage response = new ModifyStationParametersResponse()
{
Result = new RequestResult()
{
Result = StatusResult.Success,
ResultCode = 0,
Message = "",
},
};
return response;
}
}

@ -55,7 +55,7 @@ public class WhoIsThereRequestReceived1 : BaseWhoIsThereRequestReceived
Message = "",
},
CFXHandle = "CFX.A00.SDSH000001",
CFXHandle = "CFX.A00.OT00470018",
RequestNetworkUri = "amqp://127.0.0.1:1235/",
RequestTargetAddress = "amqp://127.0.0.1:8888/"
};

@ -55,7 +55,7 @@ public class WhoIsThereRequestReceived2 : BaseWhoIsThereRequestReceived
Message = "",
},
CFXHandle = "CFX.A00.SDSH000002",
CFXHandle = "CFX.A00.OT00470019",
RequestNetworkUri = "amqp://127.0.0.1:1235/",
RequestTargetAddress = "amqp://127.0.0.1:8888/"
};

@ -55,7 +55,7 @@ public class WhoIsThereRequestReceived3 : BaseWhoIsThereRequestReceived
Message = "",
},
CFXHandle = "CFX.A00.SDSH000003",
CFXHandle = "CFX.A00.OT00470017",
RequestNetworkUri = "amqp://127.0.0.1:1235/",
RequestTargetAddress = "amqp://127.0.0.1:8888/"
};

@ -0,0 +1,70 @@
#region << 版 本 注 释 >>
/*--------------------------------------------------------------------
* (c) 2025 WenJY
* CLR4.0.30319.42000
* Mr.Wen's MacBook Pro
* Sln.Iot.CFX.CoreCommunications
* 8E7C0E19-8462-42CA-AC22-F89BF2927C6A
*
* WenJY
*
* 2025-10-24 15:00:54
* V1.0.0
*
*
*--------------------------------------------------------------------
*
*
*
*
* V1.0.0
*--------------------------------------------------------------------*/
#endregion << 版 本 注 释 >>
using CFX;
using CFX.Structures;
using Sln.Iot.CFX.CFXBusiness;
using Sln.Iot.CFX.RequestReceived;
using Sln.Iot.Serilog;
namespace Sln.Iot.CFX.CFXRequestes;
/// <summary>
/// 5.4.1.5 - 广播查询请求
/// WhoIsThereRequest/Response
/// </summary>
public class WhoIsThereRequestReceived4 : BaseWhoIsThereRequestReceived
{
/// <summary>
/// 子类重写处理
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public override CFXMessage SubHandle(WhoIsThereRequest request)
{
if (CFXSupportedTopicList.IsSupportJudge(request.SupportedTopics))
{
CFXMessage response = new WhoIsThereResponse()
{
Result = new RequestResult()
{
Result = StatusResult.Success,
ResultCode = 0,
Message = "",
},
CFXHandle = "CFX.A00.OT00470020",
RequestNetworkUri = "amqp://127.0.0.1:1235/",
RequestTargetAddress = "amqp://127.0.0.1:8888/"
};
return response;
}
else
{
return null;
}
}
}

@ -20,6 +20,7 @@ namespace Sln.Iot.CFX
CFXConnect1 _cfxHelper = CFXConnect1.Instance;
CFXConnect2 _cfxHelper2 = CFXConnect2.Instance;
CFXConnect3 _cfxHelper3 = CFXConnect3.Instance;
CFXConnect4 _cfxHelper4 = CFXConnect4.Instance;
CFXUnitProcessedDataGet cFXUnitProcessedDataGet = CFXUnitProcessedDataGet.Instance;
//HeartbeatEvent heartbeatEvent = new HeartbeatEvent();
@ -53,7 +54,7 @@ namespace Sln.Iot.CFX
//// 发布所有事件
////_cfxHelper.PublishEvent(new CFXEnvelope(heartbeatEvent.Handle("CFX.A00.SDSH000001")));
_cfxHelper.PublishEvent(new CFXEnvelope(endpointConnectedEvent.Handle("CFX.A00.SDSH000001", "amqp://127.0.0.1:1235", "amqp://127.0.0.1:8888")));
_cfxHelper.PublishEvent(new CFXEnvelope(endpointConnectedEvent.Handle("CFX.A00.OT00470018", "amqp://127.0.0.1:1235", "amqp://127.0.0.1:8888")));
_cfxHelper.PublishEvent(new CFXEnvelope(faultOccurredEvent.Handle("01", FaultSeverity.Warning, testGuid, "Error", testGuid)));
_cfxHelper.PublishEvent(new CFXEnvelope(faultAcknowledgedEvent.Handle()));
_cfxHelper.PublishEvent(new CFXEnvelope(stationStateChangedEvent.Handle(ResourceState.USD_Repair)));
@ -65,20 +66,34 @@ namespace Sln.Iot.CFX
_cfxHelper.PublishEvent(new CFXEnvelope(stationOfflineEvent.Handle()));
_cfxHelper.PublishEvent(new CFXEnvelope(stationOnlineEvent.Handle()));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000001", "制程设备", "-1", "0", "-1", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000001", "制程设备", "0", "1", "0", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000001", "制程设备", "1", "4", "1", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000001", "制程设备", "2", "2", "2", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000001", "制程设备", "3", "2", "3", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000001", "制程设备", "4", "2", "4", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000001", "制程设备", "5", "2", "5", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000001", "制程设备", "6", "1", "6", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000001", "制程设备", "7", "2", "7", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000001", "制程设备", "8", "2", "8", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000001", "制程设备", "9", "2", "9", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000001", "制程设备", "10", "3", "10", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000001", "制程设备", "11", "3", "11", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000001", "制程设备", "12", "2", "12", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470018", "制程设备", "-1", "0", "-1", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470018", "制程设备", "0", "1", "0", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470018", "制程设备", "1", "4", "1", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470018", "制程设备", "2", "2", "2", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470018", "制程设备", "3", "2", "3", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470018", "制程设备", "4", "2", "4", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470018", "制程设备", "5", "2", "5", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470018", "制程设备", "6", "1", "6", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470018", "制程设备", "7", "2", "7", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470018", "制程设备", "8", "2", "8", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470018", "制程设备", "9", "2", "9", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470018", "制程设备", "10", "3", "1", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470018", "制程设备", "11", "3", "1", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470018", "制程设备", "12", "2", "12", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470018", "制程设备", "1", "2", "18", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470018", "制程设备", "1", "2", "20", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470018", "制程设备", "1", "2", "21", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470018", "制程设备", "1", "2", "22", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470018", "制程设备", "1", "2", "24", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470018", "制程设备", "1", "2", "61", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470018", "制程设备", "1", "2", "62", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470018", "制程设备", "1", "2", "63", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470018", "制程设备", "1", "2", "68", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470018", "制程设备", "1", "2", "69", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470018", "制程设备", "1", "2", "70", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper.PublishEvent(new CFXEnvelope(unitsArrivedEvent.Handle("A123456", new string[1] { "A123" })));
_cfxHelper.PublishEvent(new CFXEnvelope(workStartedEvent.Handle(testGuid, "A123456", new string[]{ "A123" })));
@ -95,7 +110,7 @@ namespace Sln.Iot.CFX
_cfxHelper.PublishEvent(new CFXEnvelope(workCompletedEvent.Handle(testGuid, "A123456", new string[] { "A123" })));
_cfxHelper.PublishEvent(new CFXEnvelope(unitsDepartedEvent.Handle(null, new string[1] { "A123" })));
_cfxHelper.PublishEvent(new CFXEnvelope(unitsProcessedEvent.Handle(testGuid, cFXUnitProcessedDataGet.ProcessDataGet1(new UnitsProcess1Entity()))));
_cfxHelper.PublishEvent(new CFXEnvelope(endpointShuttingDownEvent.Handle("CFX.A00.SDSH000001")));
_cfxHelper.PublishEvent(new CFXEnvelope(endpointShuttingDownEvent.Handle("CFX.A00.OT00470018")));
_cfxHelper.SendValidateUnitsRequest("amqp://127.0.0.1:8888", "A123456", new string[1] { "A123" });
}
@ -108,7 +123,7 @@ namespace Sln.Iot.CFX
//// 发布所有事件
////_cfxHelper2.PublishEvent(new CFXEnvelope(heartbeatEvent.Handle("CFX.A00.SDSH000002")));
_cfxHelper2.PublishEvent(new CFXEnvelope(endpointConnectedEvent.Handle("CFX.A00.SDSH000002", "amqp://127.0.0.1:1235", "amqp://127.0.0.1:8888")));
_cfxHelper2.PublishEvent(new CFXEnvelope(endpointConnectedEvent.Handle("CFX.A00.OT00470019", "amqp://127.0.0.1:1235", "amqp://127.0.0.1:8888")));
_cfxHelper2.PublishEvent(new CFXEnvelope(faultOccurredEvent.Handle("01", FaultSeverity.Warning, testGuid, "Error", testGuid)));
_cfxHelper2.PublishEvent(new CFXEnvelope(faultAcknowledgedEvent.Handle()));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationStateChangedEvent.Handle(ResourceState.USD_Repair)));
@ -120,20 +135,33 @@ namespace Sln.Iot.CFX
_cfxHelper2.PublishEvent(new CFXEnvelope(stationOfflineEvent.Handle()));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationOnlineEvent.Handle()));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000002", "制程设备", "-1", "0", "-1", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000002", "制程设备", "0", "1", "0", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000002", "制程设备", "1", "4", "1", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000002", "制程设备", "2", "2", "2", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000002", "制程设备", "3", "2", "3", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000002", "制程设备", "4", "2", "4", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000002", "制程设备", "5", "2", "5", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000002", "制程设备", "6", "1", "6", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000002", "制程设备", "7", "2", "7", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000002", "制程设备", "8", "2", "8", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000002", "制程设备", "9", "2", "9", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000002", "制程设备", "10", "3", "10", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000002", "制程设备", "11", "3", "11", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000002", "制程设备", "12", "2", "12", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470019", "制程设备", "-1", "0", "-1", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470019", "制程设备", "0", "1", "0", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470019", "制程设备", "1", "4", "1", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470019", "制程设备", "2", "2", "2", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470019", "制程设备", "3", "2", "3", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470019", "制程设备", "4", "2", "4", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470019", "制程设备", "5", "2", "5", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470019", "制程设备", "6", "1", "6", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470019", "制程设备", "7", "2", "7", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470019", "制程设备", "8", "2", "8", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470019", "制程设备", "9", "2", "9", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470019", "制程设备", "10", "3", "1", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470019", "制程设备", "11", "3", "1", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470019", "制程设备", "12", "2", "12", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470019", "制程设备", "1", "4", "12", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470019", "制程设备", "1", "4", "18", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470019", "制程设备", "1", "4", "24", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470019", "制程设备", "1", "4", "25", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470019", "制程设备", "1", "4", "21", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470019", "制程设备", "1", "4", "22", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470019", "制程设备", "1", "4", "40", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470019", "制程设备", "1", "4", "41", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470019", "制程设备", "1", "4", "20", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470019", "制程设备", "1", "4", "26", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper2.PublishEvent(new CFXEnvelope(unitsArrivedEvent.Handle("A123456", new string[1] { "A123" })));
_cfxHelper2.PublishEvent(new CFXEnvelope(workStartedEvent.Handle(testGuid, "A123456", new string[] { "A123" })));
@ -142,19 +170,79 @@ namespace Sln.Iot.CFX
_cfxHelper2.PublishEvent(new CFXEnvelope(workStagePausedEvent.Handle(testGuid, "ConveyorIn", 1)));
_cfxHelper2.PublishEvent(new CFXEnvelope(workStageResumedEvent.Handle(testGuid, "ConveyorIn", 1)));
_cfxHelper2.PublishEvent(new CFXEnvelope(workStageCompletedEvent.Handle(testGuid, "ConveyorIn", 1)));
_cfxHelper2.PublishEvent(new CFXEnvelope(workStageStartedEvent.Handle(testGuid, "ConveyorOut", 2)));
_cfxHelper2.PublishEvent(new CFXEnvelope(workStagePausedEvent.Handle(testGuid, "ConveyorOut", 2)));
_cfxHelper2.PublishEvent(new CFXEnvelope(workStageResumedEvent.Handle(testGuid, "ConveyorOut", 2)));
_cfxHelper2.PublishEvent(new CFXEnvelope(workStageCompletedEvent.Handle(testGuid, "ConveyorOut", 2)));
_cfxHelper2.PublishEvent(new CFXEnvelope(workCompletedEvent.Handle(testGuid, "A123456", new string[] { "A123" })));
_cfxHelper2.PublishEvent(new CFXEnvelope(unitsDepartedEvent.Handle(null, new string[1] { "A123" })));
_cfxHelper2.PublishEvent(new CFXEnvelope(unitsProcessedEvent.Handle(testGuid, cFXUnitProcessedDataGet.ProcessDataGet2())));
_cfxHelper2.PublishEvent(new CFXEnvelope(endpointShuttingDownEvent.Handle("CFX.A00.SDSH000002")));
_cfxHelper2.PublishEvent(new CFXEnvelope(endpointShuttingDownEvent.Handle("CFX.A00.OT00470019")));
_cfxHelper2.SendValidateUnitsRequest("amqp://127.0.0.1:8888", "A123456", new string[1] { "A123" });
}
public void Test4()
{
//// 实例化所有事件对象
Guid testGuid = Guid.Parse("281fa09f-cbf6-498d-9f27-7ca77cb60399");
//// 发布所有事件
////_cfxHelper4.PublishEvent(new CFXEnvelope(heartbeatEvent.Handle("CFX.A00.SDSH000002")));
_cfxHelper4.PublishEvent(new CFXEnvelope(endpointConnectedEvent.Handle("CFX.A00.OT00470020", "amqp://127.0.0.1:1235", "amqp://127.0.0.1:8888")));
_cfxHelper4.PublishEvent(new CFXEnvelope(faultOccurredEvent.Handle("01", FaultSeverity.Warning, testGuid, "Error", testGuid)));
_cfxHelper4.PublishEvent(new CFXEnvelope(faultAcknowledgedEvent.Handle()));
_cfxHelper4.PublishEvent(new CFXEnvelope(stationStateChangedEvent.Handle(ResourceState.USD_Repair)));
_cfxHelper4.PublishEvent(new CFXEnvelope(faultClearedEvent.Handle(testGuid)));
_cfxHelper4.PublishEvent(new CFXEnvelope(stationStateChangedEvent.Handle(ResourceState.PRD)));
_cfxHelper4.PublishEvent(new CFXEnvelope(logEntryRecordedEvent.Handle()));
_cfxHelper4.PublishEvent(new CFXEnvelope(recipeActivatedEvent.Handle("RecipeA", "ConveyorOut", 1)));
_cfxHelper4.PublishEvent(new CFXEnvelope(recipeModifiedEvent.Handle("RecipeA")));
_cfxHelper4.PublishEvent(new CFXEnvelope(stationOfflineEvent.Handle()));
_cfxHelper4.PublishEvent(new CFXEnvelope(stationOnlineEvent.Handle()));
_cfxHelper4.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470020", "制程设备", "-1", "0", "-1", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper4.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470020", "制程设备", "0", "1", "0", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper4.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470020", "制程设备", "1", "4", "1", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper4.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470020", "制程设备", "2", "2", "2", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper4.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470020", "制程设备", "3", "2", "3", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper4.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470020", "制程设备", "4", "2", "4", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper4.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470020", "制程设备", "5", "2", "5", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper4.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470020", "制程设备", "6", "1", "6", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper4.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470020", "制程设备", "7", "2", "7", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper4.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470020", "制程设备", "8", "2", "8", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper4.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470020", "制程设备", "9", "2", "9", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper4.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470020", "制程设备", "10", "3", "10", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper4.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470020", "制程设备", "11", "3", "11", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper4.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470020", "制程设备", "12", "2", "12", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper4.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470020", "制程设备", "1", "4", "12", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper4.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470020", "制程设备", "1", "4", "18", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper4.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470020", "制程设备", "1", "4", "24", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper4.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470020", "制程设备", "1", "4", "25", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper4.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470020", "制程设备", "1", "4", "21", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper4.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470020", "制程设备", "1", "4", "22", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper4.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470020", "制程设备", "1", "4", "40", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper4.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470020", "制程设备", "1", "4", "41", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper4.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470020", "制程设备", "1", "4", "20", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper4.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470020", "制程设备", "1", "4", "26", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper4.PublishEvent(new CFXEnvelope(unitsArrivedEvent.Handle("A123456", new string[1] { "A123" })));
_cfxHelper4.PublishEvent(new CFXEnvelope(workStartedEvent.Handle(testGuid, "A123456", new string[] { "A123" })));
_cfxHelper4.PublishEvent(new CFXEnvelope(workStageStartedEvent.Handle(testGuid, "ConveyorOut", 1)));
_cfxHelper4.PublishEvent(new CFXEnvelope(workStagePausedEvent.Handle(testGuid, "ConveyorOut", 1)));
_cfxHelper4.PublishEvent(new CFXEnvelope(workStageResumedEvent.Handle(testGuid, "ConveyorOut", 1)));
_cfxHelper4.PublishEvent(new CFXEnvelope(workStageCompletedEvent.Handle(testGuid, "ConveyorOut", 1)));
_cfxHelper4.PublishEvent(new CFXEnvelope(workCompletedEvent.Handle(testGuid, "A123456", new string[] { "A123" })));
_cfxHelper4.PublishEvent(new CFXEnvelope(unitsDepartedEvent.Handle(null, new string[1] { "A123" })));
_cfxHelper4.PublishEvent(new CFXEnvelope(unitsProcessedEvent.Handle(testGuid, cFXUnitProcessedDataGet.ProcessDataGet4())));
_cfxHelper4.PublishEvent(new CFXEnvelope(endpointShuttingDownEvent.Handle("CFX.A00.OT00470020")));
_cfxHelper4.SendValidateUnitsRequest("amqp://127.0.0.1:8888", "A123456", new string[1] { "A123" });
}
public void Test3()
{
//// 实例化所有事件对象
@ -163,7 +251,7 @@ namespace Sln.Iot.CFX
//// 发布所有事件
////_cfxHelper3.PublishEvent(new CFXEnvelope(heartbeatEvent.Handle("CFX.A00.SDSH000003")));
_cfxHelper3.PublishEvent(new CFXEnvelope(endpointConnectedEvent.Handle("CFX.A00.SDSH000003", "amqp://127.0.0.1:1235", "amqp://127.0.0.1:8888")));
_cfxHelper3.PublishEvent(new CFXEnvelope(endpointConnectedEvent.Handle("CFX.A00.OT00470017", "amqp://127.0.0.1:1235", "amqp://127.0.0.1:8888")));
_cfxHelper3.PublishEvent(new CFXEnvelope(faultOccurredEvent.Handle("01", FaultSeverity.Warning, testGuid, "Error", testGuid)));
_cfxHelper3.PublishEvent(new CFXEnvelope(faultAcknowledgedEvent.Handle()));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationStateChangedEvent.Handle(ResourceState.USD_Repair)));
@ -175,20 +263,34 @@ namespace Sln.Iot.CFX
_cfxHelper3.PublishEvent(new CFXEnvelope(stationOfflineEvent.Handle()));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationOnlineEvent.Handle()));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000003", "制程设备", "-1", "0", "-1", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000003", "制程设备", "0", "1", "0", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000003", "制程设备", "1", "4", "1", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000003", "制程设备", "2", "2", "2", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000003", "制程设备", "3", "2", "3", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000003", "制程设备", "4", "2", "4", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000003", "制程设备", "5", "2", "5", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000003", "制程设备", "6", "1", "6", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000003", "制程设备", "7", "2", "7", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000003", "制程设备", "8", "2", "8", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000003", "制程设备", "9", "2", "9", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000003", "制程设备", "10", "3", "10", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000003", "制程设备", "11", "3", "11", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("SDSH000003", "制程设备", "12", "2", "12", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470017", "制程设备", "-1", "0", "-1", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470017", "制程设备", "0", "1", "0", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470017", "制程设备", "1", "4", "1", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470017", "制程设备", "2", "2", "2", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470017", "制程设备", "3", "2", "3", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470017", "制程设备", "4", "2", "4", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470017", "制程设备", "5", "2", "5", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470017", "制程设备", "6", "1", "6", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470017", "制程设备", "7", "2", "7", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470017", "制程设备", "8", "2", "8", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470017", "制程设备", "9", "2", "9", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
//_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470017", "制程设备", "10", "3", "10", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
//_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470017", "制程设备", "11", "3", "11", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470017", "制程设备", "12", "2", "12", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470017", "制程设备", "18", "2", "18", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470017", "制程设备", "20", "2", "20", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470017", "制程设备", "21", "2", "21", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470017", "制程设备", "22", "2", "22", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470017", "制程设备", "24", "2", "24", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470017", "制程设备", "61", "2", "61", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470017", "制程设备", "62", "2", "62", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470017", "制程设备", "63", "2", "63", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470017", "制程设备", "68", "2", "68", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470017", "制程设备", "69", "2", "69", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(stationParametersModifiedEvent.Handle(ParameterSet("OT00470017", "制程设备", "70", "2", "70", "1000", "0", "60", "3600", "4", "1", "5", "0", "0"))));
_cfxHelper3.PublishEvent(new CFXEnvelope(unitsArrivedEvent.Handle("A123456", new string[1] { "A123" })));
_cfxHelper3.PublishEvent(new CFXEnvelope(workStartedEvent.Handle(testGuid, "A123456", new string[] { "A123" })));
@ -209,7 +311,7 @@ namespace Sln.Iot.CFX
_cfxHelper3.PublishEvent(new CFXEnvelope(workCompletedEvent.Handle(testGuid, "A123456", new string[] { "A123" })));
_cfxHelper3.PublishEvent(new CFXEnvelope(unitsDepartedEvent.Handle(null, new string[1] { "A123" })));
_cfxHelper3.PublishEvent(new CFXEnvelope(unitsProcessedEvent.Handle(testGuid, cFXUnitProcessedDataGet.ProcessDataGet3(new UnitsProcess3Entity()))));
_cfxHelper3.PublishEvent(new CFXEnvelope(endpointShuttingDownEvent.Handle("CFX.A00.SDSH000003")));
_cfxHelper3.PublishEvent(new CFXEnvelope(endpointShuttingDownEvent.Handle("CFX.A00.OT00470017")));
_cfxHelper3.SendValidateUnitsRequest("amqp://127.0.0.1:8888", "A123456", new string[1] { "A123" });
}

@ -62,17 +62,13 @@ namespace Sln.Iot.Repository.service
{
try
{
var restr = _helperV1.QuerySingle(x => x.ErrorName == Message);
if (restr == null)
{
return string.Empty;
};
var restr = _helperV1.QuerySingle(x => x.ErrorName == Message).ErrorGuid;
var res = _helperV1.SqlExcute($"DELETE FROM Vacuum1Error WHERE ErrorName = '{Message}'");
if (res == 0)
{
_log.Info("删除数据不成功,可能数据库中没有指定ErrorMessage的错误");
throw new Exception("删除数据不成功可能没有指定ErrorMessage的错误");
}
return restr.ErrorGuid;
return restr;
}
catch (Exception ex)
{
@ -135,17 +131,13 @@ namespace Sln.Iot.Repository.service
{
try
{
var restr = _helperV2.QuerySingle(x => x.ErrorName == Message);
if(restr == null)
{
return string.Empty;
};
var restr = _helperV2.QuerySingle(x => x.ErrorName == Message).ErrorGuid;
var res = _helperV2.SqlExcute($"DELETE FROM Vacuum2Error WHERE ErrorName = '{Message}'");
if (res == 0)
{
_log.Info("删除数据不成功,可能数据库中没有指定ErrorMessage的错误");
throw new Exception("删除数据不成功可能没有指定ErrorMessage的错误");
}
return restr.ErrorGuid;
return restr;
}
catch (Exception ex)
{
@ -208,17 +200,13 @@ namespace Sln.Iot.Repository.service
{
try
{
var restr = _helperL.QuerySingle(x => x.ErrorName == Message);
if (restr == null)
{
return string.Empty;
};
var restr = _helperL.QuerySingle(x => x.ErrorName == Message).ErrorGuid;
var res = _helperL.SqlExcute($"DELETE FROM LiftError WHERE ErrorName = '{Message}'");
if (res == 0)
{
_log.Info("删除数据不成功,可能数据库中没有指定ErrorMessage的错误");
throw new Exception("删除数据不成功可能没有指定ErrorMessage的错误");
}
return restr.ErrorGuid;
return restr;
}
catch (Exception ex)
{
@ -281,17 +269,13 @@ namespace Sln.Iot.Repository.service
{
try
{
var restr = _helperO.QuerySingle(x => x.ErrorName == Message);
if (restr == null)
{
return string.Empty;
};
var restr = _helperO.QuerySingle(x => x.ErrorName == Message).ErrorGuid;
var res = _helperO.SqlExcute($"DELETE FROM OvenError WHERE ErrorName = '{Message}'");
if (res == 0)
{
_log.Info("删除数据不成功,可能数据库中没有指定ErrorMessage的错误");
throw new Exception("删除数据不成功可能没有指定ErrorMessage的错误");
}
return restr.ErrorGuid;
return restr;
}
catch (Exception ex)
{

@ -1,5 +1,4 @@
using Microsoft.IdentityModel.Tokens;
using Sln.Iot.Model.Entity;
using Sln.Iot.Model.Entity;
using Sln.Iot.Repository.dao;
using Sln.Iot.Serilog;
using System;
@ -36,10 +35,6 @@ namespace Sln.Iot.Repository.service
{
try
{
if (guid.IsNullOrEmpty())
{
return false;
}
var res = _helper.Insert(new OvenPlcData()
{
GUID = guid,
@ -62,10 +57,6 @@ namespace Sln.Iot.Repository.service
{
try
{
if (guid.IsNullOrEmpty())
{
return false;
}
var res = _helper.Update(new OvenPlcData()
{
GUID = guid,
@ -91,10 +82,6 @@ namespace Sln.Iot.Repository.service
{
try
{
if (guid.IsNullOrEmpty())
{
return false;
}
var res = _helper.Update(new OvenPlcData()
{
GUID = guid,
@ -120,10 +107,6 @@ namespace Sln.Iot.Repository.service
{
try
{
if (guid.IsNullOrEmpty())
{
return new UnitsProcess3Entity();
}
var res = _helper.QuerySingle(x => x.GUID == guid);
if (res == null)
{

@ -1,5 +1,4 @@
using Dm;
using Microsoft.IdentityModel.Tokens;
using Sln.Iot.Model.Entity;
using Sln.Iot.Repository.dao;
using Sln.Iot.Serilog;
@ -37,10 +36,6 @@ namespace Sln.Iot.Repository.service
{
try
{
if (guid.IsNullOrEmpty())
{
return false;
}
var res = _helper.Insert(new VacuumInjectionPlcData()
{
GUID = guid,
@ -72,10 +67,6 @@ namespace Sln.Iot.Repository.service
{
try
{
if (guid.IsNullOrEmpty())
{
return new UnitsProcess1Entity();
}
var res = _helper.QuerySingle(x => x.GUID == guid);
if(res == null)
{

@ -38,7 +38,7 @@ namespace Sln.Iot.Serilog
//启用Serilog中间件
#region 通过配置文件读取日志存放位置
var appConfig = AppConfigSetting.Load();
var logPath = Path.Combine(Environment.CurrentDirectory, "Logs");
var logPath = Path.Combine(appConfig.logPath, "Logs");
#endregion
Log.Logger = new LoggerConfiguration().MinimumLevel.Information().WriteTo.Console()

@ -61,45 +61,52 @@ namespace Sln.Iot
//配置文件加载
var appConfig = AppConfigSetting.Load();
//PLC连接初始化
PLCConnect.Instance.InitConnect();
//PLCConnect.Instance.InitConnect();
//CFX接口启动
//真空注胶机
CFXConnect1.Instance.Init("CFX.A00.SDSH000001",
new Uri("amqp://127.0.0.1:1235"),
new Uri("amqp://127.0.0.1:30031"));
//升降回流
CFXConnect2.Instance.Init("CFX.A00.SDSH000002",
new Uri("amqp://127.0.0.1:1236"),
new Uri("amqp://127.0.0.1:30031"));
//隧道烤箱
CFXConnect3.Instance.Init("CFX.A00.SDSH000003",
new Uri("amqp://127.0.0.1:1237"),
new Uri("amqp://127.0.0.1:30031"));
////CFX接口启动
////真空注胶机
//CFXConnect1.Instance.Init("CFX.A00.SDSH000001",
// new Uri("amqp://127.0.0.1:1235"),
// new Uri("amqp://127.0.0.1:30031"));
////升降回流
//CFXConnect2.Instance.Init("CFX.A00.SDSH000002",
// new Uri("amqp://127.0.0.1:1236"),
// new Uri("amqp://127.0.0.1:30031"));
////隧道烤箱
//CFXConnect3.Instance.Init("CFX.A00.SDSH000003",
// new Uri("amqp://127.0.0.1:1237"),
// new Uri("amqp://127.0.0.1:30031"));
////CFX接口启动
////真空注胶机
//CFXConnect1.Instance.Init("CFX.A00.SDSH000001",
// new Uri("amqp://127.0.0.1:1235"),
// new Uri("amqp://127.0.0.1:8888"));
////升降回流
//CFXConnect2.Instance.Init("CFX.A00.SDSH000002",
//CFXConnect1.Instance.Init("CFX.A00.OT00470018",
// new Uri("amqp://127.0.0.1:1235"),
// new Uri("amqp://127.0.0.1:8888"));
////升降回流1
//CFXConnect2.Instance.Init("CFX.A00.OT00470019",
// new Uri("amqp://127.0.0.1:1236"),
// new Uri("amqp://127.0.0.1:8889"));
//升降回流2
CFXConnect2.Instance.Init("CFX.A00.OT00470020",
new Uri("amqp://127.0.0.1:1235"),
new Uri("amqp://127.0.0.1:8888"));
////隧道烤箱
//CFXConnect3.Instance.Init("CFX.A00.SDSH000003",
//CFXConnect3.Instance.Init("CFX.A00.OT00470017",
// new Uri("amqp://127.0.0.1:1235"),
// new Uri("amqp://127.0.0.1:8888"));
//业务类启动
BusinessStart business = new BusinessStart();
//BusinessStart business = new BusinessStart();
log.Info($"系统启动成功,日志存放位置:{Environment.CurrentDirectory}");
log.Info($"系统启动成功,日志存放位置:{appConfig.logPath}");
//CFXTest cFXTest = new CFXTest();
CFXTest cFXTest = new CFXTest();
//cFXTest.Test1();
cFXTest.Test2();
//cFXTest.Test4();
//cFXTest.Test3();
//TestBusiness test = new TestBusiness();

@ -1 +1,210 @@
台达真空灌胶线数据采集程序
**RKKC1604-N2型动力环境监控一体机.上行通讯协议**
**1.终端主动发送登录指令0x21/0xA1**
终端发起有效登录指令后,上位机软件才能对终端发送的数据进行解析和存库。
| 类别 | 数据内容 | 数据长度 | 备注 |
| --- | --- | --- | --- |
| 帧开始 | 0x68 | 1个字节 | |
| 采集器类型 | 0x45 | 1个字节 | 0x45-采集终端类型 |
| 采集器地址 | 0x0001~0x9999 | 2个字节 | 高位在前低位在后BCD码形式 |
| 命令序列号 | | 2个字节 | 高位在前低位在后,命令帧的序列号 |
| 起始符 | 0x68 | 1个字节 | |
| 控制码 | 0x21 | 1个字节 | 登录指令标识码 |
| 数据长度 | 0x00 0x03 | 2个字节 | 固定为0x00,0x03 |
| 数据域 | 0x12 0x34 0x56 | 3个字节 | 固定为 0x12 0x34 0x56 |
| 校验码 | CS | 1个字节 | 从帧开始到数据域最后一位的数据累加CS校验 |
| 结束符 | 0x16 | 1个字节 | 1个字节 |
举例:
终端发送指令:
68 45 01 02 00 BF 68 21 00 03 12 34 56 97 16
上位机返回指令:
68 45 01 02 00 BF 68 A1 00 00 78 16
**2.上位机对采集终端设备校时指令(0x08/0x88)**
为保证现场采集设备与服务器之间的时间同步,采集终端登录服务器成功后服务器需要对采集设备进行校时。在后续正常工作时,为纠正设备之间的时间偏差,建议每隔一段时间(比如8个小时)对现场终端进行一次校时。
| 类别 | 数据内容 | 数据长度 | 备注 |
| --- | --- | --- | --- |
| 帧开始 | 0x68 | 1个字节 | |
| 采集器类型 | 0x45 | 1个字节 | 0x45-采集终端类型 |
| 采集器地址 | 0x0001~0x9999 | 2个字节 | 高位在前低位在后BCD码形式 |
| 命令序列号 | | 2个字节 | 高位在前低位在后,命令帧的序列号 |
| 起始符 | 0x68 | 1个字节 | |
| 控制码 | 0x08 | 1个字节 | 设置终端参数标识码 |
| 数据长度 | 0x00 0x0D | 2个字节 | 固定为0x00,0x0D |
| 数据域 | 0x00 | 1个字节 | 固定为0x00 |
| | 0x00 | 1个字节 | 固定为0x00 |
| | 0x31 0x32 0x33 | 3个字节 | 密码固定为0x31 0x32 0x33 |
| | 0x80 0x30 | 2个字节 | 时间标识码固定为0x80 0x30 |
| | 秒-分-时-日-月-年 | 6个字节 | 具体时间:秒-分-时-日-月-年 |
| 校验码 | CS | 1个字节 | 从帧开始到数据长度数据累加CS校验 |
| 结束符 | 0x16 | 1个字节 | 1个字节 |
举例:
上位机发送指令:
68 45 01 02 40 00 68 08 00 0D 00 00 31 32 33 80 30 22 39 14 16 09 15 56 16
终端返回指令:
68 45 01 02 40 00 68 88 00 04 00 80 30 00 94 16
**3.终端主动发送心跳指令(0x24/0xA4)**
通过心跳指令判断采集设备与上位机直接的通讯连接状态,采集设备通过定时发送心跳指令,在有效时间内若得到上位机的响应,则判断出终端与上位机之间处于有效连接中,否则若在有效时间捏没有得到上位机的响应,则判断出终端没有连接上上位机,终端则发起登录上位机服务器的流程和指令。
| 类别 | 数据内容 | 数据长度 | 备注 |
| --- | --- | --- | --- |
| 帧开始 | 0x68 | 1个字节 | |
| 采集器类型 | 0x45 | 1个字节 | 0x45-采集终端类型 |
| 采集器地址 | 0x0001~0x9999 | 2个字节 | 高位在前低位在后BCD码形式 |
| 命令序列号 | | 2个字节 | 高位在前低位在后,命令帧的序列号 |
| 起始符 | 0x68 | 1个字节 | |
| 控制码 | 0x24 | 1个字节 | 心跳指令标识码 |
| 数据长度 | | 2个字节 | 固定为0x00,0x00 |
| 校验码 | CS | 1个字节 | 从帧开始到数据长度数据累加CS校验 |
| 结束符 | 0x16 | 1个字节 | 1个字节 |
举例:
终端发送指令:
68 45 00 01 00 01 68 24 00 00 3B 16
上位机返回指令:
68 45 00 01 00 01 68 A4 00 00 BB 16
**4.终端主动上传实时数据指令**
采集设备根据设定的时间间隔,定时对现场仪表进行数据采集,并将采集到的数据综合处理后主动上传到上位机平台。
| 类别 | 数据内容 | 数据长度 | 备注 |
| --- | --- | --- | --- |
| 帧开始 | 0x68 | 1个字节 | |
| 采集器类型 | 0x45 | 1个字节 | 0x45-采集终端类型 |
| 采集器地址 | 0x0001~0x9999 | 2个字节 | 高位在前低位在后BCD码形式 |
| 命令序列号 | | 2个字节 | 高位在前低位在后,命令帧的序列号 |
| 起始符 | 0x68 | 1个字节 | |
| 控制码 | 0x83/0x84/0x85/0x86/0x87 | 1个字节 | 0x83-电力0x84-压缩空气、水0x85-温湿度、照度0x86-开关量IO状态0x87-蒸汽 |
| 数据长度 | N个仪表*1个仪表的长度 | 2个字节 | 1条仪表数据数据长度L
0x83L=2(表序号)+8*6(8项数据项)+8采集时间 = 58个字节
0x84L=2(表序号)+8*6(8项数据项)+8采集时间 = 58个字节
0x85: L=2(表序号)+4*6(8项数据项)+8采集时间 = 34个字节
0x86: L=2(表序号)+16(16路IO输入)+8采集时间 = 26个字节N=1
0x87L=2(表序号)+8*6(8项数据项)+8采集时间 = 58个字节 |
| 数据域 | 0x00 | N*L个字节 | |
| 校验码 | CS | 1个字节 | 从帧开始到数据长度数据累加CS校验 |
| 结束符 | 0x16 | 1个字节 | 1个字节 |
控制码:
| 序号 | 终端主动发送数据控制码 | 上位机返回对应控制码 | 备注 |
| --- | --- | --- | --- |
| 1 | 0x83 | 0xB3 | |
| 2 | 0x84 | 0xB4 | |
| 3 | 0x85 | 0xB5 | |
| 3 | 0x85 | 0xB6 | |
电力采集数据域举例:
![](attachment:fecb539a-3dd8-4e4e-8761-046c06386784:image1.png)
举例:
终端发生命令帧:
68 45 00 01 01 FF 68 83 00 3A 01 00 8E 11 61 4E 4B 3C 8E 12 61 4E 4B 3C 8E 13 61 4E 4B 3C 8E 21 61 4E 4B 3C 8E 22 61 4E 4B 3C 8E 23 61 4E 4B 3C B6 50 3F 7C AC 08 90 10 61 4E 4B 3C 80 30 50 40 16 28 04 20 F5 16
上位机返回:
68 45 00 01 0A 3F 68 B3 00 00 12 16
**5.终端主动上传历史数据指令**
在采集设备与上位机有效连接的期间内,采集设备对存储在内部存储区内的历史数据进行批量上传工作。
| 类别 | 数据内容 | 数据长度 | 备注 |
| --- | --- | --- | --- |
| 帧开始 | 0x68 | 1个字节 | |
| 采集器类型 | 0x45 | 1个字节 | 0x45-采集终端类型 |
| 采集器地址 | 0x0001~0x9999 | 2个字节 | 高位在前低位在后BCD码形式 |
| 命令序列号 | | 2个字节 | 高位在前低位在后,命令帧的序列号 |
| 起始符 | 0x68 | 1个字节 | |
| 控制码 | 0x83/0x84/0x85/0x86/0x87 | 1个字节 | 0x83-电力0x84-压缩空气、水0x85-温湿度、照度0x86-开关量IO状态0x87-蒸汽 |
| 数据长度 | N个仪表*1个仪表的长度 | 2个字节 | 1条仪表数据数据长度L
0x93L=2(表序号)+8*6(8项数据项)+8采集时间 = 58个字节
0x94L=2(表序号)+8*6(8项数据项)+8采集时间 = 58个字节
0x95: L=2(表序号)+4*6(4项数据项)+8采集时间 = 34个字节
0x96: L=2(表序号)+16(16路IO输入)+8采集时间 = 26个字节N=1
0x97L=2(表序号)+8*6(8项数据项)+8采集时间 = 58个字节 |
| 数据域 | 0x00 | N*L个字节 | |
| 校验码 | CS | 1个字节 | 从帧开始到数据长度数据累加CS校验 |
| 结束符 | 0x16 | 1个字节 | 1个字节 |
控制码:
| 序号 | 终端主动发送数据控制码 | 上位机返回对应控制码 | 备注 |
| --- | --- | --- | --- |
| 1 | 0x93 | 0xC3 | |
| 2 | 0x94 | 0xC4 | |
| 3 | 0x95 | 0xC5 | |
| 4 | 0x96 | 0xC6 | |
| 5 | 0x97 | 0xC7 | |
电力采集数据域举例:
![](attachment:fecb539a-3dd8-4e4e-8761-046c06386784:image1.png)
举例:
终端发生命令帧:
68 45 00 01 01 FF 68 93 00 3A 01 00 8E 11 61 4E 4B 3C 8E 12 61 4E 4B 3C 8E 13 61 4E 4B 3C 8E 21 61 4E 4B 3C 8E 22 61 4E 4B 3C 8E 23 61 4E 4B 3C B6 50 3F 7C AC 08 90 10 61 4E 4B 3C 80 30 50 40 16 28 04 20 05 16
上位机返回:
68 45 00 01 0A 3F 68 C3 00 00 22 16
# 附录:上传数据标识码(部分)
| 标识符类型 | 说明 | 标识符类型 | 说明 |
| --- | --- | --- | --- |
| 0x8E11 | A相电压 | 0x9B00 | 仪表压力值 |
| 0x8E12 | B相电压 | 0x9B01 | 仪表温度值 |
| 0x8E13 | C相电压 | 0x9B02 | 仪表频率值 |
| 0x8E21 | A相电流 | 0x9B03 | 仪表瞬时流值 |
| 0x8E22 | B相电流 | 0x9B05 | 仪表累积流量值 |
| 0x8E23 | C相电流 | 0x9B06 | 仪表瞬时热量 |
| 0xB650 | 总功率因数 | 0x9B07 | 仪表累积热量值 |
| 0x9010 | 正向有功总电能 | 0x9B0E | 仪表密度值 |
| 0x8030 | 仪表数据采集时间 | | |
| 标识符类型 | 说明 | 标识符类型 | 说明 |
| --- | --- | --- | --- |
| 0x8E50 | 温湿度.温度 | 0x8E51 | 照度.流明 |
| 0x8E52 | 温湿度.湿度 | 0x8E53 | 噪声.分贝 |
| 0x8E54 | 振动-速度 | 0x8E55 | 振动-位移 |
| 0x8E56 | 振动-加速度 | 0x8E57 | 振动-温度 |
| 0x8030 | 仪表数据采集时间 | | |
指令样例:
`温度指令68 54 00 02 0E 7F 68 85 00 28 01 01 8E 50 70 A4 41 DD 8E 51 00 00 00 00 8E 52 00 00 00 00 8E 53 00 00 00 00 8E 54 00 00 00 00 80 30 06 47 04 03 09 24 25 16`
`湿度指令68 54 00 01 18 3F 68 85 00 28 01 01 8E 50 7A E1 41 FC 8E 51 00 00 00 00 8E 52 0A 3D 42 2E 8E 53 00 00 00 00 8E 54 00 00 00 00 80 30 34 47 04 03 09 24 39 16`
`噪音指令68 54 00 03 1B 3F 68 85 00 28 01 01 8E 50 00 00 00 00 8E 51 00 00 00 00 8E 52 00 00 00 00 8E 53 66 66 42 93 8E 54 00 00 00 00 80 30 36 53 09 14 03 25 AF 16`
`电能指令6845002104BF6883023011008E11199A43688E12333343678E13199A43688E21BA5E3FA98E2268733F718E23353F3FAEB651FF000000B65200000000B6504DD33F629010C6E14590803037520521052512008E11000043688E12199A43678E13199A43688E21000000008E22000000008E2300000000B651FF000000B65200000000B65000003F809010AF484605803043520521052513008E11E66643678E12199A43678E13199A43688E21353F3E5E8E2260423E658E239DB23E6FB651FF000000B65200000000B65016873F799010F33344BC803049520521052514008E11333343688E12199A43678E13199A43688E21000000008E22000000008E2300000000B651FF000000B65200000000B65000003F8090103266461C803054520521052515008E11000043688E12CCCD43668E13199A43688E21BA5E3F998E22AE143F978E2326E93FA1B651FF000000B65200000000B65081063F5590106F5C454B803000530521052516008E11000043688E12000043678E13199A43688E211EB83D858E2247AE3D618E23999A3D99B651FF000000B65200000000B650020C3F4B9010619A44F0803006530521052517008E11000043688E12E66643668E13333343688E21A1CB3E858E224FDF3E8D8E23FDF43E94B651FF000000B65200000000B65068733F5190101D1F44C7803011530521052518008E11199A43688E12CCCD43668E13000043688E21CED93EB78E223F7D3EB58E23CCCD3ECCB651FF000000B65200000000B6506C8B3F67901091EC44FD80301753052105257116`
`流体指令68450073197F688400E801009B00000000009B01000000009B02000000009B03000000009B0500003F809B06000000009B07000000009B0E00000000803019250521052502009B00000000009B01000000009B02000000009B03000000009B0500003F809B06000000009B07000000009B0E00000000803020250521052503009B00000000009B01000000009B02000000009B03000000009B05C00044219B06000000009B07000000009B0E00000000803021250521052504009B00000000009B01000000009B02000000009B03000000009B05000043BE9B06000000009B07000000009B0E0000000080302225052105254216`

@ -0,0 +1,144 @@
# Sql File 数据结构
record_iotenv_instant动力环境数据表
```sql
/*
Navicat Premium Data Transfer
Source Server : 127.0.0.1_4000
Source Server Type : MySQL
Source Server Version : 80011 (8.0.11-TiDB-v8.5.1)
Source Host : 127.0.0.1:4000
Source Schema : tao_iot
Target Server Type : MySQL
Target Server Version : 80011 (8.0.11-TiDB-v8.5.1)
File Encoding : 65001
Date: 20/05/2025 14:18:32
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for record_iotenv_instant
-- ----------------------------
DROP TABLE IF EXISTS `record_iotenv_instant`;
CREATE TABLE `record_iotenv_instant` (
`objid` bigint NOT NULL AUTO_INCREMENT COMMENT '主键标识',
`monitorId` varchar(50) DEFAULT NULL COMMENT '计量设备编号',
`temperature` decimal(18,2) DEFAULT NULL COMMENT '温度',
`humidity` decimal(18,2) DEFAULT NULL COMMENT '湿度',
`illuminance` decimal(18,2) DEFAULT NULL COMMENT '照度',
`noise` decimal(18,2) DEFAULT NULL COMMENT '噪声',
`concentration` decimal(18,2) DEFAULT NULL COMMENT '硫化氢浓度',
`vibration_speed` decimal(18,2) DEFAULT NULL COMMENT '振动-速度(mm/s)',
`vibration_displacement` decimal(18,2) DEFAULT NULL COMMENT '振动-位移(um)',
`vibration_acceleration` decimal(18,2) DEFAULT NULL COMMENT '振动-加速度(g)',
`vibration_temp` decimal(18,2) DEFAULT NULL COMMENT '振动-温度(℃)',
`collectTime` datetime DEFAULT NULL COMMENT '采集时间',
`recodeTime` datetime DEFAULT NULL COMMENT '记录时间',
PRIMARY KEY (`objid`) /*T![clustered_index] CLUSTERED */
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin AUTO_INCREMENT=6687491 COMMENT='物联网数据';
SET FOREIGN_KEY_CHECKS = 1;
```
record_dnb_instant电能数据表
```sql
/*
Navicat Premium Data Transfer
Source Server : 127.0.0.1_4000
Source Server Type : MySQL
Source Server Version : 80011 (8.0.11-TiDB-v8.5.1)
Source Host : 127.0.0.1:4000
Source Schema : tao_iot
Target Server Type : MySQL
Target Server Version : 80011 (8.0.11-TiDB-v8.5.1)
File Encoding : 65001
Date: 20/05/2025 14:18:23
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for record_dnb_instant
-- ----------------------------
DROP TABLE IF EXISTS `record_dnb_instant`;
CREATE TABLE `record_dnb_instant` (
`objid` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
`monitor_id` varchar(64) DEFAULT NULL COMMENT '计量设备编号',
`va` decimal(18,2) DEFAULT NULL COMMENT 'A项电压',
`vb` decimal(18,2) DEFAULT NULL COMMENT 'B项电压',
`vc` decimal(18,2) DEFAULT NULL COMMENT 'C项电压',
`ia` decimal(18,2) DEFAULT NULL COMMENT 'A项电流',
`ib` decimal(18,2) DEFAULT NULL COMMENT 'B项电流',
`ic` decimal(18,2) DEFAULT NULL COMMENT 'C项电流',
`glys` decimal(18,2) DEFAULT NULL COMMENT '功率因数',
`zxyg` decimal(18,2) DEFAULT NULL COMMENT '正向有功',
`active_power` decimal(18,2) DEFAULT NULL COMMENT '有功功率',
`reactive_power` decimal(18,2) DEFAULT NULL COMMENT '无功功率',
`collect_type` int DEFAULT '0' COMMENT '采集方式',
`collect_time` datetime DEFAULT NULL COMMENT '采集时间',
`record_time` datetime DEFAULT NULL COMMENT '记录时间',
PRIMARY KEY (`objid`) /*T![clustered_index] CLUSTERED */
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='电实时数据';
SET FOREIGN_KEY_CHECKS = 1;
```
record_fluid_instant流体实时数据
```sql
/*
Navicat Premium Data Transfer
Source Server : 127.0.0.1_4000
Source Server Type : MySQL
Source Server Version : 80011 (8.0.11-TiDB-v8.5.1)
Source Host : 127.0.0.1:4000
Source Schema : tao_iot
Target Server Type : MySQL
Target Server Version : 80011 (8.0.11-TiDB-v8.5.1)
File Encoding : 65001
Date: 20/05/2025 14:31:46
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for record_fluid_instant
-- ----------------------------
DROP TABLE IF EXISTS `record_fluid_instant`;
CREATE TABLE `record_fluid_instant` (
`objid` bigint NOT NULL AUTO_INCREMENT COMMENT '自增标识',
`monitor_id` varchar(64) DEFAULT NULL COMMENT '计量设备编号',
`temperature` decimal(18,2) DEFAULT NULL COMMENT '温度值',
`press` decimal(18,2) DEFAULT NULL COMMENT '压力值',
`frequency` decimal(18,2) DEFAULT NULL COMMENT '频率值',
`density` decimal(18,2) DEFAULT NULL COMMENT '密度值',
`instant_heat` decimal(18,2) DEFAULT NULL COMMENT '瞬时热量',
`total_heat` decimal(18,2) DEFAULT NULL COMMENT '累计热量值',
`instant_flow` decimal(18,2) DEFAULT NULL COMMENT '瞬时流量',
`total_flow` decimal(18,2) DEFAULT NULL COMMENT '累计流量',
`collect_type` int DEFAULT '0' COMMENT '采集方式',
`collect_time` datetime DEFAULT NULL COMMENT '采集时间',
`record_time` datetime DEFAULT NULL COMMENT '记录时间',
PRIMARY KEY (`objid`) /*T![clustered_index] CLUSTERED */
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='流体实时数据';
SET FOREIGN_KEY_CHECKS = 1;
```
Loading…
Cancel
Save