西门子S7-200PLC的数据归档怎么用?

目录

问题的提出

问题的初步解决

数据归档的效果

数据归档文件不对

我的疑问

2024.03.30 第一次更新

2024.03.31 第二次更新

2024.03.31 第三次更新

2024.04.11 第四次更新


问题的提出

最开始是使用填表程序记录我需要的拔起速度值,但是填表程序最大只能记录100个条目,就算是运用了先入先出/后入先出指令,也比较麻烦,因为要不断写这一行代码,而且并不能帮我生成一个表格出来。

后入先出程序块

如果我要记录1000个条目甚至更多,靠填表程序记录就不满足我的要求了。

第二次尝试是触摸屏端的数据记录功能,具体可以查看我的这篇文章:🔗西门子触摸屏SMART 700 IE V3数据记录的记录周期,结论是它也无法解决我的问题。

论坛里的人建议还是得从PLC端着手,打电话给西门子的客服,他们的回答是叫我用S7-200的数据归档程序。

问题的初步解决

我买来了256K的存储卡插在了PLC上,也能读取到这一张卡。我顺着官方文档/视频以及数据归档向导(西门子官方文件-数据归档),生成了两个数据归档文件。

 下面几张图是其中“右边数据归档”生成的过程图,一些域名命名和V存储区设定,完全是按照它官方文件来做的。

 交叉引用看过VB4-VB7没有被占用

 与传统不一样的是,这个一段程序不是通过上升沿指令来触发,而是利用主程序中的中断程序来每0.02s来触发。因为传统的方式触发太慢,我需要短时间多次触发且需要把这些数据都记录下来。

下图是主程序的中断程序片段(主程序启动对应子程序20ms一次中断):

 

下图为子程序关于数据记录的片段(网络10为速度转换计算,网络11为填表程序,网络12为数据归档程序): 

数据归档的效果

让拔起速度对应的传感器产生变化,分别使用填表程序和数据归档记录。我在监控状态通过状态表查看填表程序存储区的数据是有的,从VW9000-VW9202,最大条目100条记录了100个,但是数据归档的存取地址VB4却是0,没有变化

于是我首先通过上载功能从存储卡上传数据归档文件:

已经用PPI线连接PLC和PC,在S7-200 Explorer资源管理器软件里面找到256K存储卡并右击刷新(F5)后,再右击数据归档文件进行的上传,另存为一个.CSV文档

数据归档文件不对

在S7-200 Explorer资源管理器,我右击这个数据归档文档的属性可以直接看到记录的数据条目为0,且已修改的时间还是昨天的时间,根本不是最新的时间。由此我推测保存在存储卡上的数据根本就没有同步到PC上,所以点开.CSV文件只能看到第一排一些常规标签(时间、日期、需要记录的域名)。  把PPI先拔了再连接电脑,再次刷新依然如此,修改时间没有变,里面的文件当然也没有改变。

我的疑问

在B站、抖音、西瓜视频上搜索关于如何使用S7-200数据归档操作的视频后,发现要不是直接给出的就是西门子官方的视频文件,要么就是不想关的内容(比如整个程序的归档,型号不是S7-200的其他内容)。最终我还是转投西门子官方论坛和提问(🔗西门子此问题的求助帖),发出求助帖后,有人就回复我这根本不能实现,速度太快,而且记录的数据太过于庞大。我知道是这么回事,但是填表程序就能实现,只不过它能够存储的条目有限,只有100个,况且我就是需要这些数据,不然我为什么费这么老大劲干吃力不讨好的事儿。

有人提出可以在HMI触摸屏这一端来解决,我也问过西门子售后客服,虽然趋势试图可以显示实时数据,但是无法把这么短间隔的数据导出来,用U盘的存储功能,把触摸屏里面的历史记录数据导出的时候,其采集周期可以达到100ms,但是记录周期最小只能是1s。也就是说你输出来的在U盘上的表格时间戳最小的间隔是1s。无法满足我的要求。

所以我还是只能寄希望于数据归档了,我的疑问是

1、数据归档是我这样子用的吗?

2、如果是,那为什么我上载的数据记录.csv文件为什么是空的?如果不是,请各位不吝赐教。

虽然我知道这个社区可能关注西门子PLC的人不多,但如果碰到一位大佬刚好看到我这个问题了呢。

