课程中心
HOME
课程中心
正文内容
条码检测plc编程 高手进阶:让PLC自动生成报警信息,绝对是干货
发布时间 : 2024-11-25
作者 : 小编
访问数量 : 23
扫码分享至微信

高手进阶:让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块中,免去了对重复对同一部件进行报警信息编写工作,极大的提高了编程工作量,提高了工作效率。

你学会了吗。看完不要忘了给八阿哥点个赞[赞],你的点赞是八阿哥进行创作的动力!

我是八阿哥,关注我,可以随时查看我最新发表的技术原创贴!这可都是干货哦~!

都是原创,打字不易,若有错误或遗漏还请多多包涵[作揖]。

实况案例使用西门子RS232读取条码枪读取条码

大家好,我会持续更新,请关注我!未来我会分享我自己大概的程序架构,设备启动、手自动切换、配方数据和逻辑、伺服面向对象FB块,报警,程序流程,程序工位状态,IO连接,报警处理以及报警信息显示-DB块数据,各类伺服PN伺服/ETHERCAT伺服,变频器等等实战实例程序。请关注我,再次谢谢大家的支持。

PLC_S2篇: 实况案例使用西门子R232读取条码枪读取条码。

Step1 一般条码枪都是使用RS232自由口通讯(需查看条码说明书确定),确定条码枪的波特率,奇偶数校验,数据位,停止位,本条码枪为19.2kbps/奇校验/8位/1位。

Step2在S1200中添加RS232模块(CM1241),右击属性-->常规-->RS232接口-->端口组态设定设定波特率,奇偶数校验,数据位,停止位,查看RS232接口-->硬件标识符为269.

设置完成:

Step3 新建DB数据块-扫码命令数据和条码信息数据变量,关闭DB块的优化块的访问。

Step4 在FC程序中添加RS232接收指令Receive_P2P,设置PORT端口号为296(硬件标识符),BUFFER为存储接收到的数据的变量。

Step5 在FC程序中添加RS232发送指令Send_P2P,设置PORT端口号为296 (硬件标识符),BUFFER为发送数据的变量,LENDGTH为发送的字符数量。

Step6 获取PLC通过RS232读取条码扫描枪返回数据的数量,以及再次触发扫描命令。每次接收到数量后"Receive_P2P_DB_1".ReceiveBuffer[0] 会进行+1处理,可通过"Receive_P2P_DB_1".ReceiveBuffer[0]数量的变化来处理接收到的数据和确定收到了新的条码,

当扫描命令3秒内没有新的数据更新(数据更新后扫描命令会被复位此程序内没有添加),再次尝试,当次数超过3次时输出通讯错误。

Step7 程序添加完成,下载程序进行测试,通常测试前先使用串口调试助手与条码枪进行测试以及确定返回数据正常,或是否设定回车换行等等。

---------------------------------------结束

相关问答

三菱PLC与条码扫描枪通讯为什么PLC无法读出条码信息了?(PLC为FX1N系列,使用RS232通讯模块与PS7120扫描枪)?

看你要和什么通讯了,如果是变频器请你先了解变频器的通讯格式,和数据格式。知道这个就可以了。变频器有接收数据格式,控制格式有好几种,你要看看变频器说明书...

如何才能实现扫描一个条形码,然后再打印出来一个一模一样的条形码?

这个需要用到即时打印功能,即你用扫描枪扫描一个条形码,扫描的数据输入的条码打印软件中,并制作出来一个提前设定好条码类型的条形,然后再提交给你的打印机...

西门子plc序列号是哪个?

西门子PLC序列号是PLC设备的唯一标识符,用于追踪和管理设备。该序列号通常位于设备外壳上的标签或扫描条形码上。在PLC设备的安装、调试和维护过程中,序列号是...

西门子PLC如何能辨别真伪啊?

1.外包装,盗版外包装跟正版很相似,光看外包装是不知道的。正版包装上面有序列号,上西门子官方输入序列号就知道了。还有西门子PLC产品模块上都有条形码,可以打...

基于plc的邮件分拣怎么设计?

这应该是某个课题或者者毕业设计题目吧,因为邮件太多的话PLC根本处理不了那么多。首先需要区分邮件,工业一般使用的是通过扫码方式,每个邮件上都有条形码或者二...

大华电子称的使用说明?

不同品牌的条码电子秤的设置方法是不一样的,如果是上海大华的,会随机自带一套设置软件,在这个软件中设置商品的PLC信息和条码标签格式,设置完成,用数据线与...

大华电子称怎么连接电脑呀?

1、电子秤里会随机自带一套设置软件,在这个软件中设置商品的PLC信息和条码标签格式。2、设置完成,用数据线与电脑连接,一般有串口和网线接口两种连接方式。...

什么是aidc领域?

是不用键盘直接将数据输入计算机系统、可编程逻辑控制器(PLC)或者其他微处理器中。它包括条形码、射频标识与射频数据通讯、磁条、语音和视觉系统、光学字符识...

什么是mens系统?

mes系统是一套面向制造企业车间执行层的生产信息化管理系统。mes系统采用强大数据采集引擎、整合数据采集渠道(RFID、条码设备、PLC、Sensor、IPC、PC等)覆盖...

大侠们 求推荐一下:数据采集系统主要采集方式有哪些?

[回答]MES系统最大的特点是可以实时收集生产过程中的各种信息和数据,然后收集到数据库中,由管理层进行数据分析和查询。如何有效地收集车间内的各种数据,...

 闲花弄影上  教学实施 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部