西门子XC224交换机
| 6GK5224-0BA00-2AC2 SCALANCE XC224 可管理层面 2 IE 交换机; 24x 10/100 Mbit/s RJ45 端口; 1x 控制台端口,诊断 LED; 冗余电源; 温度范围 -40°C 至 +70°C; 安装: 凹顶导轨/S7 型轨/墙壁 Office 冗余功能 特性(RSTP,VLAN,...); PROFINET 输入输出设备 以太网 /IP 一致性, C-PLUG 插槽; |
问题:在S7-CPU中使用嵌套程序需要注意什么,如何使用?
回答:S7-CPU支持嵌套程序,但对于不同的CPU类型,在使用时需要注意一些问题。
1. 不同的CPU类型,支持的嵌套程序深度不同,用户可在CPU的技术数据中查到此参数,以6ES7315-2AG10-0AB0为例。
图1:CPU的嵌套深度参数
2. 用户可以按照如下方式使用嵌套功能:
a) 在某个优先级组织块中调用多个嵌套FC/FB。例如,在OB1 (优先级为1)调用FC1,FC1中调用FC2,FC2中调用FC3,等等,一直到FC7,与OB1共8层深度。如果在FC7 中又调用了FC8 ,此时会导致CPU 停机,在CPU在线信息界面中可查看到此情况,如图2所示。用户也可在OB35(优先级为12)调用FC11,FC11中调用FC12,FC12中调用FC13,等等,一直到FC17。
图2:嵌套调用
b) 在某个优先级中调用某个FC,此FC多次调用自身。例如,在OB1 (优先级为1)调用FC1,FC1中仍然调用FC1,用户在FC1 的程序中必须编程累计FC1被调用的次数,如果达到了7次,则需要从FC1 中跳出调用(此方法即为软件行业广泛应用的递归编程方法)。如果在FC1 调用自身次数超出了CPU允许的嵌套深度,此时会导致CPU 停机。
3. 当用户在使用嵌套功能时,可能出现几种错误:
a) The nesting depth of block calls (U-Stack) is too high(嵌套深度太高)。例如:
? 用户在某个优先级(如OB1)中调用嵌套程序深度超出所使用CPU支持深度,如第2节(a) 部分所描述。
? 用户在某个优先级(如OB1)中调用嵌套程序深度超出所使用CPU支持深度,如第2节(b) 部分所描述。
此时CPU将报16#4575错,如图3所示:
图3:同步错误嵌套1
b) The nesting depth of synchronous errors is too high(同步错误嵌套深度太高)。例如:
? 用户在OB1中使用L DB1.DBB0 语句(CPU中并未下载DB1),
? 此时CPU出现编程错误,将调用OB121。
? 如果用户在下载的OB121中又使用了L DB1.DBB0 指令,将导致CPU停机
此时CPU将报16#4573错,如图4所示:
图4:同步错误嵌套2
c) Error during allocation of local data (分配本地数据错误) 。对于S7-CPU每个优先级都有对本地数据大小的限制,如果用户使用的范围超出了此限制,CPU将出现错误。以6ES7315-2AG10-0AB0为例,其每个优先级下的本地数据大小为512 BYTE。如下错误使用都可能导致此错误:
? OB1 调用FC1,FC1 中定义的local data(TEMP数据类型)与OB1中定义的local data(TEMP数据类型)总和超出了CPU 对此优先级分配的local data 数量。
? OB1 中嵌套调用多个FC, 这些FC 使用的local data 与OB1中定义的local data(TEMP数据类型)总和超过了分配给此优先级的local data 数量。
此时CPU将报16#3576错,如图5所示:
图5:分配本地数据错误
? 对于S7-400CPU, 用户可以在硬件配置中调节每个优先级下的本地数据大小,以6ES7412-2XG04-0AB0为例,如图6所示:
西门子XC224交换机
图6:分配本地数据
4. 当用户在使用嵌套功能出现错误时,对于支持OB88的CPU(例如S7-400CPU),可用通过下载OB88来防止CPU停机,此时CPU将处于SF状态,但OB88不可以再出现嵌套使用错误,否则CPU将进入停机状态。对于不支持OB88的CPU(例如S7-300CPU),当出现嵌套调用错误时,无法避免CPU进入停机状态。
描述
S7-PLCSIM 支持以下通讯块来实现两个S7-400 CPU模块间的通信:
- SFB8 "USEND"
- SFB9 "URCV"
- SFB12 "BSEND"
- SFB13 "BRCV"
- SFB15 "PUT"
- SFB14 "GET"
- SFB19 "START"
- SFB 20 "STOP"
- SFB 22 "STATUS"
- SFB 23 "USTATUS"
要求
- 需要S7-PLCSIM V5.4 SP3(或更高版本)。
- 在STEP 7(TIA Portal)中建立一个项目,对两个S7-400 CPU进行硬件组态和网络组态。
- 在模块之间已经组态了S7连接和通信连接。
- 在主动站S7-400 CPU的用户程序中,调用“BSEND”指令来给被动站CPU发送数据。
- 在被动站S7-400CPU中调用“BRCV”指令来接收来自主动站S7-400 CPU的数据。
注意
本条目提供的项目包含两个S7-400 CPU的组态和连接组态以及用户程序。
以下步骤列出了如何使用PLCSIM仿真通讯。下载附件中的STEP 7(TIA Portal)项目包含了两个S7-400站通过工业以太网通信 。
Station_1中的OB1包含计数器的程序,将其输出值传送到Station_2。
- 在项目导航中选中“Station_1”并打开S7-PLCSIM,可以通过菜单命令“Online > Simulation > Start”或者菜单栏的“Start simulation” 图标打开。实例编号为“S7-PLCSIM1”的个仿真CPU的对话框被打开。
- 如果是首次仿真这个项目,就会打开“Extended download to device”对话框。在“PG/PC Interface”中选择如图1所示的设置,并单击“Start search”。
图. 1
- 当在线连接已经建立时,单击“Load”按钮。
- 然后,在打开的“Load preview”对话框中,继续单击“Load”按钮。
- 在S7-PLCSIM 中使用“Add”菜单来加载子窗口“Input”和“Counter”,用来监视和控制程序。对于“Station_1”需要“EB2”和“Z1”。
- 在S7-PLCSIM1的“CPU”子窗口中,将运行模式从“STOP”切换到“RUN-P”。
图. 2
- 选中项目导航中的“Station_2”并重复步骤1来打开第二个“S7-PLCSIM2”实例。
- 在“Load preview”对话框中单击“Load”按钮。
- 与步骤5相同,给实例“S7-PLCSIM2”添加“Output”。对于“Station_2”需要“AW1”。
- 在S7-PLCSIM2中的“CPU”子窗口中,将运行模式从“STOP”切换到“RUN-P”。
图. 3
- 在S7-PLCSIM1(仿真Station 1)中,EB2控制计数器Z1并将计数值传送到S7-PLCSIM2 (仿真Station 2)中的AW1。
- E2.0: 自动向上计数的时钟标记
- E2.1:向上计数
- E2.2: 向下计数
- E2.3: 计数器的预设值
- E2.4: 复位计数器