步骤详解 | 西门子S-1200PLC运行模式下载
S7-1200下载但不重新初始化
●说明
S7-1200 V4及以上版本的PLCCPU支持在运行时对功能块(FB)或数据块(DB)的接口进行扩展。这意味着可以在不将CPU置于STOP模式的情况下,下载经过修改的块,不影响块中的其他数据。这种方法简化了程序更新的过程,且无需重新初始化的下载操作不会对控制的过程产生不利影响。
●工作原理
默认情况下,每个功能块(FB)或数据块都预设有一个专用内存区域,用于将来可能的接口修改。在初次使用时,这部分内存通常不会被占用。如果计划在编译和下载块之后进行接口修改,必须先启用这个预留的内存区域。一旦启用,所有新声明的变量都会被存储在这个区域中。这样,后续的下载操作不会更改已经加载的变量值。
若计划在工厂停机期间更新程序,可以选择性地重置一个或多个程序块的存储器布局。这样做可以把块中的所有变量从预留存储区转移到常规存储区。清除预留存储器后,可以在将来的接口扩展中使用。
如果满足以下要求,1200 CPU 则可使用"无需重新初始化的下载"功能:
使用 S7-1200 V4 及更高版本的 CPU。
FB块使用 LAD、FBD 或 SCL 创建。
DB块由用户创建。
FB或DB必须是"优化访问"。
●基本步骤
要扩充FB块或数据块的接口,请按照以下步骤操作,以便在不重新初始化的情况下加载块。
使用存储器预留区域可以帮助减轻存储器的使用压力,避免存储器的频繁分配和释放,提高程序的执行效率。通过定义合适的存储器预留区域大小,可以在一定程度上降低存储器的碎片化现象,提高存储器的利用率,减少存储器占用量。
激活存储器预留区域。
扩展块接口。
编译块。
将块下载到 CPU。
设置块扩展的预留存储器
●简介
默认情况下,每个功能块(FB)或数据块都会被分配一个100字节的预留空间,这个空间并不位于块的保持性存储区域中。在保持性存储区域中,默认并不设置预留空间,因为这部分存储区域是由CPU直接使用的。
项目可以根据需要调整每个块的预留空间大小,这个调整会影响项目中所有新创建的块。也可以为某个特定的块在保持性存储区域中设置预留空间,以及单独修改该块的预留空间大小。
●设置新块中预留存储器的大小
如果要在项目中为所有新创建的块设置预留存储器的大小,请按以下步骤操作:
在"选项"菜单中,选择"设置"命令。将在工作区中显示"设置"窗口。
在区域导航中选择"PLC 编程 > 常规"组。
在“下载但不重新初始化”选项组内,您可以输入所需的字节数到“存储器预留”输入框中,以便为块接口的后续扩展分配预留存储器。这样,新创建的功能块(FB)和全局数据块(DB)将会被分配到指定大小的预留存储空间,而已经存在的块则不受此次更改的影响。
说明
只有支持"下载但不重新初始化"功能的块才会受到存储器预留设置的影响,其他类型的块不会受到这个设置的影响。
图1.为所有新创建的块设置预留存储器的大小
●设置现有块中预留存储器的大小
如果要设置现有块中预留存储器的大小,请按以下步骤操作:
在项目树中选择该块。
右键快捷菜单中选择"属性"命令。将打开"属性"对话框。
在浏览区中选择"下载但不重新初始化"组。
在"预留的存储空间大小"输入框中输入所需的字节数。
要在保持型存储器中设置预留区域,需要勾选"启用下载,但不重新初始化保持性变量"选项,并在"预留可保持性存储器"文本框中指定所需的字节数量。
说明
一旦为某个块设定了预留存储器,就无法修改其大小。
图2.设置现有块中预留存储器的大小
激活存储器预留区域
●简介
每个FB块或数据块都有一个默认的存储器预留区域分配给它,这个存储器预留区域在初并没有使用。若已编译并加载块,但之后需要加载接口更改,可以启用存储器预留区域。在此之后声明的所有变量都将存储在存储器预留区域。
●要求
块目前已被编译。
块包含存储器预留区域。
●步骤
若要为FB块或全局数据块激活存储器预留区域,请按以下步骤操作:
打开块。
选择工具栏上的"下载但不重新初始化"按钮。
●结果
所有新声明的变量都会保存在存储器预留区域中,这使得在进行下载操作时不会影响正在运行的进程。
一旦变量被声明并保存在存储器预留区域中,通常就无法删除这些变量。除了可以更改的属性如"默认值"、"起始值"和"注释"之外,其它属性一般不能再进行修改。
图3.激活存储器预留区域
扩展块接口或数据块
●简介
在激活FB块或全局数据块的预留存储器之后,可添加新变量。
●要求
预留存储器已激活。
●步骤
要声明其它变量,请按以下步骤操作:
在声明部分中,例如"Input"、"Output"、"InOut"或"Static"中进行选择。
在所选区域中,声明一个或多个变量,并输入其属性。在FB的"保持性"列中,只能选择"保持性"或"非保持性",在预留存储器中不支持"在IDB中设置"选项。无法向结构化数据类型变量添加新的变量,例如:无法向现有结构中声明任何新的结构元素。但可以在预留存储器中创建新结构。
当编译发生变更的块时,例如在项目树中选择该块,在快捷菜单中选择“编译 > 软件(仅变更)”命令,新声明的变量将被插入到预留存储器中。如果预留存储器容量不足,编译将在发生错误时终止并显示错误消息。这确保了在不影响正在运行的进程的情况下进行更改,也能及时发现并处理存储器容量不足的问题。
- 下载发生变更的块,例如在项目树中选取该块,接着在快捷菜单中选择命令"下载到设备 > 软件(仅变更)"。在加载块进行扩展时,只会初始化定义了初始值的新增变量,不会重新初始化现有在线变量。
图4.如果预留存储器过小,编译将终止
禁用存储器预留区域
●简介
为了在工厂尚未运转时修改块的存储器布局,可以禁用预留存储器功能。这样一来,所有变量将从预留区域移动到常规区域中。变量已被移动,但预留存储器仍然保留,以便在之后进行接口扩展时使用。稍后若需要启用预留存储器功能,它将具有根据块属性定义的空间大小。
说明
禁用预留存储器后,需要重新编译并重新加载块。禁用存储器预留区域后,将无法执行“无需重新初始化的下载”操作。这意味着您需要重新初始化块并重新加载程序,以确保所有的变量都得到正确的初始化,并且能够正确地运行在工厂的运行过程中。这样做是为了避免潜在的错误和安全风险。
●要求
块中的预留存储器已激活。
●步骤
如果要激活FB块或全局数据块的预留存储器,请按以下步骤操作:
打开块。
选择工具栏上的"下载但不重新初始化"按钮。
●结果
通过这个操作,之前存储在预留区域的所有变量将被移至常规区域。在禁用存储器预留区域后,需要对块进行重新编译并加载。在加载期间,CPU中的变量值将会重新初始化。
图5.取消存储器预留区域
重置预留存储器
●简介
如果决定在工厂尚未运行时稍后修改程序,一次性重置块的存储器布局是一个不错的选择。这样可以将所有变量从预留存储器移动到常规存储区域中,为以后的接口扩展腾出空间。这不仅可以确保预留存储器的清除,还可以为未来的修改和扩展提供更多灵活性。
●要求
块中的预留存储器已激活。
预留存储器包含有变量。
●步骤
要重置一个或多个块的预留存储器,请按照以下步骤操作:
找到并选择包含需要重置的程序块的文件夹,或者特定块。
在快捷菜单中,选择“编译”选项,在子菜单中选择“软件(复位存储器预留区域)”命令。
●结果
之前存储在预留存储器中的所选块的变量已转移到常规区域,并且该块已经重新编译。在下次加载期间,变量将重新初始化。所组态的预留存储器将继续保持活动状态,并保留下来,以供未来的接口扩展使用。
图6.重置预留存储器
●注意
在重置预留存储器后,存储器中的所有变量将在下次加载时重新初始化,包括保持性和非保持性变量。
在工厂运行过程中,修改预留存储器中的变量可能会引发重大的经济损失和人身安全问题。在重置预留存储器之后,必须先在测试环境中对程序进行彻底的检验,确保没有问题,才能重新投入使用,以保障工厂运营的安全与稳定。这是为了确保工厂运行过程中的安全性和稳定性。这是为了确保工厂的安全和稳定运行。