西门子PLC 数据记录
一直忙于做项目,今天调试现场抽点时间写点东西!同行都能体会[点亮平安灯]
项目介绍:西门子1200PLC,西门子V90PN伺服,协作机器人。
协作机器人抓取上料,设备转盘7工位安装检测。
工作中
项目图纸
设备和网络
用FOR语句记录100个数据,下图有注释!
100个数据用FOR记录
记录下来的数据在屏幕显示
使用S7-12001500记录数据的两种方法(2)
在上一篇里面我们介绍了使用自带的Data Logging指令组实现数据记录的方法。这种方法的优点是使用简单,可以离线查看数据,也可以长期保存。但是它也不是没有缺点,首先是需要开启PLC的WEB SERVER功能,然后才能登录下载查看。另外一点就是我们不太方便使用这些历史数据。比如因为某种原因,我们需要访问历史记录那就没办法了。如果我们自己编程来实现数据记录,那就灵活多了,虽然难度稍大,但是我们可以对这些历史数据自由控制。
初级实现
下面我们来简单介绍一下如何自己编程实现数据记录。首先新建一个PLC项目,插入一个PLC数据类型"RecorderType"。该类型包含了四个元素,参见下图所示。
图1 PLC数据类型
然后我们再创建一个数据块作为数据库保存历史数据。重命名数据块为Database,插入两个变量,类型分别为"RecorderType"和Array[0..99] of "RecorderType",前者用于保存当前数据,后者用于保存历史数据。这里我们声明的数组长度为100,也就是最多可以保存100个历史数据。
图2 创建数据块
数据记录通常由一个布尔量来触发,在捕捉到上升沿时将数据保存到变量Database.CurrentData中。为了便于测试,我们用固定值代替了变量,程序参见下图所示。
图3 保存当前数据
在这里我们使用了指令RD_LOC_T读取当前PLC时间,意在为历史数据加上时间戳。在保存当前数据的同时,我们还需要对保存历史数据的数组Database.HisData进行操作,所有数据逐个后移,最后一个数据丢弃,然后将当前数据保存到数组的起始位置。
图4 保存历史数据
保存并下载程序,我们可以试着置位触发信号,然后就会看到变量Database.CurrentData中保存了当前数据,同时数组Database.HisData的起始位置也保存了最近的一次数据。
图5 查看历史数据
如果再次置位触发信号的话就能看到数组中的数据整体后移,而起始索引始终是最新的一条数据。
进一步提升
切记,我们写任何程序,都要考虑如何进行“封装”。并不是只有面向对象才有封装,一段具有独立功能的代码都可以进行封装,既可以封装成对象(Function Block,也就是FB),也可以封装成函数(Function,也就是FC)。小到一个方法,大到一个系统,都需要好好的思考如何进行封装。
封装的好处主要有三点,一是便于维护,我们只需要维护一个个的函数或者对象即可,这样不会在增加功能或者改变工艺时牵一发而动全身。二是便于知识的积累,封装后的函数或者对象便于在使用中逐渐完善、优化,慢慢形成自己的知识库。三是提升效率,随着知识库的不断庞大,我们做项目的效率也会越来越高。下面我们还是以这个例子来谈谈如何进行封装。
上面的代码虽然实现了功能,但是不便于移植到别的项目,程序复用性差。如果想提高程序复用性,我们必须对它进行封装。根据数据记录这一需求特性,我们只需要将它封装成FC即可,不需要封装成FB。
首先新建一个FC,接口如下图所示。
图6 函数接口
在上图中,参数“IN”类型是“RecorderType”,用于接收当前数据。参数“DataStrage”类型是“Arry[*] of “RecorderType””。注意这里的数组下标我们用了*,这个表示我们对存储数据的数组长度没有限制,从而函数的灵活性大大增强。因为我们使用了动态数组,所以第一步我们需要获取用于存储数据的数组上、下限。
图7 获取数组上、下限
然后我们根据数组的上、下限来循环操作该数组。
图8 操作数组
输出参数“Done”用于标识数据存储动作完成。完成后保存该函数,然后我们直接调用它就行了。
图9 调用函数
大家可以自行测试下,效果和之前的代码是一致的。这种封装形式大大简化了程序,虽然第一次稍微麻烦点,但是后面带来的好处显而易见。
相关问答
西门子触摸屏怎么显示出计数器的历史数据?
可以通过以下步骤显示西门子触摸屏的计数器历史数据:1.首先,在触摸屏界面上找到菜单或设置选项。这通常位于屏幕的一角或者通过点击特定图标来访问。2.进入菜...
西门子200smart的历史记录怎么导出做成报表?
你这个问题,其实最好的方法就是有个上位机电脑,这样上位机软件的数据库可以实现对数据的长时间存储,也方便打印!用触摸屏的话,记录在触摸屏中也是可以的!...你这...
plc怎么编写运行时间并在触摸屏上显示?
关于这个问题,编写PLC的运行时间并在触摸屏上显示可以通过以下步骤实现:1.在PLC程序中创建一个计时器(Timer),用于记录运行时间。根据PLC的型号和编程软件...
西门子plc编程思路?
一、西门子plc编程思路基本的硬件知识编程之前,需要了解一些基本的硬件知识,最好从硬件的选型和画图入手,等把输入输出的类型,模拟量的选型等搞清楚之后,再...
300plc能查看故障记录么?
西门子S7-300PLC具有非常强大的故障诊断功能,通过STEP7编程软件可以获得大量的硬件故障与编程错误的信息,使用户能迅速地查找到故障。这里的诊断是指西门子S7...
西门子plc怎么诊断设备故障?
西门子PLC通常使用西门子自带的开发环境,例如TIAPortal或Step7等软件。对于设备故障的诊断,可以参考以下步骤:1.利用软件读取PLC的状态:可以通过软件监视...
西门子数控系统808d零件计时器如何用?
西门子数控系统808d零件计时器可以用于判断零件的加工时间,它通常用于监控加工零件的加工时间,以确保生产周期的准确性和效率。使用该计时器需要在数控系统的...
A0629:如何在STARTER中跟踪记录G120的运行数据?
对分析故障很有帮助的功能第一次见识这个功能是看到西门子工程师使用DriveMonitor通过串口连接6SE70变频器记录变频器数据,过后在想,串口通讯的速率能这么快采...
PLC的基本数据类型,我们如何在编程中选用?
PLC的基本数据类型,我们常用的有如下几种:1.布尔类型BOOL,也就是我们常说的0和1,也可以理解为True和False,对于PLC来说就是DI或者DO点的输入或输出状态...
西门子v20变频器怎么查看故障记录?
可以通过以下步骤查看西门子v20变频器的故障记录1.检查变频器面板上是否有故障灯亮起,根据不同的灯光组合可以初步判断故障类型;2.如果故障灯未亮起,可进入...