数据块的初始值有什么作用?
湖南环辰泰瑞电气设备有限公司
2018/4/4 12:47:32>> 进入商铺 问题1:数据块的初始值有什么作用?
回答:数据块的初始值仅对于一个数据块的"离线"组态有意义。如果用户离线创建了一个新的数据块或者在离线组态的过程中在数据块里创建了一个新的变量,如果用户不做任何修改,新建的变量会使用系统默认值作为初始值,如果用户为此变量了其它数值作为初始值,数据块将会多占用相应变量长度的Load memory。在此后的操作中(数据块的上传及下载),只要数据块的结构,变量的数据类型没有发生改变,变量的初始值都没有实际作用,只起到变量类型定义的作用。
回答:数据块的初始值仅对于一个数据块的"离线"组态有意义。如果用户离线创建了一个新的数据块或者在离线组态的过程中在数据块里创建了一个新的变量,如果用户不做任何修改,新建的变量会使用系统默认值作为初始值,如果用户为此变量了其它数值作为初始值,数据块将会多占用相应变量长度的Load memory。在此后的操作中(数据块的上传及下载),只要数据块的结构,变量的数据类型没有发生改变,变量的初始值都没有实际作用,只起到变量类型定义的作用。
如果用户不给此新建的变量实际值,初始值会被用作变量的实际值。
用户可以给变量实际值,初始值可以与实际值不同。
问题2:数据块的实际值有什么作用?回答:数据块中的每个变量都有自己的实际值,如果用户不自行,系统将使用初始值作为变量的实际值;如果用户自行变量的实际值,则变量的初始值与实际值可能不相同。
如果用户在data view 视图下,在菜单命令中执行Edit →initialize data block,数据块中所有变量的实际值都将被初始值覆盖(用户执行此操作需要格外谨慎,需要确认不再需要数据块中的实际值)。
#FormatImgID_1# 问题3:数据块如何实现断电保持特性?
回答:为了断电保存数据,S7-300CPU中的Work memory划分为两部分,其中一部分类型为RAM(断电丢失),一部分为NVRAM(断电保持),如果数据块为断电保持,则此数据块需要占用具备断电保持特性的Work memory部分。当CPU 经历POWER ON→POWER OFF→ POWER ON或者RESTART过程后,数据块中的数据不会丢失。
注意:
当用户在S7-300CPU 项目中插入新的数据块时,系统默认其属性为断电保持。
数据块断电保持是work memory 的特性,与Load memory(MMC) 无关。
问题4:具备断电保持特性的数据块何时会丢失当前值?回答:如下操作会导致数据块丢失当前值
? Memory RESET 操作(手动开关操作及STEP7 中菜单操作)
? CPU在没有MMC卡的情况下上电(实际是因为此情况导致了CPU执行Memory RESET操作)
? 插入损坏MMC卡/错误MMC卡的情况下上电(实际是因为此情况导致了CPU执行Memory RESET操作)
? CPU损坏
? 下载数据块,且离线数据块中的actual value 与当前数据块中的数值不同
注意:Memory RESET操作将删除标志位、S7 定时器和 S7 计数器地址区的值,而不管这些区域是否已定义为保持或非保持属性。对于停止/启动(STOP/RUN)操作模式或断电/上电(POWER OFF/ON ),如果标志位、S7 定时器和 S7 计数器地址区已定义为保持,则保持它们的数值;否则,这些区域的数值将丢失且被初始化为“0”。
问题5:如何使MMC卡中的数据块与Work memory中的数据块保持一致?回答:当用户*次将数据块下载到CPU 后,如果用户程序及用户监控/修改操作对数据块未进行过任何修改,则MMC卡中的数据块与Work memory中的数据块内容是一致的(这种情况在实际应用中很少出现)。
一般情况下,用户程序及用户的监控/修改操作都会影响数据块的当前值,此数值位于Work memory中,这样MMC卡中的数据块有可能与Work memory中的数据块内容不一致。对于不同的数据块属性,此情况会有所不同,可分为3种:
1. 勾选了Un-linked 选项的数据块
此数据块只存储于MMC卡,不存在与Work memory数据一致问题
2. 勾选了Non-Retain选项的数据块
由于此类数据块断电不保持,所以在每次断电后,Work memory中数据块当前值丢失;CPU再上电后,MMC卡中数据块被复制到Work memory中,两者将保持数据一致。
3. 未勾选Non-Retain选项的数据块
由于此类数据块断电保持,所以在每次断电后,Work memory中数据块当前值保持;CPU再上电后,MMC卡中数据块有可能与Work memory中数据不一致。
解决办法:
1. 需要Work memory中数据块作为保留值:请参考问题11的操作
2. 需要MMC卡中数据块作为保留值:执行RESET 操作