Local data顾名思义为本地数据,在西门子控制器中有一部分内存空间被设置为L区间,它被用于控制器在运行程序时存储临时数据。由于编写FB/FC程序的需要和OB中调用功能块结构的不同,不同的OB由于调用不同的FB/FC,因此所需的Local data的大小各不相同(被调用的FB/FC将占用当前调用他的OB块的Local Data资源)。在控制器硬件组态中的CPU属性设置中,Memory选项卡用于设置Local data的分配。如果相应OB块实际运行所需的Local data大于硬件组态中所设置的Local Data大小,那么相应的程序将无法运行,CPU将报告INTF错误,甚至更为严重的情况下CPU可能会停止运行。但如果盲目将Local Data的分配设置过大,将会浪费一部分宝贵的CPU内存空间。 S7 300CPU中的Local data不可修改,每个优先级固定设置为256 bytes,S7 400的Local data则可以人为修改。由此可以看出正确设置S7400 CPU的Local Data的大小非常重要。在控制器硬件组态中CPU属性 Memory选项卡的Local Data区域用于设置基于优先级的Local Data(如下图所示):
在PCS7组态的项目中,在编译CFC程序后,系统将会自动计算各OB块所需的Local Data大小,可以通过交叉索引(Chart reference data Local data,如下图所示)查询到。
而普通的由用户采用Step7编程方式编写的程序,程序功能块及OB块各自的调用结构由用户自行控制,需要在编写完整个程序之后自行计算。
注:嵌套调用时,上一级功能块将不会计算其嵌套调用的FB/FC所需的Local data大小;在上图中将不会累加嵌套功能块所需的Local data大小;
获得所有上述信息后,即可计算当前程序所需的Local data大小。假设当前项目下使用的功能块及OB块上述相关信息如下表所示: OB/FB/FCPriority 优先级所需Local Data(Bytes)FB1X100FC1X400OB1126OB351226OB121X20OB122X20OB的调用关系如上图Pic4所示。根据调用结构计算,单独运行各OB块时所需的Local data如下: |
既然不能把STRUCT的数组直接传送到WINCC,那如何在WINCC中声明数据变量呢,包含的变量很多,难道要一个个声明? 答:先建立一个结构,里面包含多个元素,比如你建立一个结构叫motor,里面包含man,res,open,close,然后建立变量名为motor1,数据类型为motor,则自动生成motor1.man,motor1.res,motor1.open,motor1.close。这样方便建立变量,然后用画面窗口显示设备的控制画面,画面连接变量的“.”后面的部分,以及“.”。然后画面窗口的变量前缀连接变量“.”前面的部分,不包括“.”这样方便控制多个相同的设备只要复制画面窗口,修改变量前缀就好了。 |
从WinCC flexible 2005 开始,如果用户连续三次输入错误的密码,该用户就会进入用户管理中的“未授权”组。只有具有管理员权限的用户才能将该用户重新分配到用户组。 怎样避免“错误输入”呢? 当用户登录对话框弹出的时候,*后一个登录的用户会自动显示在“用户”输入框。
可以二选一,首先,从270系列开始,您可以使用下面样例项目中的脚本,该脚本会在用户登录的弹出窗口的用户框中输入一个虚拟的用户名,该脚本会在系统函数“ Log off ”执行后或者规定的“注销时间”到达时执行。 该函数保证当您再次登录时,重新输入用户名以确保其正确。 注意:
按钮功能User 1调出画面:“ Machine Parameters Plant 1: ”User 2调出画面:“ Machine Parameters Plant 2: ”User 3调出画面:“ User Administration ”Log off注销操作面板上实际登录的用户User info显示/隐藏“ User info ”Alarm View显示/隐藏“ Alarm View ” 实际的用户和组编号可以作为附加信息显示。 下图是“用户管理”界面。 如果您是以用户“User 3”,“Master”或者是“Admin”登录的,您可以调用“用户管理”画面。使用“import / Export”按钮您可以导入/导出当前用户管理。您可以预先在符号 I/O 域中设定存储路径。 注意: 一般提示: 当您使用用户管理功能时,通常应当使用“ Log off ”功能来注销。 备份您的用户列表(例如,在一个外扩的存储卡上)。 创建一个拥有所有权限的用户(第二个管理员)。 创建一个报警视图/归档来显示所有的系统报警。例如,这可以让您查看注销失败的时间和频繁程度,以及是否用户被放入未授权组。 组态“用户视图”。例如使用管理员权限,就可以将“未授权”用户重新分配给用户组。 用户名避免含有空格 (例如 user 2 --> user2)。 |