PCS7加入自己的FC块怎么bat批处理调用exe程序此FC的调用

ES - SIMATIC Manager -- 项目操作 -- 编译/装载PLC_技术方案_工控网_工业360
ES - SIMATIC Manager -- 项目操作 -- 编译/装载PLC
核心提示:ES - SIMATIC Manager -- 项目操作 -- 编译/装载PLC
在CFC编译时,当检测到一个递归调用时,为什么会在编译日志中产生一条警告信息?
在把 CFC 图表作为块类型编 译时,出现的PCS7 V5.2 出错消息。
在编译PCS 7的
ES - SIMATIC Manager -- 项目操作 -- 编译/装载
在CFC编译时,当检测到一个递归调用时,为什么会在编译日志中产生一条警告信息?
在把 CFC 图表作为块类型编 译时,出现的PCS7 V5.2 出错消息。
在编译PCS 7的时候,为什么会出现如下警告信息"The number of communication jobs (x) configured in your program is greater than the maximum permissible number of communication jobs (x) of the connected CPU."?
怎样获取编译错误的详细信息?
在 CFC 中,改变一个块的接口后为什么不能进行delta 编译?
更改共享DB块的数据结构时,需要注意些什么?
如何清除如下错误信息 "因为不是所有安装的功能块都处在一个功能块参考列表中,不能决定Block X所需的本地数据大小/嵌套深度"?
组态保留的变量,避免下载时所要的CPU停止
如何清除如下消息 "Maximum length of code area reached (max. 64 Kbytes)"?
如果进行PLC程序下载时,系统提示无足够的空余空间时,用户该如何处理?
当编译CFC图形时,为什么会出现如下错误消息 "Maximum length of code area reached (max. 64 KB)" 或 "Insufficient main memory" ?
在PCS 7中如何判断CPU当前所需本地数据?
识别丢失的块参考
CFC V6:消息 294:32 "The desired block name 'OB00000' is not valid."
将硬件组态载入 AS 时出现错误消息
控制器下载/重启时,数据块中的几个术语:初始值(声明视图),初始值(装载存储器)和实际值分别表示什么含义?
collapse('/WWsupport/',, document.img_)
在CFC编译时,当检测到一个递归调用时,为什么会在编译日志中产生一条警告信息?
隐藏订货号显示订货号订货号:
描述:在代码产生过程中,每一个块(OB, FB, FC)都会被检查,并判断它是否包含一个递归调用。如果包含,则会在日志中产生一条警告信息。
现在,如果在SIMATIC管理器的一个项目中打开“Report system errors” 功能,则会在块文件夹下产生以SFM做标志的功能块(默认为FB49和FC49)。
依据组态者意图,FC调用它自己本身。
由于代码产生器也检查这个功能块的递归调用,所以在日志中也会产生一条警告信息。
代码生成, CFC, SFM
在把 CFC 图表作为块类型编 译时,出现的PCS7 V5.2 出错消息。
隐藏订货号显示订货号订货号:
在执行一次“图表作为块类型”的 CFC 编译时,为什么有出错消息 “标识符已经存在”?
为了将图表用作为功能块,您需把一个 CFC
图表作为块类型来编译。
图 1 :“图表 & 编译 & 图表作为块类型”
在编译过程中您会得到如下的错误信息:
Z 00019 S 00003: 标识符已经存在。 (见图 2)
图 2:编译时的出错消息
导致出错消息的原因是在 CFC 图表中,正被使用的块名在 SCL 中被算作代码字 (例如:
INT, DATE, BOOL 等)。见图 1 中的红色标记。
在 SCL 编辑器的在线帮助中,在关键字“保留字”下有一个全部保留字的列表。
SCL 编译器,编译器& xime="T"&消息
在编译PCS 7的时候,为什么会出现如下警告信息"The number of communication jobs (x) configured in your program is greater than the maximum permissible number of communication jobs (x) of the connected CPU."?
隐藏订货号显示订货号订货号:
问题原因在于程序所需通讯任务数量超过了CFC中的设置。
两种方法删除这个警告信息:
1. 增加关于通讯任务数量的警告设置。具体做法,选择菜单"Tools & Settings & Compile..." (图. 1)。
图. 1: CFC中的设置
2. 增加CPU允许的最大通讯任务数量。可以参考条目2446042 (图. 2)。
图. 2: 硬件组态中CPU设置
关键词编译程序警告,编译器
怎样获取编译错误的详细信息?
介绍: PCS 7 V6.1 SP1 每次用户程序编译时都会产生 SCL 源文件 "@SCLFileFromCFC_SFC_1" 。 在PCS 7 V7.0 这个源文件只有在 "Compile program" 对话框中选择"Generate SCL source"时才会被创建。如果这个源文件已经存在,那么将会被覆盖。源文件位于 SIMATIC 管理器,在路径 "Project & SIMATIC...& S7 Program... & Sources"下。
当编译SCL 源文件产生错误时,这个源文件将会提供详细的信息。如果程序使用CFC编译时产生了一个不能具体指定到某个块的错误,你可以打开 @SCLFileFromCFC_SFC_1 ,使用SCL编辑器编译源代码。在CFC错误日志中显示同样的错误,但在调试窗口中可以跳到引起错误的源代码处。
编译完成之后,任何信息、警告、错误等都会显示在窗口底部(调试窗口)。光标移动到调试窗口的上部,可以从上到下评估错误信息 。
例如,出现错误时,双击窗口底部的错误信息,则光标跳转到源代码窗口相关的行。现在可以分析引起编译错误的源代码,就可以在源代码中找到可能对于纠正错误有用的辅助信息。
最好只在备份工程中改变SCL源文件和随后的手动编译,这将保证不会丢失原始工程的delta下载能力。
例如,条目 ID
使用SCL 源代码来查找错误信息 "Maximum length of code area reached (max. 64 Kbytes)"的错误来源。
关键字:编译器
在 CFC 中,改变一个块的接口后为什么不能进行delta 编译?
隐藏订货号显示订货号订货号:
如果在 CFC 图中,所做的改变包括变量类型的改变或者增加了额外的变量,那么 CFC 程序需要进行一次完全编译并且需要进行一次完全下载。对于这种情况,是不能进行delta 编译的。
编译改变, 块处理
更改共享DB块的数据结构时,需要注意些什么?
隐藏订货号显示订货号订货号:
如下提供了两个使用全局数据块的例子:
共享数据块通常被用来在不同控制器之间进行数据交换。使用 "BSEND" (SFB12) 和 "BRCV" (SFB13) 功能块可以传输某个区域或整个数据块的数据。
功能块 "BLKMOV" (SFC20) 可以用来在控制器内部拷贝文件,可以使用全局数据块作为源块或目标块。
如果修改全局数据块的结构,并下载更改过的数据时,更改下载的方式的功能将丢失,并提示如下错误消息:"The interface of block type DBxxx has been changed. Download the complete program!"
用户通常必须通过下载整个程序的方式方能排除该错误消息,但此方式需要CPU停机。
接下来,将描述针对全局数据块,那些修改是可以在不使用完全下载、不停机的情况下实现的。
该示例可能发生在某些调试场合,现场的某个子系统正在使用过程中,不能停机。但需要扩展和另外子系统之间的数据交换。也就是说,在CPU不停机的情况下,需要扩展PLC-PLC之间通讯的全局数据块。
步骤如下:
在数据块底部扩展数据区
在Component View (offline) 视图下,双击数据块,打开编辑器 (例如 LAD/STL/FBD)
在数据块末尾添加新数据区域警告:
不要对程序已经读取的数据区域进行任何结构的改变,否则,可能会导致无法预料的错误。
保存更改后的数据块,具体说应该是扩展的数据块。
下载该数据块到控制器。注意:
直接在编辑器下下载数据块。因为从Component View下Block Folder中选择数据块下载的方式不可选。因为项目属性对话框"Properties - Project"中,选择项目的类型"Use"为"PCS7"。
关闭数据块编辑器。
更改CFC图在所有读取该全局数据块的CFC图中进行修改。这样的话,刚才被修改的数据块才会被控制器重新读取。
当使用通讯功能块 "BSEND" 和 "BRCV" 来实现 PLC-PLC 之间的通讯时,必须修改发送功能块"BSEND" 的 "LEN" 参数。
如果在PCL程序中使用 "BLKMOV" 功能块来读取修改过的全局数据块时,你需要对当前CFC进行小的修改,例如,加入一个 "AND" 功能块,然后删除他。
通常情况下,全局数据块中新创建的数据区域需要提供变量值,因此,可以在CFC中相应功能块的输出端上连接该数据块的变量。
编译/装载程序使用Change编译,并下载修改的数据
关键字:功能块接口
如何清除如下错误信息 "因为不是所有安装的功能块都处在一个功能块参考列表中,不能决定Block X所需的本地数据大小/嵌套深度"?
隐藏订货号显示订货号订货号:
指导说明:
项目必须先升级到SIMATIC PCS 7 V5.1版本。该项目中包含一个由比 STEP 7 V5.0 + SP3 或 SCL V5.0 +SP3更旧版本创建的模块。因为这些模块不包含任何参考列表、任何所需本地数据的信息和嵌套层级信息,所以在编译CFC时会出现好几次警告信息。
如果用户拥有该自定义模块的源文件,则只需要在 SIMATIC PCS 7 V5.1下重新编译该模块即可。如果模块是用 LAD/FBD/STL编辑器编写的,则只需要使用 SIMATIC PCS 7 V5.1或更高版本的编辑器重新打开并保存即可。
如果功能块使用 "KNOW_HOW_PROTECT" 保护,同时没有提供相应的源文件,则不可以修改该模块,那么推荐按如下方式处理:
1. SIMATIC PCS 7 V5.1 和 V5.2 SPx
在 "LAD/FDB/STL" 编辑器下打开该功能块。
系统将提示 "the module is protected" ,表示该功能块将不能保存。
在声明列表中选择任意一个输入/输出变量,在右键菜单中打开对象属性。
不作任何修改,点击OK。
功能块这时就可以保存了。
2. SIMATIC PCS 7 V6.x
在 "LAD/FDB/STL" 编辑器下打开该功能块。
系统将提示 "the module is protected" ,表示该功能块将不能保存。
在声明列表中选择任意一个输入/输出变量,在右键菜单中打开对象属性。
随便作些更改,点击OK关闭窗口。
功能块这时就可以保存了。
在声明列表中,再一次选择同一个输入/输出变量,在右键菜单中打开对象属性。
撤销相应的修改,点击OK关闭窗口。
保存模块。
如果功能块使用SCL创建,则信息将丢失。该功能块将包含所需的关于本地数据和嵌套深度的信息。如果使用上述方法处理,则使用CFC时将不会再次出现上述问题。
关于这些没有自己的模块参考数据的功能块,可以通过CFC找到,从V5.3版本开始,可通过菜单 "Plan reference data & View & Module call hierarchy" 。更多详细信息请参考FAQ entry-ID .
关键字:移植,更新,版本冲突
组态保留的变量,避免下载时所要的CPU停止
隐藏订货号显示订货号订货号:
当改变程序模块的接口(IN-, IN/OUT-, STAT, 或 OUT 参数)时,CPU必须处于"STOP"模式下,来下载这些变化。为避免这个问题,可以在创建模块时,为每个数据类型为"DWORD"的参数类型保留几个变量。通过SCL"AT"语言特性,可以在后来声明已经占用预留内存的相应的数据类型的新变量。因为实际的接口没有发生改变,因此现在可以加载改变,并且CPU没有必要位于STOP模式。
静态变量示例:
1. 变化之前静态变量的定义:
Reserve1 : DWORD;
Reserve2 : DWORD;
Reserve3 : DWORD;
Reserve4 : DWORD;
2. 变化之后静态变量的定义:
创建一个附加的REAL变量和两个WORD变量。
Reserve1 : DWORD;
NewREAL AT Reserve1 :REAL;
Reserve2 : DWORD;
NewWORD AT Reserve2 :
NewWORD1 : WORD;&
NewWORD2 : WORD;
END_STRUCT;
Reserve3 : DWORD;
Reserve4 : DWORD;
AT语言结构不仅可以用于静态变量,正如该例所示,还可以用于声明部分的其它段中。
然而,请注意,保留变量可能含有一个与用AT结构分配的变量不相同的数据类型(如保留DWORD类型但NewREAL 属于REAL类型)。如果希望进一步使用这些变量(如通过CFC中的互连),那么当然位于块边缘条上的变量与所保留的变量类型一致,而不是通过AT结构分配的变量类型。
注意事项:
AT结构仅在FC, FB和OB中的SCL中可用。不能在一个SCL源程序中的数据块(DB和UDT)中使用,因为这些是通过编译器根据STL语法/语义处理的。
关键字:全部下载
如何清除如下消息 "Maximum length of code area reached (max. 64 Kbytes)"?
隐藏订货号显示订货号订货号:
指导说明:当编译 S7 program时,显示如下错误信息 "Maximum length of code area reached (max. 64 Kbytes)"。
FAQ ID 771569 解释了可能会导致此错误的原因。该条目中描述了当使用SFC Type时导致代码超出64Kbyte限制的解决方法。用户在步处理中组态了太多的动作或在条件跳转中加入了过多的条件。
然而,该错误消息并不指示那个 Block(SFC type)导致了此错误,此指导说明则可以指导用户进行错误诊断。
激活"Generate SCL source"选项,重新编译程序
在CFC编辑器中通过菜单"Chart & Compile & Charts as Program..." 打开 "Compile program" 对话框
选择"Entire Program"的编译方式,同时激活 "Generate SCL source" 选项。点击"OK"重新编译程序。图 02
注意:在老版本的PCS7系统中,"Generate SCL source" 选项在编译对话框中是不可选择的。在此情况下,SCL源文件将会自动生成。
打开并编译生成的SCL源文件
在SIMATIC Manager中切换到组件视图。在组件视图下导航到 "Sources" 文件夹,找到 "@SCLFileFromCFC_SFC_1" 文件。图 03
双击该文件或通过右键菜单"Open Object"打开SCL源代码。
使用菜单"File & Compile" 编译源文件。此时将弹出 "Overwrite Blocks" 窗口,点击 "All" 确认。
编译源代码完成操作。
注意:编译过程中,详细的信息将显示在SCL编辑器的错误窗口中。
评估详细的编译日志在这一步中即可以确定导致程序代码超出 64K byte 限制的SFC type名。而且还可以确定出,SFC type中到底是因为每一步中组态了过多的动作还是切换条件中输入了太多的条件导致了该错误的发生。
在编译日志中使用搜索功能搜索错误
在SCL编辑器中切换到 "Errors" 窗口并滚动到编译日志的起始位置。从编译日志的顶部到底部,搜索错误信息。注意:错误条目将以字符 "E:"起始,报警条目将以 "W:"起始。
如果在程序中没有其他的错误信息,那么上面描述的第一条错误条目即为错误信息。
在编译过程中,如果有错误的话,则功能块 (功能块号)会立即显示在错误消息上。你需要注意该功能块号。图 04
在SCL源文件中搜索该错误功能块号
切换到SCL编辑器,并将鼠标定位在SCL源代码的起始位置。打开 "Find and Replace" 对话框。在 "Find what"中输入在错误日志中查找到的错误功能块号的搜索的内容。点击 "Find" 按钮执行查找功能。指针将跳转到出错功能块定义的地方。如果该功能块是SFC type的一部分,则会在注释中显示该SFC type的符号名。注意这个名字。图 05注意:如果在SCL编辑器的错误窗口的错误消息中,双击该功能块号,则指针将自动跳转到相应的功能块。这样可以省去你使用上述搜索的动作。
搜索SCL源代码中缺陷功能块的使用重复上述搜索操作,直到指针跳到该功能被调用的程序段。 在该行的上一行中将有注释行,用于指示该功能块是用于处理动作还是切换条件。图 06注意:无论在Simatic Manager中设置的语言为何种语言,SCL源代码中显示的注释总是为德文。 "Aufruf AktionsFC ..." 表示处理动作,"Aufruf TransitionsFC ..." 表示处理切换条件 (通过分析有缺陷的功能块的功能部分,就可以确定是处理动作的代码部分还是处理切换条件的代码部分。
在SCL源代码中将指针滚动到功能块的调用处,注意调用的功能块号。图 07;
你也可以使用 "Find and Replace" 功能来跳转到该功能块的起始位置, 使用向下搜索 "FUNCTION" 关键字,指针即可跳转到功能块的起始位置。
检查功能块号再Simatic Manager切换到组件视图。在"Details"模式下,SFC type的块名的前八个字符加上功能块号将显示在"Name (Header)" 列中。
功能块号在配置SFC type时即被分配。
评估代码所能减少的范围
根据导致64 Kbyte容量溢出的原因,必须通过减少每一步中的代码或切换调条件的处理来减少指令数。为了评估步中可以削减的指令的个数,用户可以将步的顺序一分为二,然后执行编译。这样可以减少一半的步和切换条件。在执行该操作之前,最好对相关的block或整个项目预先进行备份。
如果削减了代码后编译时,还是指示代码超出 64K byte的限制,那么需要重复上述步骤。如果编译成功执行,则表示 64 Kbyte代码的限制的错误已经被排除。然后,用户即可在SIMATIC Manager中参考Block文件夹下该SFC type的相关功能块的大小。 详细信息可参考网上FAQ ID 。通过对SFC进行分隔的次数及最终的功能块大小,用户可以大概测定每次消减的代码量。
代码削减估算
实际的问题并不是通过简单的删除步和切换条件了解决的,FAQ Entry
中介绍了可能的修复方式。
注意:在完成编辑大型的SFC type之前,就应该对S7程序进行编译。进行临时的编译可以决定将要设计的SFC type的功能块的大小。这样将方便用户尽早的发现可能存在的代码超过64 Kbyte的限制问题。
如果进行PLC程序下载时,系统提示无足够的空余空间时,用户该如何处理?
隐藏订货号显示订货号订货号:
指导说明:
如果频繁的装载功能块,可能需要重组和压缩 RAM存储控件。这种情况一般在当前CPU中无连续的足够大的空间来装载PG中的新程序时才需要。
需要在线连接CPU,按照如下程序操作:
在在线视图下或者在 "Available users" 窗口下选择S7 program。
选择菜单 "Target system & Module status".
在接下来的对话框中选择 "Memory" 选项卡。在该对话框中有一个压缩的按钮用于压缩内存。
当编译CFC图形时,为什么会出现如下错误消息 "Maximum length of code area reached (max. 64 KB)" 或 "Insufficient main memory" ?
隐藏订货号显示订货号订货号:
描述:如下列表中列举了可能会导致上述编译错误的各种情况.
Description
运行组中包含过多的功能块实例在此情况下,因为在单个任务中集成了过多的功能块实例,导致SCL编译器生成FC时超出系统允许的最大64KB的范围,从而出现上述错误信息。
在 PCS 7 V4.x 或 V5.x 版本下,单个任务中插入的功能块由用户自己来决定。系统编译时,为每一个运行组生成一个FC块。因此,缩减FC功能块的大小需要用户自行调整。
从 PCS 7 V6.0 以上版本,系统将自动为每一个CFC图在循环任务(例如,OB35)中创建一个运行组。然而在启动任务中(例如,OB100),系统将不会为其自动分组。因此,用户需要在启动任务中手动生成运行组,并手动调整功能块实例所属的运行组。
单个SFC中包含过多的指令当单个SFC中包含了过多的指令或转换条件时,编译图形将会出现如下错误信息 "Maximum length of code area reached (max. 64 KB)" 。原理:
当编译S7 program时,系统将会为每一个 SFC Type 生成一个 FB 块和两个 FC 块。FB块号在创建SFC Type时即被定义好。 FB块通过调用两个FC块来完成SFC的功能。在 SFC Type 中的每一步中组态的指令将会被生成在两个FC功能块中的一个。该FC功能块的名字自动被系统分配为 "ACTION" 。在 SFC Type 中的每一个转换条件中输入的条件将会被自动生成在另一个FC中,并被系统自动命名为 "TRANS" 。
当编译时出现上述错误信息,系统将不会提供更加详细的信息来指示具体哪一个图形或哪个SFC超出了64KB的限制范围。网上FAQ ID
可以提供相应信息用于定位错误的图形或 SFC。
编码生成器, 内部错误
在PCS 7中如何判断CPU当前所需本地数据?
隐藏订货号显示订货号订货号:
用户可以定义优先级从1到29的本地数据大小(临时数据堆栈)。本地数据大小可以在“Configure Hardware”中编辑。选择要修改的站点,选择菜单“Edit & Object properties”以及选项卡“Memory”,或者双击CPU,选择“Memory”。对于相应不同类型的CPU,可以在最大允许本地数据范围内增加本地数据大小。
CPU 414-2的最大本地数据量可达16 KByte;CPU 416-2的最大本地数据量可达32 KByte; CPU 417-4的最大本地数据量可达64 KByte。更多信息可以参考手册“S7-400 and M7-400 module data”,条目号1117740。
如果实际本地数据的需求超过了最大限制,用户可以相应增减在程序中没有使用的优先级所对应的本地数据大小。这样的话对于所需优先级可以有更大本地数据空间。
注意所填数值必须是2的倍数。不能是介于2到18之间的值。
下图表明CPU 416-2 DP和CPU 417-4各个优先级的本地数据默认分配数量。
表 1: CPU 416-2 DP和CPU 417-4的优先级
组织块OB 121和OB 122属于同一优先级,是编程故障或者访问故障的中断块。
在修改CPU中本地数据时,确保OB80到OB87分配到优先级26和28。如果程序中集成了故障OB,则启动优先级为28。
判断本地数据需求在SIMATIC PCS 7 version V5.2及其以上版本,可以在图表参考数据中查寻所需本地数据大小。具体操作步骤,打开一个CFC图表,菜单栏“Options & Chart Reference Data”。对话框中选择“Local Data”。这里可以显示所有组态的组织块的本地数据大小,和硬件组态中CPU属性中设置的本地数据大小。如果可以在线连接CPU,还可以显示 PCS 7 PLC (CPU)的在线本地数据大小。
图. 1: 在“Display Chart Reference Data”对话框中显示本地数据大小
SIMATIC PCS 7 版本 V5.1 和 V4.0x需要做以下步骤:
为了实现CPU的本地数据最优化分配,需要生成当前项目的参考数据。通过参考数据大小,可以判断各个优先级的所需的最大本地数据大小。
生成参考数据请按照如下操作:
打开一个CPU的CFC图表,以判断本地数据大小。
选择生成代码的菜单(Chart & Compile & Compile Charts as Program)。
在对话框中点击“Customize Compiler(SCL)”按钮。
图 2: 程序编译窗口
对话框“Customize Compiler (SCL)”中选择“Generate reference data”。这样可以促成在编译时自动生成参考数据。(注意:这样会增加编译时间)。
图 3: 编译器设置
点击“OK”关闭“Customize Compiler (SCL)”对话框。
在对话框“Compile Charts as Program”中设置程序编译范围("Entire program" 或者"Changes only"),点击“OK”,开始执行编译。
如果程序成功编译,没有产生任何错误信息,可以转移到下一步。
显示参考数据步骤:
切换到SIMATIC Manager中,选择已经生成参考数据的CPU的块文件夹。
在菜单“Options & Reference data”中点击“Display”,在“Generate reference data”对话框中选择需要更新本地数据的选项,点击“Yes”。
图 4: 生成参考数据
取决于SIMATIC Manager中的不同设置,会出现一条信息表示数据将被过滤显示。选择“OK”关闭对话框。
在“Customize”对话框中选择“Program structure”,“OK”关闭。
图 5: 设置
在编辑程序结构时会出现一个窗口,显示当前编辑状态。
图 6: 计算参考数据
会出现一个树状列表,表明当前所需最大本地数据量。所有标叉的块,都是没有集成在组织块中,则不会被调用,也就不需要本地数据。
如果需要的话,在CPU属性中输入所需本地数据值。
示例:利用参考数据来判断所需本地数据大小:
图 7: 本地数据
此例中对于组织块OB32(优先级9),其本身需要214字节的本地数据,外加上OB 121和OB 122各自分别需要244个字节。所以CPU属性中最少需要458字节的本地数据量大小。
关键词:判定本地数据
识别丢失的块参考
隐藏订货号显示订货号订货号:
问题:如何识别不带任何块参考数据的块?
解答:在CFC编译器中编译程序时,可获得消息“本地数据要求/块 x
的嵌入深度不能识别,因为不是所有的内置块都有一个块参考列表。”也见条目ID8897007与条目ID7387822。
按下列步骤来定位相关的块:
从CFC编译器中打开你的站上的参考数据
图 1:CFC编译器中的参考数据的显示
在参考数据视图中选择“块调用层次”按钮。
该PLC站的调用层次显示在窗口中,丢失参考信息的块被打上问号。
图 2:参考数据图表
注意事项:在查找项“创建与显示参考数据”下面的STEP7在线帮助里提供了更多有关参考数据的信息。
CFC V6:消息 294:32 "The desired block name 'OB00000' is not valid."
隐藏订货号显示订货号订货号:
编辑CFC图时,为什么会收到消息 294:32 “The desired block name 'OB00000' is not
valid. ...(期望的块名称‘OB00000’无效. ...)” ?
如果在项目中使用英文版的CFC V6 编译CFC图,则出现此消息。
图 1:消息 294:32
补救措施:
首先,为您的PCS 7 6.0 安装当前的升级包(服务包)。该升级文件可以从Internet上的产品信息处下载,或
者从您的销售商那里定购。
为PCS 7 V6.0 安装了升级包之后,在项目中执行下面的步骤以阻止编译过程中重新出现上述消息。
在HW Config中的“Station”菜单项中点击“Export…”导出硬件信息。选定“Option”对话框中所有的选项,并
保存配置文件。
图 2:导出硬件
创建一个新的STEP 7 项目。
在新项目中插入一个SIMATIC站点。
打开HW Config并导入从旧项目中已导入的硬件信息。该过程通过选择菜单项“Station & Import...”实
现该操作。然后为SIMATIC站点指定组态文件。当询问您是否希望保存导入的数据时,点击“Yes”确认。
复制包含在S7 程序文件夹中的图标表,并将其粘贴到您的新项目中。
现在从源项目中将所有的块复制到您的新项目中。
在新项目中创建一个功能图文件夹,并在其中插入一个CFC图。
打开刚刚创建的CFC图,在菜单项中选择“Options & Block Types...”。在
左边的列表中选择所有的块并且点击“--&”按钮将它们移动到右边的列表中。
关闭对话框和CFC编辑器。
图 3:将功能块导入功能图文件夹
从源项目中将CFC图复制并粘帖到新项目中。
从新项目中删除刚才创建的CFC图。
现在,你可以在CFC编辑器中进行编译而不会出现错误消息了。
注意事项:当复制CFC图时,通向其它功能图或者I/O的链接就失去了,之后这些链接必须手工重新建立。
将硬件组态载入 AS 时出现错误消息
隐藏订货号显示订货号订货号:
如何清除将硬件组态 载入 AS 时出现的错误消息?
在将硬件组态在入 AS 时,偶尔会出现下列错误消息:
“Incorrect DP slave address (16380)”
“Other users connected to the DP bus must still be loaded”
这些错误消息出现后,将无法向 AS 载入任何东西。
补救措施:通过创建一个新的
DP 网段并将DP 主站连接到新 DP 网络,便可以避免上述消息。从站自动被转移到新的 DP 网段。
控制器下载/重启时,数据块中的几个术语:初始值(声明视图),初始值(装载存储器)和实际值分别表示什么含义?
隐藏订货号显示订货号订货号:
组态说明:当一个工厂已经调试完成或者处于运行阶段,数据块中的某些值可能会在过程中被在线更改。例如,调节器参数或者其他参数(如运行时间,上下限等等)通常是在调试中修改。如果仅仅是在线做了修改,那么当程序重新下载或者控制器冷启动的时候,数据块中的当前值就会被原先组态的值覆盖。为了理解数据块在控制器下载和启动后的行为,有必要先熟悉AS的存储器概念和启动特性。
可以在下面内容中找到AS存储器概念的相关信息:
回读: 在存储器里数据块的实际值被传送到离线的ES数据块里.
下载程序: 当前的离线的- 代码和数据块被装到CPU的装载内存里.
冷启动: 这会将代码和数据块与控制相关的部分从装载内存里传到主存储器里。
注意:在热启动时程序在是从上次停止的断点开始执行, 实际值是保持的。当暖启动时,程序从主控制器里从头开始执行,数据被初始化程序复位。
你可以在下面找到更加详细的关于AS存储器的相关信息:
在PCS 7 在线帮助 "Help for STEP 7 & Appendix & S7 CPU memory areas & Load memory and main memory"
在PCS 7 在线帮助 "Help for STEP 7 & Load & Load from the PG into the PLC & Load and main memory in the CPU"
可以在下面的内容中找到启动特性(暖启动,冷启动,热启动)相关的信息
PCS 7 在线帮助 "Configuration - Engineering System & Implementing the PCS 7 Configuration & Configuring the Hardware & Configuring the SIMATIC 400 Station (CPU, CPs, Central I/O) & Setting the CPU Properties"。
下面的表格描述了数据块中的术语初始值(声明视图)/Initial value (Declaration view),初始值(装载存储器)/Initial value (Load memory)和实际值/Actual value 的含义。
初始值(声明视图)
初始值仅对于一个数据块的"离线"组态有意义。如果离线创建了一个新的数据块或者在离线组态的过程中在数据块里创建了一个新的变量,初始值会被应用到实际值。
创建一个新的变量在数据块的声明视图中创建一个新的变量(新的声明行)。这个过程会分配一个初始值。这个初始值也会被用作实际值。可以在数据块的数据视图中查看或者编辑实际值。
复制一个变量在数据块的声明视图中复制一个变量(已经存在的声明行)。复制之后,即使原来变量的初始值和实际值不同,新(复制的)变量的实际值也会和变量的初始值一致。
在数据块的数据视图中可以使用菜单命令 "Edit & Initialize Data Block" 。用这个命令可以把 "Initial value" 一列中的所有值赋给相应的 "Actual value" 一列。然而使用这个功能时需要格外小心,因为数据块的实际值(来自工厂运行中的数据)在离线组态中被覆盖了。当这个数据块下载到控制器后,可能会导致工厂进入不希望出现的状态。示例:一个工厂已经成功运行了很长一段时间。工厂参数已经做了优化而且回读到了离线组态中。数据块中的实际值包含了工厂的实际参数。如果使用了 "Initialize Data Block" 功能,已经从工厂中回读的实际值将会被组态的初始值覆盖。
初始值(装载存储器)数据块下载到控制器以后保存在装载存储器(load memory)。离线组态中的数据块的实际值复制到装载存储器。到控制器的下载过程中,和运行相关的数据块进而被加载到主存储器(main memory)。当控制器冷启动后,和运行相关的数据块也会被加载到主存储器,并使用装载存储器中的值覆盖现有数据块。装载存储器中的值也称为初始值。当从ES下载AS程序时,装载存储器中的初始值会被覆盖或者改变。主存储器中的当前值通常在调试中或者过程模式下改变,这些值的改变不会自动应用的装载存储器的初始值。
注意:如果主存储器中数据块的实际值和装载存储器中的初始值不同,控制器在冷启动之后相应数据块中的数值就会改变。这有可能会导致不希望的系统特性。可以通过以下步骤避免初始值和实际值出现差别::
总是离线修改参数
可以总是在ES组态中修改参数;然后再编译下载修改。应该避免在
没有相关数据
没有找到相关的新闻
没有找到相关的资料下载
没有找到相关的产品}

我要回帖

更多关于 中断处理和子程序调用 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信