|
@@ -406,16 +406,14 @@ namespace IMCS.CCS.Service.Impl
|
|
|
|
|
|
// 获取读写状态
|
|
|
string plcRead = plcS7.ReadInt16("DB1.18").Content.ToString();
|
|
|
+ Console.WriteLine("====================================状态 DB1.18:" + plcRead);
|
|
|
+
|
|
|
|
|
|
// 判断读写状态,DB1.DBB18
|
|
|
if (plcRead == "1")
|
|
|
{ //下发读指令
|
|
|
- string imcsRFIDRead = _redisService.Database.StringGetAsync(RFID + task.TaskNodeId+"_1").Result;
|
|
|
- if (imcsRFIDRead.IsNullOrEmpty())
|
|
|
- {
|
|
|
- await _redisService.Database.StringSetAsync(RFID + task.TaskNodeId + "_1","1");
|
|
|
- plcS7.Write("DB2.12", Convert.ToInt16("1"));
|
|
|
- }
|
|
|
+
|
|
|
+ plcS7.Write("DB2.12", Convert.ToInt16("1"));
|
|
|
Log.Instance.WriteLogAdd("RFID逻辑块==》rfid读命令已下发,执行的任务:" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
|
|
|
plcS7.ConnectClose();
|
|
|
rfid.success = false;
|
|
@@ -431,8 +429,9 @@ namespace IMCS.CCS.Service.Impl
|
|
|
imcsRfid.trayNo = strings[0];
|
|
|
imcsRfid.uniqueCode = strings[1];
|
|
|
|
|
|
- //读取RFID的托盘编码
|
|
|
+ //读取PLC中的RFID的托盘编码
|
|
|
string readResult = ToolUtils.ReturnStringByBytes(plcS7.Read("DB1.20", 39).Content).Replace(" ","");
|
|
|
+ Console.WriteLine("====================================数据 DB1.20:" + readResult);
|
|
|
if (imcsRfid.trayNo != readResult)
|
|
|
{
|
|
|
//TODO 可能要往PLC中写入一个值,表示校验错误
|
|
@@ -490,14 +489,15 @@ namespace IMCS.CCS.Service.Impl
|
|
|
|
|
|
}
|
|
|
else if (plcRead == "5")
|
|
|
- { // 重新写入rfid成功,读写模式归零
|
|
|
- plcS7.Write("DB2.12", Convert.ToInt16("0"));
|
|
|
- plcS7.ConnectClose();
|
|
|
-
|
|
|
- Log.Instance.WriteLogAdd("RFID逻辑块==》校验重新写入的RFID校验正确:" , LOG_TITLE_CALLBACK);
|
|
|
+ {
|
|
|
+ await _redisService.Database.StringSetAsync(RFID + task.TaskId + task.TaskNodeId, "2");
|
|
|
|
|
|
- rfid.success = true;
|
|
|
- rfid.msg = task.Id + "校验重新写入的RFID校验正确";
|
|
|
+ // 二次下发读的命令
|
|
|
+ plcS7.Write("DB2.12", Convert.ToInt16("1"));
|
|
|
+ Log.Instance.WriteLogAdd("RFID逻辑块==》rfid已写入,二次下发读,执行的任务:" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
|
|
|
+ plcS7.ConnectClose();
|
|
|
+ rfid.success = false;
|
|
|
+ rfid.msg = "RFID二次读命令已下发";
|
|
|
return rfid;
|
|
|
}
|
|
|
else {
|
|
@@ -557,9 +557,33 @@ namespace IMCS.CCS.Service.Impl
|
|
|
}
|
|
|
|
|
|
// RFID ============= 比对开始
|
|
|
- Rfid aa = await this.CheckRFid(task);
|
|
|
- if (aa.success == false) {
|
|
|
- return aa.msg;
|
|
|
+ string rfidFlag = _redisService.Database.StringGetAsync(RFID+ task.TaskId + task.TaskNodeId).Result;
|
|
|
+
|
|
|
+ if (rfidFlag.IsNullOrEmpty()) {
|
|
|
+ Rfid aa = await this.CheckRFid(task);
|
|
|
+ if (aa.success == false) {
|
|
|
+ return aa.msg;
|
|
|
+ }
|
|
|
+ } else if (rfidFlag == "2") {
|
|
|
+
|
|
|
+ // 获取读写状态
|
|
|
+ SiemensS7Net plcS7 = DevicePlcS7.SiemensS7(task.IP);
|
|
|
+ string plcRead = plcS7.ReadInt16("DB1.18").Content.ToString();
|
|
|
+ Console.WriteLine("====================================第二次状态 DB1.18:" + plcRead);
|
|
|
+ if (plcRead == "3")
|
|
|
+ { //下发归零任务
|
|
|
+ await _redisService.Database.StringSetAsync(RFID + task.TaskId + task.TaskNodeId, "3");
|
|
|
+ string readResult = ToolUtils.ReturnStringByBytes(plcS7.Read("DB1.20", 39).Content).Replace(" ", "");
|
|
|
+ Console.WriteLine("====================================第二次读完成写的数据:" + readResult);
|
|
|
+ plcS7.Write("DB2.12", Convert.ToInt16("0"));
|
|
|
+ plcS7.ConnectClose();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ // 二次下发读的命令
|
|
|
+ Log.Instance.WriteLogAdd("等待二次读命令完成RFID读命令已下发:" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
|
|
|
+ plcS7.ConnectClose();
|
|
|
+ return "等待二次读命令完成RFID读命令已下发";
|
|
|
+ }
|
|
|
}
|
|
|
// RFID ============= 比对结束
|
|
|
|
|
@@ -567,8 +591,13 @@ namespace IMCS.CCS.Service.Impl
|
|
|
|
|
|
if ((callBacktagValue != null && callBacktagValue.TagValue == task.CallbackValue) )
|
|
|
{
|
|
|
+
|
|
|
+ // 任务执行完毕,删除临时存储的缓存数据
|
|
|
+ Console.WriteLine("任务执行完成,删除临时校验的缓存数据,任务状态"+task.CallbackValue+"==taskID:"+ task.TaskId+"==taskNodeID:"+ task.TaskNodeId);
|
|
|
+ await _redisService.Database.KeyDeleteAsync(RFID + task.TaskId + task.TaskNodeId);
|
|
|
+
|
|
|
//执行位清零
|
|
|
- SiemensS7Net s7 = DevicePlcS7.SiemensS7(task.IP);
|
|
|
+ SiemensS7Net s7 = DevicePlcS7.SiemensS7(task.IP);
|
|
|
HslCommunication.OperateResult ConnectionResult = s7.ConnectServer();
|
|
|
if (ConnectionResult.IsSuccess)
|
|
|
{
|
|
@@ -1635,6 +1664,7 @@ namespace IMCS.CCS.Service.Impl
|
|
|
}
|
|
|
return deviceList;
|
|
|
}
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 心跳任务
|
|
|
/// </summary>
|