来自西门子技术支持热线的故事:S7-300CPU重启后数据初始值相关问题

已锁定

西门子Auto

官方工程师

  • 帖子

    132
  • 精华

    16
  • 被关注

    227

论坛等级:侠圣

注册时间:2007-08-03

普通 普通 如何晋级?

来自西门子技术支持热线的故事:S7-300CPU重启后数据初始值相关问题

10172

31

2012-02-24 18:04:27

在SIEMENS S7-300 系列 PLC 中关于CPU重启后数据初始值的问题一直都是热线上经常被大家提及的话题。最近客户又一次问到与此相关的几个问题。

第一个问题
Engineer:您好,西门子热线。
Customer:您好,工程师,我的CPU是S7-300的CPU,昨天有同事操作不小心,将300的CPU掉电了。再次重新上电后,发现一些以前设定的初始参数都变成0了,丢失了,怎么回事?
Engineer:(客户描述的相对简单,我又引导客户将问题说的更清晰些。)您是通过触摸屏设定参数的么?是将数值设定在M区中么?
Customer:对,对…,这是怎么回事呢?
Engineer:哦,明白了。有两个方法来实现。
第一个方法,利用M区的数据保持性来做。如图1,在硬件组态中,进入CPU的对象属性框,在“保持存储器”属性页中,有一项内容“从MB0开始的存储器字节数据”,这一项内容是用于设定从MB0开始有多少字节个数的M区字节单元是具有数据保持性的(即:掉电保持)。这样利用带数据保持性的M区单元地址,将参数初始值设置在这些M区单元地址中,就不怕丢失了。



图1
第二个方法,同样是利用数据保持性,只不过是使用DB块的数据保持性来做,DB块被创建时默认是具有数据保持性的,所以DB块中的地址单元默认都是能掉电保持数据的,只不过您需要将M区的地址单元给成DB块中的地址单元。如图2,在DB块的对象属性中,见“常规——第2部分”,有一项内容“非掉电保持”,默认不勾选的。



图2
Customer:哦,明白了,我在屏上设定的参数没有放在具有保持性的M区地址单元中,所以掉电后丢失。因此我选择将参数初始值放到DB块中,就没事了。
Engineer:对,所以您可以将图1中默认数据16改大点,修改的数据范围可以包含住您参数初始值设定的M区地址单元范围,就没问题了。但是这个数据还是受CPU的限制(不同CPU,M区保持性区域最大值不一样),另外M区存储空间没有DB块的大,因此建议可以将参数初始值设置到DB块中。


第二问题
Customer:谢谢…,可是,屏上设置的参数初始值只是一部分,还有许多初始值并不需要屏设定,只是在PLC里设定好直接参与数值运算,怎么办?
Engineer:哦,这个也好处理。也有两个方法来实现。
第一个方法,利用启动组织块OB100。只要S7-300的CPU中下载了OB100,那么300CPU从Stop到Run的启动过程中,都会执行一次该组织块OB100。因此我们可以在OB100里编写赋值程序,将那些参数初始值设定到相应的地址单元里。等CPU启动完成进入Run执行OB1,设定好的参数就可以直接参与数值运算了。
第二个方法,利用DB块中地址单元的初始值。DB块中所有地址单元都会有一个初始值,新建一个DB块,在DB块中创建好地址单元,并在初始值一栏填写好相应的数值(即:参数初始值),如图3所示。



图3
Customer:哦,工程师,您说的第二个方法,我知道,但是不好用啊,新建DB块,创建地址单元,填写好初始值,保存好,的确可以设定好初始值。可是有一个问题,当我想再次修改这个初始值,就不行了,初始值总是显示第一次设定的数值。每次都要重新新建DB块来操作,数据量一大,操作很麻烦,不好用。
Engineer:哦,那是方法不对。如果进行了第二次初始值修改后,点击菜单栏中的“视图”,将“声明视图”切换到“数据视图”,如图4。然后点击菜单栏中的“编辑”,找到“初始化数据块”并点击,您会发现实际值一栏数值会变成您第二次修改的初始值,如图5。最后再下载就可以了。



图4



图5


第三个问题
Customer:哦,谢谢工程师。另外还有一个问题,CPU重启后,带有数据保持性的地址单元的确保存住了初始数值;但是有一些地址单元,我是将它们参与数值运算后并赋值给他们了,这样它们保存的实际数值就不再是初始数值了,而我想在下次CPU重启时它们保存的数值能恢复到最开始设定的初始值;可是由于它们具有数据保持性,好像即使CPU重启,它们也无法改成最初的设定初始值。这怎么办呢?
Engineer:嗯,您好,其实这也有两个方法可以实现,就是前面提到的DB块和OB100。
第一个方法,我记得我前面跟您说过DB的“非掉电保持”特性和DB块中的初始值属性。“非掉电保持”默认是不打勾的,这里您可以给它打上勾,选择掉电不保持,然后给每个地址单元设定初始值。这样您就可以实现地址单元参与运算赋值,当CPU重启又能恢复到初始数值了。
第二个方法,就是在OB100中对这些地址单元编写赋值程序。因此OB100对所有地址单元都可以做初始化操作,无需考虑是否具有数据保持性。
Customer:哦,对…,太感谢了,再见。
Engineer:再见。
来自西门子技术支持热线的故事:S7-300CPU重启后数据初始值相关问题 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54051条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。