using System; using System.Collections.Generic; using System.Text; using System.Threading; using System.Threading.Tasks; using ProjectBase.Data.BaseDAL; using ProjectBase.Data.Logs; using SIMDP.BLL; using SIMDP.Device; using SIMDP.Model; using SIMDP.Util; using ACTMULTILib; namespace SIMDP.Project { class MXComponent_XYK_PM : MXComponent_XYK { #region 重写父类函数 public override void actionOpen() { } public override void actionStart() { } public override void actionStop() { } bool pcHeartBeat = false; public override void actionTimer() { try { // 心跳信号 pcHeartBeat = !pcHeartBeat; bool res1 = Write("PC心跳信号", pcHeartBeat); // 轮询监控节点 foreach (var p in monitorPoints) { short value; if (!Read(p, out value)) continue; if (value != Convert.ToInt16(p.value)) { p.value = value; if (p.proc != null) p.proc.Invoke(this, new object[] { value }); } } redis.Publish(SysEnvironment.OpcDataChannel, ""); } catch (Exception ex) { LogHelper.log.Error("读取PLC信号发生异常:" + ex.Message); actEasyIF.Close(); SetRedisPlcDisConnect(); } } #endregion #region 生产过程_小压溃 public void 小压溃主压机压装完成(object value) { bool signal = Convert.ToBoolean(value); LogHelper.log.Debug("小压溃主压机压装完成: signal = " + signal.ToString()); if (!signal) { Write("主读取完成", false); 主压机结果 = false; 主压机关联流水号 = 0; 主压机加工步骤号 = 0; return; } if (signal) { Read("主压机结果", out 主压机结果);//true Read("主压机关联流水号", out 主压机关联流水号);//工件流水号 Read("主压机加工步骤号", out 主压机加工步骤号);//3 } //队列里无数据,报警并反馈完成 if (process_XYK[小压溃工序.主压机].Count == 0) { Tool.LogAndNotice("生产过程报警", 3, "小压溃工序.主压机: 生产序列无数据"); Write("主读取完成", true); return; } //队列里有数据,进行处理 ProductionData_XYK data = process_XYK[小压溃工序.主压机][0]; data.dict["主压机结果"] = 主压机结果 ? "OK" : "NG"; LogHelper.log.Debug("更新主压机结果: " + 主压机结果.ToString()); BLLFactory.Instance.Update(data.toModel(), data.model.DataId); //更新最终压装结果 data.dict["最终压装结果"] = data.dict["辅助压机结果一"] == "OK" && data.dict["辅助压机结果二"] == "OK" && data.dict["主压机结果"] == "OK" ? "OK" : "NG"; LogHelper.log.Debug("更新最终压装结果: " + data.dict["最终压装结果"]); BLLFactory.Instance.Update(data.toModel(), data.model.DataId); process_XYK[小压溃工序.主压机].RemoveAt(0); process_XYK[小压溃工序.打标].Add(data); Write("主读取完成", true); } #endregion } }