《工业控制计算机》2023年第36卷第2期SiemensPLC系统诊断研究与应用刘本发赵传同田晓伟(一汽-大众汽车有限公司青岛分公司,山东青岛266200)摘要:西门子PLC系统功能和标准函数提供丰富的目录及技术规范,用于处理相关控制任务与功能,这些系统功能是系统诊断的重要方法要素。PLC的操作系统通过中断机制管理事件,系统诊断功能检查相关的系统错误及编程错误,依据诊断事件请求回调系统功能产生相关响应(中断调用)。这些系统诊断响应有系统RUN/STOP、故障响应、请求OB调用等。如同消息订阅,用户通过编程相关消息(消息块函数)可以在WinCC、HMI实现可视化报警,如ALARM消息报警。关键词:OB组织块;事件;系统诊断;中断;消息;S7_ALARM1系统诊断SiemensPLC(ProgrammableLogicController),在发生系统类故障时,诊断往往十分困难。本文通过论述系统诊断信号流工作机制和原理,帮助程序员、工程师、维护人员快速发现并解决问题。以S7-300和Profinet为例,图1是系统诊断信号流的一般性描述:图1系统诊断信号流系统诊断包括系统错误诊断、IO诊断、有诊断能力的模块的诊断,分为同步诊断和异步诊断。它是运行于操作系统上的集成功能,属于是诊断功能层,本文借助于分层的方法来形象化地探讨,图1就是分层描述。这里特别说明诊断基于项目,没有项目没有用户程序的CPU只是自我的管理。因此,系统诊断是对项目及组态数据的诊断。2系统诊断响应如图1的实线信号流,系统诊断检查系统错,当诊断请求事件触发时会有如下相关响应:①事件写入DiagnosticBuffer用于在线诊断;②中断OB1运行,依据事件类别的请求,调用相关的诊断OB(用户程序接口)进而访问它的用户程序执行诊断响应任务;③写入CPU系统数据区相关诊断信息及状态。④这些响应最终由操作系统完成PLC状态的管理如命令停机、启动。案例如下:案例一:45号IO设备站,插槽10的输入模块拔出,IO站SF红灯闪烁。事件触发后响应:诊断Buffer信息写入,事件代码ID编号为16#3951,如图2所示;诊断请求调用OB83;CPU由RUN停机STOP。如果先不插入该模块就Restart,这时CPU也可以启动为RUN,但SF会报警。结论:事件是在进入时触发,系统数据区诊断信息此刻并未清除。图2在线事件2.1诊断事件写入BufferPLC事件无论状态轮询型事件(如IO站状态)还是中断发送型事件(如模块插拔)都是按照表1的编码规则生成事件编号。表1事件编码格式事件ID的16编码中,EventClass共分为1、2、3…F等级15个类别,其中包含了用...