change - 出库任务下发

foamRearStore
wenjy 11 months ago
parent 6442753c80
commit fd527cbdc2

Binary file not shown.

@ -39,6 +39,8 @@ namespace Aucma.Scada.Business
private TaskHandleBusiness taskHandleBusiness = TaskHandleBusiness.Instance; private TaskHandleBusiness taskHandleBusiness = TaskHandleBusiness.Instance;
private Semaphore m_SendTaskSem = new Semaphore(0, 100000);
/// <summary> /// <summary>
/// 初始化出库任务 /// 初始化出库任务
/// </summary> /// </summary>
@ -235,30 +237,30 @@ namespace Aucma.Scada.Business
private void StartTimerPassDown() private void StartTimerPassDown()
{ {
try //try
{ //{
if (!timer.Enabled) // if (!timer.Enabled)
{ // {
timer.Elapsed += new System.Timers.ElapsedEventHandler(PassDownTaskInfoByTimer); // timer.Elapsed += new System.Timers.ElapsedEventHandler(PassDownTaskInfoByTimer);
timer.AutoReset = true; // timer.AutoReset = true;
timer.Enabled = false; // timer.Enabled = false;
timer.Start(); // timer.Start();
PrintLogInfoMessage("StartTimerPassDown(),开启定时获取出库任务进行下发"); // PrintLogInfoMessage("StartTimerPassDown(),开启定时获取出库任务进行下发");
} // }
} //}
catch (Exception ex) //catch (Exception ex)
{ //{
PrintLogErrorMessage("开启定时下发出库任务异常", ex); // PrintLogErrorMessage("开启定时下发出库任务异常", ex);
} //}
} }
/// <summary> /// <summary>
/// 依次获取任务队列进行下发 /// 依次获取任务队列进行下发
/// object sender, System.Timers.ElapsedEventArgs e
/// </summary> /// </summary>
/// <param name="source"></param> /// <param name="source"></param>
/// <param name="e"></param> /// <param name="e"></param>
private void PassDownTaskInfoByTimer(object sender, System.Timers.ElapsedEventArgs e) private bool PassDownTaskInfoByTimer()
{ {
List<RealTaskInfo> realTasks = new List<RealTaskInfo>(); List<RealTaskInfo> realTasks = new List<RealTaskInfo>();
RealTaskInfo shellTask = _taskInfoService.GetTaskInfoByStoreCode(appConfig.shellStoreCode, 2); RealTaskInfo shellTask = _taskInfoService.GetTaskInfoByStoreCode(appConfig.shellStoreCode, 2);
@ -275,22 +277,24 @@ namespace Aucma.Scada.Business
if (result) if (result)
{ {
foreach(var item in realTasks) GetAllRelese(m_SendTaskSem);
foreach (var item in realTasks)
{ {
RefreshScanMateriaCodeEvent?.Invoke(item.materialCode, item.materialType, item.spaceName, item.storeCode); RefreshScanMateriaCodeEvent?.Invoke(item.materialCode, item.materialType, item.spaceName, item.storeCode);
taskHandleBusiness.SendOutStoreTask(item); taskHandleBusiness.SendOutStoreTask(item);
} }
if (m_SendTaskSem.WaitOne(5000, false))
if (timer.Enabled)
{ {
timer.Stop(); return true;
timer.Close(); }
timer.Dispose(); else
timer = new System.Timers.Timer(5000); {
return false;
} }
} }
} }
} }
return false;
} }
#endregion #endregion
@ -400,5 +404,15 @@ namespace Aucma.Scada.Business
RefreshLogMessageEvent?.Invoke(message); RefreshLogMessageEvent?.Invoke(message);
logHelper.Error(message, ex); logHelper.Error(message, ex);
} }
private void GetAllRelese(Semaphore sph)
{
bool res = sph.WaitOne(1, false);
if (res)
{
// LogHelper.RfidLog("信号量手动释放");
GetAllRelese(sph);
}
}
} }
} }

