昨天,有客户咨询上位如何识别1200 AI模块通道断线检测?平时怎么注意这一块,趁有时间自己研究一下,丰富自己的知识库。
大家都知道,在硬件组态中,模块的通道有一个可勾选的启用短路诊断选项,是默认勾选的,如果未接线或者短线,模块会闪红灯,这个很好观察。那么,如何让不在现场的工程师们知道现场模块短线呢?

在官网搜了一下相关资料,还真有西友分享类似案例的,在此也搬运一下他人的成果和大家共享
S7-1200 如何诊断 IO访问错误?
https://support.industry.siemens.com/cs/document/42781105/s7-1200-%E5%A6%82%E4%BD%95%E8%AF%8A%E6%96%AD-io%E8%AE%BF%E9%97%AE%E9%94%99%E8%AF%AF%EF%BC%9F?dti=0&lc=zh-CN
博途1200 怎样使用带断线诊断的模拟量电流输出?
http://www.360doc.com/content/19/1014/12/55021079_866708447.shtml
1 、在项目树打开PLC站目录,打开“程序块”目录。
2、双击“添加新块”。
3、在“添加新块”对话框中点击“组织块”,在出现的列表中选择“Diagnostic error interrupt”OB块。
4、点击“OK”关闭对话框。然后再“程序块”文件夹中出现“Diagnostic error interrupt ”OB82,并且该程序块会自动打开
5、从诊断中断中读取启动信息,可以在诊断中断OB82的程序编辑器中插入3个“MOVE”指令编程。MOVE指令在“指令树”>“基本指令”>“移动操作”下面。
6. 为每一个“MOVE”指令的输入参数设置为OB82诊断中断块接口参数((“IO_State”, “LADDR”和 “Channel”)中的一个。
7. 使用DB块变量为每一个“MOVE”指令填写输出参数,数据类型与OB82诊断中断块接口参数里的变量的数据类型保持一致。
8. 使用一个常开触点评估OB82块接口参数中的“MultiError”。
从“diagnostic error interrupt” OB82中读取诊断信息:
IO_State:硬件状态
LADDR:触发诊断中断的硬件对象的硬件标识
Channel:通道编号
MultiError:为TRUE (如果有多个错误)
硬件标识符(HW ID)用于标识模块或者功能单元(比如:输出和高速计数器)。系统将这个整数和诊断错误中断一起传送,以识别故障模块或者功能单元。
在设备视图,选中模块,属性窗口,选择“系统常量” 可以查看模块硬件标识符




这种方式可以实现,亲测有效,那么,按理说,这些故障信息都存储在一个区间,有没有办法直接从区间地址直接读取故障信息呢?大家有没有什么好的办法呢?