|
@@ -357,19 +357,6 @@ namespace IMCS.CCS.Service.Impl
|
|
|
|
|
|
Rfid rfid = new Rfid();
|
|
Rfid rfid = new Rfid();
|
|
rfid.success = true;
|
|
rfid.success = true;
|
|
-
|
|
|
|
- // 读取初始化的数据,判断是否RFID校验生效
|
|
|
|
- var rfidFlag = await _redisService.Database.StringGetAsync(RFID + RedisKeyEnum.Flag);
|
|
|
|
- Boolean flag = true;
|
|
|
|
- if (!rfidFlag.IsNullOrEmpty && rfidFlag=="false")
|
|
|
|
- {
|
|
|
|
- Log.Instance.WriteLogAdd("RFID逻辑块==》放弃RFID生效,放行操作,执行的任务:" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
|
|
|
|
- rfid.success = true;
|
|
|
|
- rfid.msg = "放弃RFID生效,放行操作";
|
|
|
|
- return rfid;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
// 读取imcs缓存的托盘编码以及零件编码
|
|
// 读取imcs缓存的托盘编码以及零件编码
|
|
string imcsRFID = _redisService.Database.StringGetAsync(RFID + task.TaskNodeId).Result;
|
|
string imcsRFID = _redisService.Database.StringGetAsync(RFID + task.TaskNodeId).Result;
|
|
// 读取ccs缓存的托盘编码
|
|
// 读取ccs缓存的托盘编码
|
|
@@ -383,23 +370,23 @@ namespace IMCS.CCS.Service.Impl
|
|
rfid.msg = "PLC连接失败====》"+ task.IP;
|
|
rfid.msg = "PLC连接失败====》"+ task.IP;
|
|
return rfid;
|
|
return rfid;
|
|
}
|
|
}
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+
|
|
|
|
+ //运输任务执行结果
|
|
string plcResult = plcS7.ReadInt16("DB1.16").Content.ToString();
|
|
string plcResult = plcS7.ReadInt16("DB1.16").Content.ToString();
|
|
if (plcResult == "5") {
|
|
if (plcResult == "5") {
|
|
Log.Instance.WriteLogAdd("RFID逻辑块==》任务已完成状态,放行操作,执行的任务:" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
|
|
Log.Instance.WriteLogAdd("RFID逻辑块==》任务已完成状态,放行操作,执行的任务:" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
|
|
-
|
|
|
|
|
|
+
|
|
|
|
+
|
|
plcS7.Write("DB2.12", Convert.ToInt16("0"));
|
|
plcS7.Write("DB2.12", Convert.ToInt16("0"));
|
|
plcS7.ConnectClose();
|
|
plcS7.ConnectClose();
|
|
rfid.success = true;
|
|
rfid.success = true;
|
|
rfid.msg = "任务已完成状态,放行操作";
|
|
rfid.msg = "任务已完成状态,放行操作";
|
|
return rfid;
|
|
return rfid;
|
|
}
|
|
}
|
|
- else
|
|
|
|
- if (plcResult != "1" && plcResult != "2" && plcResult != "3")
|
|
|
|
|
|
+ else if (plcResult != "1" && plcResult != "2" && plcResult != "3")
|
|
{
|
|
{
|
|
- Log.Instance.WriteLogAdd("RFID逻辑块==》DB1.16结果不满足,执行的任务:" + JsonConvert.SerializeObject(task)+ "DB1.16 应该为2实际为"+ plcResult, LOG_TITLE_CALLBACK);
|
|
|
|
-
|
|
|
|
|
|
+ Log.Instance.WriteLogAdd("RFID逻辑块==》DB1.16结果不满足,执行的任务:DB1.16 应该为2实际为"+ plcResult+","+ JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
|
|
|
|
+ Console.WriteLine("DB1.16 实际为:" + plcResult);
|
|
rfid.success = false;
|
|
rfid.success = false;
|
|
rfid.msg = "未取完成====》DB1.16 应该为2实际为"+ plcResult;
|
|
rfid.msg = "未取完成====》DB1.16 应该为2实际为"+ plcResult;
|
|
plcS7.ConnectClose();
|
|
plcS7.ConnectClose();
|
|
@@ -408,18 +395,19 @@ namespace IMCS.CCS.Service.Impl
|
|
|
|
|
|
// 获取读写状态
|
|
// 获取读写状态
|
|
string plcRead = plcS7.ReadInt16("DB1.18").Content.ToString();
|
|
string plcRead = plcS7.ReadInt16("DB1.18").Content.ToString();
|
|
- Console.WriteLine("====================================状态 DB1.18:" + plcRead);
|
|
|
|
-
|
|
|
|
|
|
+ Console.WriteLine("====================================RFID读写状态 DB1.18:" + plcRead);
|
|
|
|
+ Log.Instance.WriteLogAdd("====================================RFID读写状态 DB1.18:" + plcRead + "," + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
|
|
|
|
|
|
// 判断读写状态,DB1.DBB18
|
|
// 判断读写状态,DB1.DBB18
|
|
if (plcRead == "1")
|
|
if (plcRead == "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);
|
|
|
|
|
|
+ Console.WriteLine("====================================RFID读命令已下发,写入DB2.12-》1");
|
|
|
|
+ Log.Instance.WriteLogAdd("RFID读命令已下发,写入DB2.12-》1:" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
|
|
plcS7.ConnectClose();
|
|
plcS7.ConnectClose();
|
|
rfid.success = false;
|
|
rfid.success = false;
|
|
- rfid.msg = "RFID读命令已下发";
|
|
|
|
|
|
+ rfid.msg = "RFID读命令已下发,写入DB2.12-》1";
|
|
return rfid;
|
|
return rfid;
|
|
}
|
|
}
|
|
else if (plcRead == "3")//表示真正读完成了,这个时候我要去比较数据
|
|
else if (plcRead == "3")//表示真正读完成了,这个时候我要去比较数据
|
|
@@ -433,55 +421,71 @@ namespace IMCS.CCS.Service.Impl
|
|
|
|
|
|
//读取PLC中的RFID的托盘编码
|
|
//读取PLC中的RFID的托盘编码
|
|
string readResult = ToolUtils.ReturnStringByBytes(plcS7.Read("DB1.20", 39).Content).Replace(" ","");
|
|
string readResult = ToolUtils.ReturnStringByBytes(plcS7.Read("DB1.20", 39).Content).Replace(" ","");
|
|
- Console.WriteLine("====================================数据 DB1.20:" + readResult);
|
|
|
|
|
|
+ Console.WriteLine(task.TaskNodeId+"====================================读取PLC中的RFID的托盘编码数据 DB1.20:" + readResult);
|
|
|
|
+ Log.Instance.WriteLogAdd("====================================读取PLC中的RFID的托盘编码数据 DB1.20:" + readResult, LOG_TITLE_CALLBACK);
|
|
if (imcsRfid.trayNo != readResult)
|
|
if (imcsRfid.trayNo != readResult)
|
|
{
|
|
{
|
|
//TODO 可能要往PLC中写入一个值,表示校验错误
|
|
//TODO 可能要往PLC中写入一个值,表示校验错误
|
|
|
|
|
|
Log.Instance.WriteLogAdd("RFID逻辑块==》RFID校验托盘失败:" + "读取imcs_redis数据_" + JsonConvert.SerializeObject(imcsRfid) + ",读取RFID数据_" + readResult.ToString(), LOG_TITLE_CALLBACK);
|
|
Log.Instance.WriteLogAdd("RFID逻辑块==》RFID校验托盘失败:" + "读取imcs_redis数据_" + JsonConvert.SerializeObject(imcsRfid) + ",读取RFID数据_" + readResult.ToString(), LOG_TITLE_CALLBACK);
|
|
-
|
|
|
|
|
|
+ Console.WriteLine(task.TaskNodeId + "====================================\":RFID托盘校验失败,imcs和RFID托盘信息不一致");
|
|
plcS7.ConnectClose();
|
|
plcS7.ConnectClose();
|
|
rfid.success = false;
|
|
rfid.success = false;
|
|
rfid.msg = task.Id + ":RFID托盘校验失败,imcs和RFID托盘信息不一致";
|
|
rfid.msg = task.Id + ":RFID托盘校验失败,imcs和RFID托盘信息不一致";
|
|
return rfid;
|
|
return rfid;
|
|
}
|
|
}
|
|
- else
|
|
|
|
- {
|
|
|
|
|
|
+
|
|
|
|
+
|
|
plcS7.Write("DB2.12", Convert.ToInt16("2"));
|
|
plcS7.Write("DB2.12", Convert.ToInt16("2"));
|
|
-
|
|
|
|
|
|
+ Console.WriteLine("====================================RFID写命令已下发,写入DB2.12-》2");
|
|
|
|
+ Log.Instance.WriteLogAdd(task.TaskNodeId + "====================================RFID写命令已下发,写入DB2.12-》2:", LOG_TITLE_CALLBACK);
|
|
//读 源位置 是上下料站还是机床
|
|
//读 源位置 是上下料站还是机床
|
|
string up = plcS7.ReadInt16("DB1.12").Content.ToString();
|
|
string up = plcS7.ReadInt16("DB1.12").Content.ToString();
|
|
//如果是上下料站,往RFID中写state(1毛坯)和PID(零件编码)
|
|
//如果是上下料站,往RFID中写state(1毛坯)和PID(零件编码)
|
|
if (sList.Contains(up))
|
|
if (sList.Contains(up))
|
|
{
|
|
{
|
|
- if (imcsRfid.uniqueCode == null)
|
|
|
|
|
|
+ Console.WriteLine("====================================RFID,源位置为上下料站:"+ up);
|
|
|
|
+ //上下料站回库
|
|
|
|
+ string huiku = _redisService.Database.StringGetAsync(RFID + task.TaskNodeId+"_null").Result;
|
|
|
|
+ if (!huiku.IsNullOrEmpty())
|
|
{
|
|
{
|
|
plcS7.Write("DB2.55", Convert.ToInt16("0"));
|
|
plcS7.Write("DB2.55", Convert.ToInt16("0"));
|
|
plcS7.Write("DB2.56", ToolUtils.ReturnBtyesWtitString("", 39));
|
|
plcS7.Write("DB2.56", ToolUtils.ReturnBtyesWtitString("", 39));
|
|
|
|
+ Console.WriteLine("RFID写入DB2.55 -》 0,DB2.56写入空");
|
|
|
|
+ Console.WriteLine("====================================RFID信息写入,空托盘入线边库");
|
|
|
|
+
|
|
|
|
+ Log.Instance.WriteLogAdd(task.TaskNodeId + "RFID写入DB2.55 -》 0,DB2.56写入空,RFID信息写入,空托盘入线边库", LOG_TITLE_CALLBACK);
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
plcS7.Write("DB2.55", Convert.ToInt16("1"));
|
|
plcS7.Write("DB2.55", Convert.ToInt16("1"));
|
|
plcS7.Write("DB2.56", ToolUtils.ReturnBtyesWtitString(imcsRfid.uniqueCode, 39));
|
|
plcS7.Write("DB2.56", ToolUtils.ReturnBtyesWtitString(imcsRfid.uniqueCode, 39));
|
|
|
|
+ Console.WriteLine("RFID写入DB2.55 -》 1,DB2.56写入:"+ imcsRfid.uniqueCode);
|
|
|
|
+ Console.WriteLine("====================================RFID信息写入,有工件和托盘");
|
|
|
|
+ Log.Instance.WriteLogAdd(task.TaskNodeId + "RFID写入DB2.55 -》 1,DB2.56写入:" + imcsRfid.uniqueCode+ ",RFID信息写入,有工件和托盘", LOG_TITLE_CALLBACK);
|
|
}
|
|
}
|
|
|
|
|
|
- }
|
|
|
|
- else if (jList.Contains(up))
|
|
|
|
|
|
+ }else if (jList.Contains(up) || up == "11")
|
|
{ //如果是机床,往RFID中写state(2 成品)和PID(零件编码)
|
|
{ //如果是机床,往RFID中写state(2 成品)和PID(零件编码)
|
|
|
|
+ Console.WriteLine("====================================RFID,源位置为机床或喷墨机:"+ up);
|
|
plcS7.Write("DB2.55", Convert.ToInt16("2"));
|
|
plcS7.Write("DB2.55", Convert.ToInt16("2"));
|
|
- string readResult1 = ToolUtils.ReturnStringByBytes(plcS7.Read("DB1.62", 39).Content);
|
|
|
|
-
|
|
|
|
- plcS7.Write("DB2.56", ToolUtils.ReturnBtyesWtitString(readResult1, 39));
|
|
|
|
|
|
+ //string readResult1 = ToolUtils.ReturnStringByBytes(plcS7.Read("DB1.62", 39).Content);
|
|
|
|
+ plcS7.Write("DB2.56", ToolUtils.ReturnBtyesWtitString(imcsRfid.uniqueCode, 39));
|
|
|
|
+ Console.WriteLine("RFID写入DB2.55 -》 2,DB2.56写入:" + imcsRfid.uniqueCode);
|
|
|
|
+ Log.Instance.WriteLogAdd(task.TaskNodeId + "RFID写入DB2.55 -》 2,DB2.56写入:" + imcsRfid.uniqueCode + ",源位置为机床或喷墨机:" + up, LOG_TITLE_CALLBACK);
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
|
|
+ Console.WriteLine("====================================RFID,源位置为线边库:" + up);
|
|
string readResult1 = plcS7.ReadInt16("DB1.61").Content.ToString();
|
|
string readResult1 = plcS7.ReadInt16("DB1.61").Content.ToString();
|
|
- string readResult2 = ToolUtils.ReturnStringByBytes(plcS7.Read("DB1.62", 39).Content).Replace(" ","");
|
|
|
|
-
|
|
|
|
- plcS7.Write("DB2.55", Convert.ToInt16(readResult1));
|
|
|
|
|
|
+ string readResult2 = ToolUtils.ReturnStringByBytes(plcS7.Read("DB1.62", 39).Content);
|
|
|
|
+ //plcS7.Write("DB2.55", Convert.ToInt16(readResult1));
|
|
|
|
+ plcS7.Write("DB2.55", Convert.ToInt16("1"));
|
|
plcS7.Write("DB2.56", ToolUtils.ReturnBtyesWtitString(readResult2, 39));
|
|
plcS7.Write("DB2.56", ToolUtils.ReturnBtyesWtitString(readResult2, 39));
|
|
|
|
+ Console.WriteLine("RFID写入DB2.55 -》 "+ readResult1 + ",DB2.56 =》"+ readResult2);
|
|
|
|
+ Log.Instance.WriteLogAdd(task.TaskNodeId + "RFID写入DB2.55 -》 " + readResult1 + ",DB2.56 =》" + readResult2 + ",源位置为线边库:" + up, LOG_TITLE_CALLBACK);
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
+
|
|
Log.Instance.WriteLogAdd("RFID逻辑块==》重新写入RFID命令已下发:" + "读取imcs_redis数据_" + JsonConvert.SerializeObject(imcsRfid) + ",读取RFID数据_" + readResult.ToString(), LOG_TITLE_CALLBACK);
|
|
Log.Instance.WriteLogAdd("RFID逻辑块==》重新写入RFID命令已下发:" + "读取imcs_redis数据_" + JsonConvert.SerializeObject(imcsRfid) + ",读取RFID数据_" + readResult.ToString(), LOG_TITLE_CALLBACK);
|
|
|
|
|
|
plcS7.ConnectClose();
|
|
plcS7.ConnectClose();
|
|
@@ -496,7 +500,16 @@ namespace IMCS.CCS.Service.Impl
|
|
|
|
|
|
// 二次下发读的命令
|
|
// 二次下发读的命令
|
|
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);
|
|
|
|
|
|
+
|
|
|
|
+ /*string readResult3 = plcS7.ReadInt16("DB1.2").Content.ToString();
|
|
|
|
+ if (readResult3 != "257")
|
|
|
|
+ {
|
|
|
|
+ _redisService.Database.KeyDelete(RFID + task.TaskId + task.TaskNodeId);
|
|
|
|
+ Console.WriteLine("操作模式:"+ readResult3);
|
|
|
|
+ }*/
|
|
|
|
+
|
|
|
|
+ Console.WriteLine("RFID二次读命令已下发:写入DB2.12 -》 1");
|
|
|
|
+ Log.Instance.WriteLogAdd("RFID二次读命令已下发:写入DB2.12 -》 1:" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
|
|
plcS7.ConnectClose();
|
|
plcS7.ConnectClose();
|
|
rfid.success = false;
|
|
rfid.success = false;
|
|
rfid.msg = "RFID二次读命令已下发";
|
|
rfid.msg = "RFID二次读命令已下发";
|
|
@@ -505,7 +518,6 @@ namespace IMCS.CCS.Service.Impl
|
|
else {
|
|
else {
|
|
|
|
|
|
Log.Instance.WriteLogAdd("RFID逻辑块==》RFID比对状态匹配失败,查询不出任务状态:"+ plcRead, LOG_TITLE_CALLBACK);
|
|
Log.Instance.WriteLogAdd("RFID逻辑块==》RFID比对状态匹配失败,查询不出任务状态:"+ plcRead, LOG_TITLE_CALLBACK);
|
|
-
|
|
|
|
plcS7.ConnectClose();
|
|
plcS7.ConnectClose();
|
|
rfid.success = false;
|
|
rfid.success = false;
|
|
rfid.msg = "RFID比对状态匹配失败,任务状态为:"+ plcRead;
|
|
rfid.msg = "RFID比对状态匹配失败,任务状态为:"+ plcRead;
|
|
@@ -520,10 +532,10 @@ namespace IMCS.CCS.Service.Impl
|
|
{
|
|
{
|
|
try
|
|
try
|
|
{
|
|
{
|
|
|
|
+
|
|
Console.WriteLine("取和放回调任务开始:" + DateTime.Now.ToString());
|
|
Console.WriteLine("取和放回调任务开始:" + DateTime.Now.ToString());
|
|
-
|
|
|
|
List<TaskCallback> taskList = new List<TaskCallback>();
|
|
List<TaskCallback> taskList = new List<TaskCallback>();
|
|
- var taskCallbackListData = await _redisService.Database.StringGetAsync(imcs_redis_key + RedisKeyEnum.CallbackTaskList);
|
|
|
|
|
|
+ /*var taskCallbackListData = await _redisService.Database.StringGetAsync(imcs_redis_key + RedisKeyEnum.CallbackTaskList);
|
|
if (taskCallbackListData.IsNullOrEmpty)
|
|
if (taskCallbackListData.IsNullOrEmpty)
|
|
{
|
|
{
|
|
taskList = await _taskCallbackService.GetAllList();
|
|
taskList = await _taskCallbackService.GetAllList();
|
|
@@ -531,7 +543,9 @@ namespace IMCS.CCS.Service.Impl
|
|
else
|
|
else
|
|
{
|
|
{
|
|
taskList = JsonConvert.DeserializeObject<List<TaskCallback>>(taskCallbackListData);
|
|
taskList = JsonConvert.DeserializeObject<List<TaskCallback>>(taskCallbackListData);
|
|
- }
|
|
|
|
|
|
+ }*/
|
|
|
|
+ taskList = await _taskCallbackService.GetAllList();
|
|
|
|
+
|
|
//在线设备
|
|
//在线设备
|
|
List<Device> deviceList = await getDeviceList();
|
|
List<Device> deviceList = await getDeviceList();
|
|
|
|
|
|
@@ -541,68 +555,119 @@ namespace IMCS.CCS.Service.Impl
|
|
if (taskList == null || taskList.Count == 0)
|
|
if (taskList == null || taskList.Count == 0)
|
|
{
|
|
{
|
|
return "无回调任务" ;
|
|
return "无回调任务" ;
|
|
- }
|
|
|
|
|
|
+ }
|
|
|
|
+
|
|
string message = "";
|
|
string message = "";
|
|
|
|
|
|
foreach(TaskCallback task in taskList)
|
|
foreach(TaskCallback task in taskList)
|
|
- {
|
|
|
|
|
|
+ {
|
|
|
|
+ Console.WriteLine("进入循环:" + task.TaskNodeId);
|
|
|
|
+ SiemensS7Net s7 = DevicePlcS7.SiemensS7(task.IP);
|
|
|
|
+ HslCommunication.OperateResult ConnectionResult = s7.ConnectServer();
|
|
CcsTagValue tagValueQuery = new CcsTagValue();
|
|
CcsTagValue tagValueQuery = new CcsTagValue();
|
|
tagValueQuery.Ip = task.IP;
|
|
tagValueQuery.Ip = task.IP;
|
|
//tagValueQuery.Address = task.Address;
|
|
//tagValueQuery.Address = task.Address;
|
|
List<CcsTagValue> tagValues = _ccsTagValueService.GetList(tagValueQuery).ToList();
|
|
List<CcsTagValue> tagValues = _ccsTagValueService.GetList(tagValueQuery).ToList();
|
|
|
|
|
|
//系统操作模式
|
|
//系统操作模式
|
|
- CcsTagValue tagValueMode = tagValues.Where(o => o.Address == "DB1.2").FirstOrDefault();
|
|
|
|
- if (tagValueMode.TagValue != "257")
|
|
|
|
|
|
+ //CcsTagValue tagValueMode = tagValues.Where(o => o.Address == "DB1.2").FirstOrDefault();
|
|
|
|
+ string moshi = s7.ReadInt16("DB1.2").Content.ToString();
|
|
|
|
+ Console.WriteLine("操作模式:" + moshi);
|
|
|
|
+ //不等于257 删除redis缓存 重新走RFID流程
|
|
|
|
+ if (moshi != "257")
|
|
{
|
|
{
|
|
|
|
+ _redisService.Database.KeyDelete(RFID + task.TaskId + task.TaskNodeId);
|
|
return "当前操作模式非自动并运行";
|
|
return "当前操作模式非自动并运行";
|
|
}
|
|
}
|
|
|
|
|
|
// RFID ============= 比对开始
|
|
// RFID ============= 比对开始
|
|
- /* string rfidFlag = _redisService.Database.StringGetAsync(RFID+ task.TaskId + task.TaskNodeId).Result;
|
|
|
|
|
|
+ // 读取初始化的数据,判断是否RFID校验生效
|
|
|
|
+ /*var rfidFlag = await _redisService.Database.StringGetAsync(RFID + RedisKeyEnum.Flag);
|
|
|
|
+ Boolean flag = true;
|
|
|
|
+ if (!rfidFlag.IsNullOrEmpty && rfidFlag == "false")
|
|
|
|
+ {
|
|
|
|
+ Log.Instance.WriteLogAdd("RFID逻辑块==》放弃RFID生效,放行操作,执行的任务:" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
|
|
|
|
+ rfid.success = true;
|
|
|
|
+ rfid.msg = "放弃RFID生效,放行操作";
|
|
|
|
+ return rfid;
|
|
|
|
+ }*/
|
|
|
|
|
|
- if (rfidFlag.IsNullOrEmpty()) {
|
|
|
|
|
|
+ string rfidFlag = _redisService.Database.StringGetAsync(RFID+ task.TaskId + task.TaskNodeId).Result;
|
|
|
|
+
|
|
|
|
+ if (rfidFlag.IsNullOrEmpty()) {
|
|
|
|
+ // RFID ============= 比对开始
|
|
Rfid aa = await this.CheckRFid(task);
|
|
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 (aa.success == false) {
|
|
|
|
+ return aa.msg;
|
|
|
|
+ }
|
|
|
|
+ } else if (rfidFlag == "2") {
|
|
|
|
+
|
|
|
|
+ // 获取读写状态
|
|
|
|
+ //SiemensS7Net plcS7 = DevicePlcS7.SiemensS7(task.IP);
|
|
|
|
+ string plcRead = s7.ReadInt16("DB1.18").Content.ToString();
|
|
|
|
+ Console.WriteLine(task.TaskNodeId+"====================================第二次状态 DB1.18:" + plcRead);
|
|
|
|
+ Log.Instance.WriteLogAdd(task.TaskNodeId + "====================================第二次状态 DB1.18:" + plcRead, LOG_TITLE_CALLBACK);
|
|
if (plcRead == "3")
|
|
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读命令已下发";
|
|
|
|
- }
|
|
|
|
- }*/
|
|
|
|
|
|
+ {
|
|
|
|
+ await _redisService.Database.StringSetAsync(RFID + task.TaskId + task.TaskNodeId, "3");
|
|
|
|
+ string readResult = ToolUtils.ReturnStringByBytes(s7.Read("DB1.20", 39).Content).Replace(" ", "");
|
|
|
|
+ string readResult1 = s7.ReadInt16("DB1.61").Content.ToString();
|
|
|
|
+ string readResult2 = ToolUtils.ReturnStringByBytes(s7.Read("DB1.62", 39).Content).Replace(" ", "");
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ Console.WriteLine(task.TaskNodeId+"====================================第二次读完成DB1.20:" + readResult+ ",DB1.61:"+ readResult1 + ",DB1.62:" + readResult2);
|
|
|
|
+ Log.Instance.WriteLogAdd(task.TaskNodeId + "====================================第二次读完成DB1.20:" + readResult + ",DB1.61:" + readResult1 + ",DB1.62:" + readResult2, LOG_TITLE_CALLBACK);
|
|
|
|
+ //下发归零任务
|
|
|
|
+ s7.Write("DB2.12", Convert.ToInt16("0"));
|
|
|
|
+
|
|
|
|
+ /*string readResult3 = s7.ReadInt16("DB1.2").Content.ToString();
|
|
|
|
+ if (readResult3 != "257")
|
|
|
|
+ {
|
|
|
|
+ Console.WriteLine("自动模式:"+ readResult3);
|
|
|
|
+ _redisService.Database.KeyDelete(RFID + task.TaskId + task.TaskNodeId);
|
|
|
|
+ }*/
|
|
|
|
+
|
|
|
|
+ Console.WriteLine("====================================下发归零任务:DB2.12 =》0");
|
|
|
|
+ Log.Instance.WriteLogAdd(task.TaskNodeId + "====================================下发归零任务:DB2.12 =》0", LOG_TITLE_CALLBACK);
|
|
|
|
+ s7.ConnectClose();
|
|
|
|
+ return "下发归零任务:DB2.12 =》0";
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ // 二次下发读的命令
|
|
|
|
+ Log.Instance.WriteLogAdd("等待二次读命令完成RFID读命令已下发:" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
|
|
|
|
+ s7.ConnectClose();
|
|
|
|
+ return "等待二次读命令完成RFID读命令已下发";
|
|
|
|
+ }
|
|
|
|
+ }
|
|
// RFID ============= 比对结束
|
|
// RFID ============= 比对结束
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
CcsTagValue callBacktagValue = tagValues.Where(o => o.Address == task.Address).FirstOrDefault();
|
|
CcsTagValue callBacktagValue = tagValues.Where(o => o.Address == task.Address).FirstOrDefault();
|
|
|
|
+ string realTagValue = s7.ReadInt16(task.Address).Content.ToString();
|
|
|
|
|
|
- if ((callBacktagValue != null && callBacktagValue.TagValue == task.CallbackValue) )
|
|
|
|
|
|
+ Console.WriteLine("运输任务执行结果" + task.Address + ":" + realTagValue);
|
|
|
|
+ Log.Instance.WriteLogAdd(task.TaskNodeId + "运输任务执行结果" + task.Address + ":" + realTagValue, LOG_TITLE_CALLBACK);
|
|
|
|
+ if ((callBacktagValue != null && callBacktagValue.TagValue == task.CallbackValue) )
|
|
{
|
|
{
|
|
|
|
+ if (callBacktagValue.TagValue != realTagValue)
|
|
|
|
+ {
|
|
|
|
+ Console.WriteLine("数据库数据与实际数据不一致,实际数据为" + task.Address + ":" + realTagValue + ",数据库数据为:" + task.Address + ":" + callBacktagValue.TagValue);
|
|
|
|
+ Log.Instance.WriteLogAdd("数据库数据与实际数据不一致,实际数据为" + task.Address + ":" + realTagValue + ",数据库数据为:" + task.Address + ":" + callBacktagValue.TagValue, LOG_TITLE_CALLBACK);
|
|
|
|
+ //return "数据库数据与实际数据不一致,实际数据为" + task.Address + ":" + realTagValue + ",数据库数据为:" + task.Address + ":" + callBacktagValue.TagValue;
|
|
|
|
+ }
|
|
|
|
|
|
// 任务执行完毕,删除临时存储的缓存数据
|
|
// 任务执行完毕,删除临时存储的缓存数据
|
|
Console.WriteLine("任务执行完成,删除临时校验的缓存数据,任务状态"+task.CallbackValue+"==taskID:"+ task.TaskId+"==taskNodeID:"+ task.TaskNodeId);
|
|
Console.WriteLine("任务执行完成,删除临时校验的缓存数据,任务状态"+task.CallbackValue+"==taskID:"+ task.TaskId+"==taskNodeID:"+ task.TaskNodeId);
|
|
await _redisService.Database.KeyDeleteAsync(RFID + task.TaskId + task.TaskNodeId);
|
|
await _redisService.Database.KeyDeleteAsync(RFID + task.TaskId + task.TaskNodeId);
|
|
|
|
|
|
//执行位清零
|
|
//执行位清零
|
|
- SiemensS7Net s7 = DevicePlcS7.SiemensS7(task.IP);
|
|
|
|
- HslCommunication.OperateResult ConnectionResult = s7.ConnectServer();
|
|
|
|
|
|
+
|
|
if (ConnectionResult.IsSuccess)
|
|
if (ConnectionResult.IsSuccess)
|
|
{
|
|
{
|
|
|
|
+ string plcRead = s7.ReadInt16("DB1.16").Content.ToString();
|
|
|
|
+ Console.WriteLine("任务执行完成,获取PLC任务执行状态:" + plcRead + ",redis PLC任务执行状态:" + callBacktagValue.TagValue);
|
|
Log.Instance.WriteLogAdd("任务【" + task.TaskNodeId + "】回调清零,plc点位:" + task.Address + "值:" + callBacktagValue.TagValue, LOG_TITLE_CALLBACK);
|
|
Log.Instance.WriteLogAdd("任务【" + task.TaskNodeId + "】回调清零,plc点位:" + task.Address + "值:" + callBacktagValue.TagValue, LOG_TITLE_CALLBACK);
|
|
s7.Write("DB2.2", Convert.ToInt16("0"));
|
|
s7.Write("DB2.2", Convert.ToInt16("0"));
|
|
s7.Write("DB2.4", Convert.ToInt16("0"));
|
|
s7.Write("DB2.4", Convert.ToInt16("0"));
|
|
@@ -616,7 +681,7 @@ namespace IMCS.CCS.Service.Impl
|
|
Log.Instance.WriteLogAdd("回调异常,PLC连接不上==>", LOG_TITLE_CALLBACK);
|
|
Log.Instance.WriteLogAdd("回调异常,PLC连接不上==>", LOG_TITLE_CALLBACK);
|
|
return "回调异常,PLC连接不上==>";
|
|
return "回调异常,PLC连接不上==>";
|
|
}
|
|
}
|
|
- s7.ConnectClose();
|
|
|
|
|
|
+
|
|
task.State = false;
|
|
task.State = false;
|
|
task.UpdateTime = DateTime.Now;
|
|
task.UpdateTime = DateTime.Now;
|
|
await _taskCallbackService.CreateOrUpdateAndCache(task);
|
|
await _taskCallbackService.CreateOrUpdateAndCache(task);
|
|
@@ -655,8 +720,9 @@ namespace IMCS.CCS.Service.Impl
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
+ s7.ConnectClose();
|
|
|
|
|
|
- }
|
|
|
|
|
|
+ }
|
|
//回调检测到失败,回调通知ecs
|
|
//回调检测到失败,回调通知ecs
|
|
if (!string.IsNullOrEmpty(task.FailAddress) || !string.IsNullOrEmpty(task.FailAddress2) || !string.IsNullOrEmpty(task.FailAddress3))
|
|
if (!string.IsNullOrEmpty(task.FailAddress) || !string.IsNullOrEmpty(task.FailAddress2) || !string.IsNullOrEmpty(task.FailAddress3))
|
|
{
|
|
{
|
|
@@ -1701,10 +1767,11 @@ namespace IMCS.CCS.Service.Impl
|
|
}catch (Exception ex)
|
|
}catch (Exception ex)
|
|
{
|
|
{
|
|
Log.Instance.WriteLogAdd("心跳写入异常" + ex.Message, LOG_HEART_PLC);
|
|
Log.Instance.WriteLogAdd("心跳写入异常" + ex.Message, LOG_HEART_PLC);
|
|
- Console.WriteLine("心跳写入异常");
|
|
|
|
|
|
+ // Console.WriteLine("心跳写入异常");
|
|
return "心跳写入异常" + ex.Message;
|
|
return "心跳写入异常" + ex.Message;
|
|
}
|
|
}
|
|
- Console.WriteLine("心跳写入成功");
|
|
|
|
|
|
+ Log.Instance.WriteLogAdd("心跳写入成功" , LOG_HEART_PLC);
|
|
|
|
+ //Console.WriteLine("心跳写入成功");
|
|
return "心跳写入成功";
|
|
return "心跳写入成功";
|
|
}
|
|
}
|
|
|
|
|