高手进阶:让PLC自动生成报警信息,绝对是干货
内容梗概:利用Prodiag功能把报警信息封装在需要多次调用的FB程序块中,实现自动生成报警信息,减少HMI的编程工作量。
在一个自动化项目的程序中,报警程序是不可或缺的,它是PLC控制程序中非常重要的组成部分。在设备的自动运行过程中,自动检测设备的运行异常,并输出报警提示,协助操作人员排除故障。在TIA Protal中,大部分人的HMI报警程序是用“离散量报警”来实现的,这个是最容易理解也是最直观的方式。
离散量报警
但是当一个设备中有某个部件被大量重复性的使用时,其HMI的报警程序的编写工作量会变得非常巨大无趣。比如气缸,气缸在自动化项目上的应用非常广泛,而且用量很大,一个中等规模的自动化项目上有几十个气缸很正常,有时为了让故障原因表达得更详细,通常一个气缸会编写多个报警信息,如前进不到位、后退不到位等,这样一来几十个气缸的报警信息的编写是一个很大的工作量,而且是重复性的工作,就我个人的感受来说,做这种重复性的工作是非常枯燥乏味的,心里会非常的烦躁。那有没有方法把这种枯燥而且乏味的重复性的内容让程序自动生成呢?有,确实有,我们可以利用TIA Protal的Prodiag功能把报警信息封装在需要多次调用的FB程序块中,实现自动生成报警信息。今天我们就以气缸的控制程序为例,详细介绍如何实现这个功能。
在本文中不对气缸功能块的控制原理做详细讲解,这个后续我可以单独写文章讲解,只侧重讲解用Prodiag功能做报警信息。关于Prodiag功能在前几篇文章《如何在触摸屏上显示PLC程序之GRAPH篇》、《如何在触摸屏上显示PLC程序之LAD篇》都有介绍,重复的内容在这里就不做累述。
用FB做一个气缸控制功能块命名为“Std_CylinderBase”,在Input、Output(或Static)中添加以下变量:
Input:
DeviceName 数据类型WString[20] //用于填写气缸的功能名称,数据长度自定义
CylNr:数据类型 INT //用于标记气缸编号
Safety_OK:数据类型 BOOL //外围的安全设施正常,为FALSE时气缸不输出报警信息
Output或Static:
Fault:数据类型 BOOL //总的报警输出信号
Error_Code:数据类型 BYTE //报警代码,每个变量的信息参见下表:
Error_Code
FB的接口定义完后如下:
FB的接口定义
在我的Std_CylinderBase程序中将数据类型为INT的CylNr变量转换成字符串STRING后放入报警信息中的,这是因为我在多次调用FB时将FB接口参数化比较方便才将CylNr定义为INT,大家可以直接将CylNr定义为STRING,这样就不需要下面的这段转换程序。
气缸编号转换成STRING
在Std_CylinderBase程序中编写气缸报警程序,并输出Error_Code:
编写Error_Code程序
将所有报警汇总输出到Fault:
Fault输出
打开“PLC报警文本列表”,在其“文本列表”中新建一个名为“CylinderFaultList”的文本列表,在“CylinderFaultList文本列表条码”中根据Error_Code的值填写对应的报警信息:
PLC报警文本列表
在这里可以编辑多语言的报警信息,这样在HMI上就可以实现多语言显示切换。
以上工作做完后,我们回到Std_CylinderBase块,设置Fault变量的Prodiag功能。在FB的接口中Fault变量的“监控”栏右键后选择“新增监控”,在其“属性”—“监控”中设置如下:
Fault的监控设置
条件 1/2/3为串联关系,为空表示无条件。
这里的其他选项我就不详细讲解,不明白的可以看上一边文章《如何在触摸屏上显示PLC程序之LAD篇》中有详细介绍,地址:https://www.toutiao.com/i6974594252995052071/
选择“详细文本”选项,配置如下:
详细文本配置
在这里我们将详细文本的内容设为由变量“变量1(SD_4)”、“变量2(SD_5)”、“变量3(SD_6)”中的值组合生成。
详细文本域的语法如下:
其格式为@<相关值的编号><格式>。符号“@”用于只是开始使用相关值和关闭相关值。
相关值的编号
格式
样例
此例中@4%s@,其中“%s”没有编辑[i]指定任意长度,但是受限于Input中iDeviceName的数据类型WString[20]已经定义宽字符长度为20,“4”表示调用变量1(SD_4)中的值。
此例中@6%t#CylinderFaultList@,表示调用变量3(SD_6)中的值将“#CylinderFaultList”文本列表中的数据以字符串的形式输出。此处实际上是使用了双层嵌套,线调出#oError_Code变量的值,在将“#CylinderFaultList”文本列表中#oError_Code变量的值对应的文本内容调出。
这里使用变量、文本列表的好处是可以减少Prodiag监控,气缸的6个报警输出实际上只用了一个Prodiag监控,大幅节约CPU资源。当然也可以不使用文本列表,那么就需要在FB里为每个报警各自创建一个监控,每个气缸就需要创建6个监控。
以上配置完成后编译Std_CylinderBase。
创建ProdiagFB,将其命名为“AlarmDiag”。
调用Std_CylinderBase。
打开“项目树”里CPU的“PLC监控和报警”,在“FB监控实例”中将气缸的报警分诊断配给刚才新建的“AlarmDiag”。
PLC监控和报警
图中ST?_CylinderManage_DB为调用Std_CylinderBase的FB的背景数据块。
Std_CylinderBase被多次调用后“AlarmDiag”中自动生成的报警诊断如下:
AlarmDiag程序块
打开调用Std_CylinderBase的FB程序块,设置Std_CylinderBase的接口数据。
气缸编号赋值
Std_CylinderBase调佣
在HMI上添加报警信息显示画面,在 “显示”中一定要勾选刚才在诊断里选择报的警类别,否则这里是不会显示诊断的报警信息。
报警信息显示
在HMI上添加代码显示画面,在画面中添加“PLC代码视图”控件,如下图:
PLC代码视图
下载PLC和HMI程序,查看运行效果
HMI报警显示
Std_CylinderBase
以上案例中,我们完全抛弃了用“离散量报警”的报警显示方式,将报警信息集成进封装好的FB块中,免去了对重复对同一部件进行报警信息编写工作,极大的提高了编程工作量,提高了工作效率。
你学会了吗。看完不要忘了给八阿哥点个赞[赞],你的点赞是八阿哥进行创作的动力!
我是八阿哥,关注我,可以随时查看我最新发表的技术原创贴!这可都是干货哦~!
都是原创,打字不易,若有错误或遗漏还请多多包涵[作揖]。
PLC进入停止模式,怎么让它自动报警,老电工讲解编程和
有个朋友问了一个问题,他们单位有一个PLC所控制自动排水的系统,用的是西门子S7-200 smart PLC。不知道什么原因,PLC有时候就自动切换成了停止模式,切换成停止模式以后就不能够控制自动排水了。这个时候操作工如果没有及时发现,车子里面水满了就溢出来了。
有没有什么办法?如果PLC进入停止模式以后给一个报警、提示,带了西门子 smart PLC其实就是有这个功能。比如在PLC点上或者某个点,比如像这款PLC是不是Q.0到Q.7?再挑一个点,比如从用Q.7点位接一个报警仪,比如这里接一个指示灯。
比如在Q.7点位上接一个指示灯,比如也就是倒数第三个端子上接一个指示灯。这里接个指灯当然要取一个供电的电源,比如在E2和端子上接供电电源,把供电电源接到电源的和火线L。把指示灯后边这根线接到零线,让它形成一个回路。
通过PLC在经过Q.7点位接到指示灯的另一个接线柱回到零线。这个线接好以后,也就是希望当PLC进入停止模式以后希望指示灯点亮,但是实际工作当中把它换成一个报警仪。
下面去编程软件当中,系统快了一遍设置一下。打开西门子S7-200 smart PLC的编程软件,怎么设置就让Q.7在PLC状态?在PLC进入停止模式的时候输出,其实这个在课程当中讲过,在系统快里边打开系统快窗口,这里就有设置的方法,数字量输出和选项。
这里有Q.0.X,也就是代表后边是Q.0到Q.7,因为这个是SR20,所以只有八个输出点,也就是这个是Q.0,一直到Q.7。也就是勾选Q.7,也就是下面这个描述,只要CPU处于stop模式,选中的输出的就会为ON,也就是它就会输出,也就是这个。
选Q.7也就是可有0.7的就会输出,只要在stop模式,点击确定。但这里需要注意一个问题,可能没有用过这个功能的朋友以为只要这样选择以后进入运行,停止模式以后为on,进入运行模式以后就变成off了。其实不是,只要这样设置,下载到prc当中以后,其实在停止模式下是on,切换为运行模式以后还是on。
所以希望在运行模式下会off,也就是灯的不亮,在停止模式和灯亮。所以在程序当中还要编一条程序,也就是可以利用s这里输入一个比如sm零点一,也就是第一个扫描周期触点接通,然后利用复位指令给q零点七,也就是接的复位,下面填一也就是给一个位进行复位。
当prc只要一切换成运行模式以后就复一下位,q零点七就不输出了,只要切换到停止模式以后就输出。下载到prc内部,观察一下,看一下plc灯是否点亮,看一下实物。目前prc在四top模式,就是在停止模式,指示灯已经点亮了,但是刚才接错线了,这根火线不应该接在一l,接在二l这里,已经改了过来。
把plc切换到运行模式,看运行模式指示灯的点亮,接的指示灯的时候就熄灭,再切换到停止模式,切换到停止模式以后stop指示灯亮,指示灯就点亮,就实现了这个功能。
如果想学西门子s七杠二百smartplc编程,可以点击下方装栏卡片学习这套我制作的,手把手带你零基础prc入门了课程。这套课程非常的通俗易懂,即使完全零基础,对prc没有一点概念,只要有电工基础就可以学这套课程。
这套课程包括对西门子s七杠二百smartplc硬件介绍,包括对接线的方法讲解,实物讲解,包括每条编程指令的使用方法,包括像里边的有很多编程的实例,相信学了这道课程以后可以完全掌握西门子s七杠二版smat和plc的编程方法。
但拍了课程以后如果没有smat编程软件,可以私信我,把软件的时候发给你。
相关问答
三菱plc怎么查看程序里的报警?
回答如下:要查看程序里的报警,可以按照以下步骤操作:1.进入三菱PLC的编程软件(比如GXWorks3)。2.打开你要查看的程序。3.在编程软件的菜单栏中选择“...
西门子plc报警程序怎么写?
1.西门子PLC报警程序需要按照一定的规则和步骤进行编写。2.首先,需要明确报警的条件和触发条件,例如某个传感器的数值超过设定阈值或者某个设备出现故障等。...
plc的报警有那些?
PLC常见故障:1、CPU异常:CPU异常报警时,应检查CPU单元连接于内部总线上的所有器件。具体方法是依次更换可能产生故障的单元,找出故障单元,并作相应处理。...
pLC报Err是什么?
在PLC编程中,当出现“Err”(或“Error”)错误提示时,通常表示PLC控制器发生了错误或故障,导致程序无法正常执行。具体的错误原因和解决方法可能会有所不同,...
封边机plc有几个红灯总亮着正常吗?
封边机plc有几个红灯总亮着不正常。plc显示红灯的原因如下:可能是电源模块故障。可能是通讯模块故障。可能是程序错误、系统崩溃等。可能是外部环境因素,...
plc报警程序怎么编写?
编写PLC报警程序需要考虑以下几个步骤:定义报警条件:首先需要确定哪些条件会触发报警,例如某个设备的温度超过设定值、某个传感器的读数异常等。设计报警逻...
西门子触摸屏的报警变量怎么做?
在模板里添加报警视图,然后在报警变量里设置相关变量图的编程方法:在工具栏中的“增强对象”找出“报警视图”拖放到界面。在它的属性中选择相应的“显示”按...
三菱plc内部报警代码?
三菱plc内部的报警代码PLC常见错误代码大全及解决方案。1、错误编号(D806*):0000错误讯息:NOERROR--无异常错误发生异常内容及原因:无异常发生对策:请检...
plc中报警是不是相当于停止?
Plc中报警,不一定相当于停止,因为报警,根据级别不同,分为提示报警和严重报警,出现提示报警的时候Plc是不会终止的,可能出现了一些提示信息,需要进行检查,...P...
欧姆龙plcc200hx报err警怎么办?
PLC报警大致分致命报警与非致命报警两类,ERR灯也提示不一样。致命报警是ERR灯常亮非致命报警是ERR灯闪亮。有两百多个情况都会引起报警。建议下载一本c200h...