技术论坛

同时将多个数据写入EEPROM的方法

作者 主题
侠圣

经验值: 3446
发帖数: 2235
精华帖: 13
同时将多个数据写入EEPROM的方法


只看楼主 2009-02-06 17:12:59
很多工艺过程需要对一些变量做长久保存。比如某些控制参数,在程序运行过程中可能会被修改,在改变后必须再一次永久保存以防掉电丢失。自然,这些参数不能由数据块或初始化予以预置。因此,S7-200提供了将数据写入EEPROM的功能。由于写EEPROM是在每个扫描周期的尾部执行的,我的理解是一次扫描只能写一个数据。这就带来一个问题,如果有多个数据需要同时写入这么办?按照手册上提供的方法,重复多写几个Network、多用几个使能标识位可以吗?这样简单的重复显然会有问题:由于使用上升沿触发写EEPROM程序,完成了第一个写入后程序将进入下一个扫描周期,尽管SM31.7已经被释放,但后几个使能位的上升沿已经不存在了;因此还是只能写一个数据。
为了保证所有数据都能写入EEPROM,我对手册上的范例做了一些改动,相关程序请看附件。详细说明如下:
1、为了将多个数据写入EEPROM,就必须用多个扫描周期,而且保证每个扫描周期依次写入一个数据,直到全部写完。这样,每个数据写入的使能标识位在数据尚未写入时必须处在使能状态。而在写入完成后必须退出使能状态。
2、由于写入程序的触发还有一个SM31.7作为判断条件,按照程序的时序关系,前一个写入程序被使能后,后面的写入程序必然会被屏蔽,因此无需担心写入条件发生改变。
3、在数据写入被使能后及时退出本数据的写入使能,避免下一个扫描周期被再次触发。同时释放写入请求以使下一个数据的写入请求能被响应。
4、一般来说,写EEPROM不是一件经常发生的事件,因此不必担心两个相邻扫描周期内同一个写入使能位被再次触发。除非程序本身的编写有误。
5、实例程序中用M0.0使能VD100的写入,用M0.1使能VD104的写入,M0.2同时使能上述两个标识位(也可以在监控状态下单独使能某个位)。这里我们讨论两个标识位同时被使能的情况。
6、M0.0置位后,SM31.7=0,执行VD100的写入程序;然后置位SM31.7,并立即复位M0.0。由于SM31.7被置位,即使M0.1也处于被使能状态,在本次扫描周期内VD104的写入请求被忽略,而M0.1还保持使能状态。
7、在下一个扫描周期内,由于M0.0已经退出使能状态,因此VD104的写入请求将被响应。与M0.0一样,写入请求被响应后M0.1也立即退出使能状态。
8、这样,在两个扫描周期内两个数据被写入EEPROM。如果有更多的数据需要保存,可以以此类推。
9、检验本程序的方法:在系统块中将V寄存器的掉电保持全部取消,可以看到重新上电后前一次写入V寄存器的数据会丢失。此时用本程序保存VD100和VD104,重新上电后可以看到这两个寄存器内的数据依然存在。
10、两个被写入的寄存器地址可以随意改变,无所谓是否连续。
这个程序是我自己琢磨出来的,贴出来供大伙儿拍拍砖。
西门子官方网站提供了一个免费的库程序,可以一次写入多个数据。网址是
“http://support.automation.siemens.com/CN/llisapi.dll/17471561?func=ll&objId=17471561&objAction=csView&nodeid0=10805150&lang=zh&siteid=cseus&aktprim=0&extranet=standard&viewreg=CN&load=content”。
点击此处查看附件
家养老鼠名MINNIE
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=523018&b_id=3&s_id=0&num=28

至圣

经验值: 17408
发帖数: 6225
精华帖: 18
回复:同时将多个数据写入EEPROM的方法


只看楼主 2009-02-06 20:00:30
以下是以前的技术支持与服务--互动社区--有奖问答 的内容,现在网站改动,也不知道把这3个例子放哪里去了,我把它发上来,给大家看看。


