十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

严格采用“**一阶段一改动、一阶段一验证**”的方式,不要同时修改通讯、流程和界面

严格采用“**一阶段一改动、一阶段一验证**”的方式,不要同时修改通讯、流程和界面 严格采用“一阶段一改动、一阶段一验证”的方式不要同时修改通讯、流程和界面。第 0 步建立基线暂不修改业务代码记录当前版本6 个工站同时连接。自动模式连续上料、搬运、测试、吹扫、下料。复位、停止、结批。自动化SOTReadyReq、SOTReq、取料通知。PLC、主控板、扫描器、RFID 断线场景。记录socket 断线次数PLC 读取失败次数每个流程开始和结束时间是否出现重复上料是否出现流程卡住是否出现上一批流程未清理。先保留一个可以回退的基线版本。第 1 步只增加通讯和流程日志修改AuxPLC.csPLCController.cs主控板通讯类扫描器通讯类本阶段不改变业务流程只增加发送报文接收报文请求开始时间响应耗时超时重试次数socket 连接和断开原因工站号和设备名称。验证单站运行6 站同时运行连续运行 2 小时确认增加日志后没有明显降低通讯效率确认每次断线能定位具体设备和报文。这一阶段通过后后续问题才有可靠依据。第 2 步修复通讯生命周期不改业务逻辑重点处理StartPolling和StopPolling是否存在旧任务未退出停止轮询后是否等待任务真正结束重连时是否可能启动多个轮询任务连接关闭时是否仍有读写请求同一设备是否始终只有一个通讯执行队列。保留现有ReadSignal和WaitForPlcConditionsAsync的调用方式不引入事件驱动。验证反复切换自动、半自动、手动反复复位和停止断开 PLC 网线后恢复6 个工站同时断线和重连连续运行 4 小时确认同一个 PLC 没有多个轮询任务确认没有出现响应交叉和重复连接。第 3 步统一 PLC 快照但仍使用原来的等待方式在 PLCController.cs 增加完整快照概念一次批量读取完成后生成一份完整快照快照带采集时间和序列号记录本轮读取是否成功读取失败时标记信号无效暂时让现有业务继续读取缓存。本阶段不修改流程触发方式只统一数据来源。验证检查 U/V/W、载盘、安全光幕在同一快照中是否一致模拟某段 PLC 地址读取失败确认旧值不会被错误当成最新有效值观察 6 站实时采集是否正常确认现有自动化业务不受影响。第 4 步先改一个低风险等待点建议先改测试位下降到位或测试位顶升到位。不要首先改上料、取料和复位因为这些涉及设备安全和流程恢复。新逻辑应为先立即检查当前快照未满足时等待快照变化每次变化重新判断条件保留超时和取消任何异常仍返回原来的失败结果。验证信号已经为真后再进入等待等待过程中从假变真信号抖动超时停止和复位时取消6 个工站同时搬运。确认通过后才继续下一类等待。第 5 步统一PlcConditionWaiter修改 PlcCondition.cs让它统一处理单信号条件多信号组合条件数值等于指定值例如吹扫完成必须为5上升沿下降沿超时取消通讯失效条件未满足原因日志。此时LoadProduct、TransportProduct、PreTest、UnLoadProduct等流程仍只调用统一等待器不各自实现事件订阅。验证上料等待搬运等待顶升等待吹扫完成取料完成复位清料超时和取消多个流程同时等待不同条件。第 6 步逐个替换其他等待循环按照风险从低到高替换TransportProduct的下降和顶升PreTest的顶升到位UnLoadProduct的吹扫开始和吹扫完成ManualMaterialRemovalService的人工取料LoadProduct的上料和扫码条件复位、清料和结批条件。每替换一个文件都单独上机验证不要一次修改全部流程。重点确认当前信号已经成立时不会漏执行信号从未成立到成立能及时唤醒信号一直不成立会正常超时停止、复位、结批能取消等待不会重复写 PLC 命令。第 7 步改造实时采集服务再处理 AutomaticRealtimeAcquisitionService.cs。适合事件触发的内容允许上料上升沿允许清料上升沿初始化完成报警新增吹扫完成状态变化。仍保留周期刷新温度流量液位压力UI 状态显示。注意PLC 采集线程不能直接弹窗PLC 采集线程不能直接执行测试事件只生成决定或投递 ChannelUI 更新需要合并和节流避免消息队列堆积。验证允许上料持续为真时只触发一次允许上料变假后再次变真能再次触发清料报警只弹一次报警恢复后再次出现能重新提示6 站同时实时运行。第 8 步修复自动流水线取消和清理处理 AutomaticStationPipeline.cs停止时取消所有 Worker取消后等待 Worker 真正退出无论成功、失败还是取消都执行统一清理确保_activeProducts最终移除确保_activeProductStages最终移除确保等待中的 SOT 请求能得到失败响应结批后不残留旧的上料请求。验证上料等待时停止扫码过程中复位测试过程中停止吹扫过程中复位人工取料等待时结批结批后立即重新开批确认不会再提示“上一批流程未结束”。第 9 步集中管理工站运行状态新增统一的工站运行状态对象逐步替换 ViewModel 中大量布尔字段。建议将_isResetting_isBatchClosing_stopRequested_automationControlsSot_allowLoading_allowUnloading_waitingForNextAllowLoadingCycle收敛为明确的状态和阶段而不是任意组合布尔值。例如设备状态Offline / Initializing / Idle / Running / Stopping / Resetting 工艺阶段WaitingLoad / Loading / Transfer / Testing / Purging / Unloading 控制来源Manual / Automation / Eap验证自动模式半自动模式手动模式复位停止结批自动化和 EAP 分别开启模式切换时不产生错误动作。第 10 步最后拆分 ViewModel最后再拆分StationControlViewModel的业务职责生命周期服务上料服务搬运服务测试服务取料服务自动化协议服务EAP 协议服务UI 适配层。这一步只做职责迁移不再同时修改通讯协议和 PLC 判断逻辑。验证所有原有按钮功能所有弹窗所有日志所有自动化指令所有 EAP 指令六工站并行运行连续运行 8 至 24 小时。最重要的原则每一步都满足以下条件才进入下一步项目编译通过单站测试通过六站并行测试通过断线、停止、复位测试通过连续运行测试通过日志中没有新增异常可以单独回退当前一步。推荐实际顺序是基线记录 - 通讯日志 - 通讯生命周期 - PLC完整快照 - 一个低风险事件等待点 - 统一条件等待器 - 逐文件替换等待循环 - 实时采集事件化 - 流水线取消清理 - 工站状态集中化 - ViewModel拆分这个顺序风险最低也能确保每次上机验证都能明确判断问题来自哪一步。
返回列表