@ -46,16 +46,33 @@ namespace Aucma.Scada.Business
public bool SendOutStoreTask(RealTaskInfo realTaskInfo) public bool SendOutStoreTask(RealTaskInfo realTaskInfo)
{ {
bool result = false; bool result = false;
string spaceCode = string.Empty;
string amount = string.Empty;
string taskCode = string.Empty;
string answer = string.Empty;
try try
{ {
if(realTaskInfo.storeCode == appConfig.shellStoreCode)
{
spaceCode = plcConfig.out_shell_spaceCode;
amount = plcConfig.out_shell_amount;
taskCode = plcConfig.out_shell_task;
}else if (realTaskInfo.storeCode == appConfig.linerStoreCode)
{
spaceCode = plcConfig.out_liner_spaceCode;
amount = plcConfig.out_liner_amount;
taskCode = plcConfig.out_liner_task;
}
//写入货道号 //写入货道号
_plc.writeStringByAddress(plcConfig.out_shell_spaceCode, realTaskInfo.spaceCode); _plc.writeStringByAddress(spaceCode, realTaskInfo.spaceCode);
//写入出库数量 //写入出库数量
_plc.writeInt32ByAddress(plcConfig.out_shell_amount, realTaskInfo.planAmount); _plc.writeInt32ByAddress(amount, realTaskInfo.planAmount);
//写入任务号 //写入任务号
_plc.writeStringByAddress(plcConfig.out_shell_task, realTaskInfo.taskCode); _plc.writeStringByAddress(taskCode,realTaskInfo.taskCode);
//写入应答字 //写入应答字
_plc.writeInt32ByAddress("", 1); _plc.writeInt32ByAddress(answer, 1);
result = true; result = true;
} }

@ -27,4 +27,3 @@ C:\项目代码\澳柯玛MES项目\Aucma.Scada\HighWayIot.Log4net\obj\Debug\High
C:\项目代码\澳柯玛MES项目\Aucma.Scada\HighWayIot.Log4net\obj\Debug\HighWayIot.Log4net.csproj.CopyComplete C:\项目代码\澳柯玛MES项目\Aucma.Scada\HighWayIot.Log4net\obj\Debug\HighWayIot.Log4net.csproj.CopyComplete
C:\项目代码\澳柯玛MES项目\Aucma.Scada\HighWayIot.Log4net\obj\Debug\HighWayIot.Log4net.dll C:\项目代码\澳柯玛MES项目\Aucma.Scada\HighWayIot.Log4net\obj\Debug\HighWayIot.Log4net.dll
C:\项目代码\澳柯玛MES项目\Aucma.Scada\HighWayIot.Log4net\obj\Debug\HighWayIot.Log4net.pdb C:\项目代码\澳柯玛MES项目\Aucma.Scada\HighWayIot.Log4net\obj\Debug\HighWayIot.Log4net.pdb
C:\项目代码\澳柯玛MES项目\Aucma.Scada\HighWayIot.Log4net\obj\Debug\HighWayIot.Log4net.csproj.AssemblyReference.cache

@ -29,4 +29,3 @@ C:\项目代码\澳柯玛MES项目\Aucma.Scada\HighWayIot.TouchSocket\obj\Debug\
C:\项目代码\澳柯玛MES项目\Aucma.Scada\HighWayIot.TouchSocket\obj\Debug\HighWayIot.TouchSocket.csproj.CopyComplete C:\项目代码\澳柯玛MES项目\Aucma.Scada\HighWayIot.TouchSocket\obj\Debug\HighWayIot.TouchSocket.csproj.CopyComplete
C:\项目代码\澳柯玛MES项目\Aucma.Scada\HighWayIot.TouchSocket\obj\Debug\HighWayIot.TouchSocket.dll C:\项目代码\澳柯玛MES项目\Aucma.Scada\HighWayIot.TouchSocket\obj\Debug\HighWayIot.TouchSocket.dll
C:\项目代码\澳柯玛MES项目\Aucma.Scada\HighWayIot.TouchSocket\obj\Debug\HighWayIot.TouchSocket.pdb C:\项目代码\澳柯玛MES项目\Aucma.Scada\HighWayIot.TouchSocket\obj\Debug\HighWayIot.TouchSocket.pdb
C:\项目代码\澳柯玛MES项目\Aucma.Scada\HighWayIot.TouchSocket\obj\Debug\HighWayIot.TouchSocket.csproj.AssemblyReference.cache

Loading…
Cancel
Save