点击此处查看附件
点击此处查看附件
点击此处查看附件
 
以下网友喜欢您的帖子:

  
至圣

经验值: 17408
发帖数: 6225
精华帖: 18
回复:同时将多个数据写入EEPROM的方法


只看楼主 2009-02-06 20:17:06
不知道爹老鼠可见过这几个例子,我觉得用电池保持数据比较好,但各种方法有各自的特点。

以前芳季也有个方法保持数据,是在停电的时候。手册上说一个写永久存储器的操作会使扫描周期最多增加5MS,我想如果要写的数据比较多的时候,恐怕后面的数据就没时间写进去了,能写进去多少数据,芳季也没说。
 
以下网友喜欢您的帖子:

  
侠士

经验值: 1247
发帖数: 785
精华帖: 4
回复:同时将多个数据写入EEPROM的方法


只看楼主 2009-02-07 13:49:40
好贴。谢谢两位!
工控——这是一条不归路啊
以下网友喜欢您的帖子:

  
侠士

经验值: 1623
发帖数: 924
精华帖: 0
回复:同时将多个数据写入EEPROM的方法


只看楼主 2009-02-07 15:37:59
多谢了!
hansion
以下网友喜欢您的帖子:

  
侠圣

经验值: 3446
发帖数: 2235
精华帖: 13
回复:同时将多个数据写入EEPROM的方法


只看楼主 2009-02-07 20:14:07
1、数据块保持最大的问题在于数据不可变,而很多过程数据是在变化的。比如线性校验的结果,每次校验都可能发生变化,是随机的。由于校验本身也是随机的,因此其结果可能需要保持很长时间。有一些批次运行的系统经常会连续数月被闲置,这样依靠电池保持数据也会变得不可靠。
2、使用MB保存数据是最方便的,但其数量有限,而且M通常要作为标识位来使用。
3、尽管写EEPROM会增加5ms的时间但这种写入不是经常发生的,因此对程序的整体运行不会产生不良影响。
4、数据的写入应该是在需要的时候随时执行,比如控制参数被修改后,可以通过HMI立即给出一个写入请求,执行EEPROM写入程序,而不必等到掉电时。因为掉电后写入,很可能会出现Laohuai所担心的问题。例如前几天写了一个程序,其中有十多个浮点数必须永久保存,数十个字节,M寄存器肯定不够,如果在掉电时保存十之八九存不完。而用现在的方法,经过测试,所需数据都能得到可靠的保存。
6、各种保存方法都各有优缺点,主要还是看对象的需要而定。
家养老鼠名MINNIE
以下网友喜欢您的帖子:

  
至圣

经验值: 17408
发帖数: 6225
精华帖: 18
回复:同时将多个数据写入EEPROM的方法


只看楼主 2009-02-07 21:19:32
鼠老爹说的有道理!

 
以下网友喜欢您的帖子:

  
新手

经验值: 35
发帖数: 17
精华帖: 0
回复:同时将多个数据写入EEPROM的方法


只看楼主 2009-02-12 13:15:53
但是“EEPROOM 被刷写次数的典型值为 100,000 次”,如果一些设定值改变的稍微频繁一点,岂不是PLC的EEPROOM 就报废了
 
以下网友喜欢您的帖子:

  
至圣

经验值: 67543
发帖数: 14782
精华帖: 100
回复:同时将多个数据写入EEPROM的方法


只看楼主 2009-02-12 13:50:32
由断交流电起到PLC完全失去电源.我估计怎样都要600毫秒吧.保存100个字节总可以吧.
另外还可以在检测到丢交流电同时关闭尽可能的PLC24V负载来延长电源寿命.
 
以下网友喜欢您的帖子:

  
侠圣

经验值: 3446
发帖数: 2235
精华帖: 13
回复:同时将多个数据写入EEPROM的方法