非常感谢大家!!!


2024.03.30 第一次更新

在西门子提问有人回答:

无法使用的原因一方面是触发的方式不应该用中断,而是应该用上升沿;

一方面是记录周期还是太快了,0.02s,这个回答说周期0.1s应该是可以的。

接下来我就应该试一试这种方式来做数据记录,这个比起触摸屏的历史趋势图导出的间隔1s记录一个点还是要好一点,起码记录的数据变多了。 


2024.03.31 第二次更新

如果把数据归档程序放在中断子程序中:

可以看出会有错误代码132(应该是有错误的,网上没有查到这个代码是指代什么意思),就算前面有数值也无法记录下来。

而将数据归档程序放在主程序中/其他子程序(不是中断子程序)

错误代码是0,也就是没有错误。但是在上载的数据归档文件中还是一个记录条目为0的空文档。于是我检查了一下交叉引用,看有没有地址重复。

从上图看是没有被占用的。两个字代表一个字节。

后来仔细思考发现是老毛病了,忘记数据归档是需要用上升沿P来触发的: 

 下面是最终的.CSV文档里面记录的数据:

终于有数据了。但是和我预想的数据有差别,因为在状态监控表里面显示的这个数据应该是4381才对,这里显示是0,还是有一点出入。 

 看来还是得继续探索

1)为什么值对不上?(最后还是没有解决)

2)如何在主程序中每隔0.1s给上升沿发送信号,这里只是展示了256K存储卡确实能记录数据的功能。(主要是那个上载的.CSV表格也不支持查看到毫秒级的时间戳数据啊)

3)如果时间间隔变得比1s小,数据归档还能记录下来吗?这个还不知道(确实不知道它是怎么记录的,一下只记录了一个数据,一下能记录两个数据)


2024.03.31 第三次更新

我在想西门子求助帖的回答说一秒最多记录10~15个数据记录,所以认为是不是我中断程序的间隔给得太短了,于是我将时间间隔20ms改为了100ms,得出来的结果依然是Error代码是132,上载的数据归档文件为空文件。所以不能在中断子程序里面使用数据归档子程序

和之前一样,把数据归档放到主程序或者其他子程序里面去,这一次有个好消息是,出现了两个数据!

我可能需要放弃这种记录方式是因为以下几点:

  1. 时间滞后:我当时做完数据记录里面导出文件,可以看得出当时时间是下午17:45,而存储卡里面记录的拔起速度却是17:34,在十多分钟之前;
  2. 传输数据不对:最后我状态监控的数据拔起速度最大也就20,这里的数据完全不对;
  3. 时间戳不对:既然我记录的数据在秒级以下,就应该显示毫秒级的单位,上面这张图明显是同一秒但是不同毫秒记录的数据,这一点不喜欢;
  4. 触发麻烦:如果不能用中断程序触发,需要我把现在的中断子程序弄成一个一般子程序,然后利用上升沿触发,我不知道有什么方法可以间隔0.02s使得上升沿被触发;

综上, 我可能不会用数据归档的方式记录我需要的数据,可能外接一个单片机实现数据记录。


2024.04.11 第四次更新

重新去试了一下用其他方法对上升沿P触发:

第一种是利用SM0.5特殊触点,0.5s接通一次,0.5s不接通,但是这种方法的记录周期依旧是1s才记录一个数据,也就没有采用;

第二种是利用线圈的互锁,如下图:

但是这个记录出来的数据周期是1s记录35个数据,和我理想中的1s记录50个数据有差距,但是也是一个不错的提升;

第三种是利用定时器来实现发送方形脉冲,如下图:

这个得到的数据归档文档是1s能记录 30个数据,仍有差距。

之前不能用数据记录的原因,现在我来反驳一下:

  1. 时间滞后是未同步时钟:电脑本身有一个时钟,PLC内部也有一个时钟,要想把PLC外储存卡数据归档文件的时间显示和电脑一样的时间,需要在上传(上载)文件之间同步一下实时时钟
  2. 传输数据不对:这可能和我自身的程序有关,没有调对;
  3. 时间戳不对:无法解决;
  4. 触发不再麻烦线圈互锁定时器都能解决这个触发麻烦的问题;

综上,数据归档还是能用,能不用单片机就不用单片机。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hipipi39

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值