只看楼主 2009-02-12 15:00:37
按照芳季的说法原理上是可以的,但由于缺乏这方面的技术数据,个人认为还是根据工艺需要实时保存为妥。因为有些数据并非经常性的改变,所以实时保存还能减少写EEPROM的次数,而不是每次断电都写一次。
huier的担心是多余的,写EEPROM不是一个频繁性的动作,其寿命不成问题。
家养老鼠名MINNIE
以下网友喜欢您的帖子:

  
侠士

经验值: 1743
发帖数: 286
精华帖: 1
回复:同时将多个数据写入EEPROM的方法


只看楼主 2009-02-12 22:13:18
是否要补充一条: 每次上电初始化,读取EEPROM的数据到 V区。
cary
以下网友喜欢您的帖子:

  
侠圣

经验值: 3446
发帖数: 2235
精华帖: 13
回复:同时将多个数据写入EEPROM的方法


只看楼主 2009-02-13 08:06:16
没有必要。PLC在上电时会检测RAM,如果RAM中的数据丢失了,会自动读取EEPROM的数据到V区。
家养老鼠名MINNIE
以下网友喜欢您的帖子:

  
游民

经验值: 84
发帖数: 13
精华帖: 0
回复:同时将多个数据写入EEPROM的方法


只看楼主 2009-05-08 17:45:32
感谢鼠老爹的精辟分析。
 
以下网友喜欢您的帖子:

  
侠圣

经验值: 3179
发帖数: 969
精华帖: 0
回复:同时将多个数据写入EEPROM的方法


只看楼主 2009-05-09 11:03:14
图形看不到的
我是用数据块保存的,数据一般不修改

 
以下网友喜欢您的帖子:

  
至圣

经验值: 67543
发帖数: 14782
精华帖: 100
回复:同时将多个数据写入EEPROM的方法


只看楼主 2009-05-09 12:58:48
我发现三菱的FX1S PLC当使用AC220时不给220伏。而是在PLC内部的24伏电源上反加直流24伏。PLC竟可正常工作。不知道SIEMENS的可以不?
如果可以的话那么就应该在断电的时候用外置小电池进行一次性写EEP了。当外部小电池可以维持两三秒的话什么都写完啦。
 
以下网友喜欢您的帖子:

  
侠圣

经验值: 4699
发帖数: 757
精华帖: 1
回复:同时将多个数据写入EEPROM的方法


只看楼主 2009-05-09 15:48:43
问题是在外部需要增加得是24V电池!而且还需要充电部分,感觉不是很方便。
 
以下网友喜欢您的帖子:

  
至圣

经验值: 67543
发帖数: 14782
精华帖: 100
回复:同时将多个数据写入EEPROM的方法


只看楼主 2009-05-21 12:46:03
用一个大电容通过一个限流电阻并到输出的24伏上就可以了。
开机时通过电阻向电容充电。关机时电容通过二极管向PLC放电。买个55000μf/50V的旧的电容100元有找。
 
以下网友喜欢您的帖子:

  
游侠

经验值: 457
发帖数: 139
精华帖: 0
回复:同时将多个数据写入EEPROM的方法


只看楼主 2009-05-23 23:33:51
我拆过224XP的,输出端反向供电是无法工作的,因为内部五伏是在二十四伏稳压前取的电源.反供电时五伏无电源,除非改内部电路.
 
以下网友喜欢您的帖子:

  
游民

经验值: 148
发帖数: 95
精华帖: 0
回复:同时将多个数据写入EEPROM的方法


只看楼主 2009-05-25 09:01:56
如果让写入的数据在断电时自动保存到EEPROM中,用什么指令触发啊
 
以下网友喜欢您的帖子:

  
侠圣

经验值: 2263
发帖数: 1720
精华帖: 7
回复:同时将多个数据写入EEPROM的方法


只看楼主 2009-05-25 10:31:52
呵呵,我现在学会偷懒了,要么建议客户用电池,要么在数据库里面填好初始值。那样即使数据丢失了,至少设备还是能转的
助人为主,捣乱为辅,偶尔灌水,有时潜水!开心就好
以下网友喜欢您的帖子:

  
收起
同时将多个数据写入EEPROM的方法
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。