热门搜索:
西门子S7-1200PLC维修
信誉**,客户至上是公司成立之初所确立的宗旨,在公司**的严格要求和员工们不折不扣地贯彻执行下发展延续至今。“假一罚十”一直是我公司的主动承诺。
承诺一:1、保证全新原装进口 承诺二:2、保证安全准时发货
承诺三:3、保证售后服务质量
流程一:1、客户确认所需采购产品型号
流程二:2、我方会根据询价单型号查询价格以及交货期,拟一份详细正规报价单
流程三:3,客户收到报价单并确认型号无误后订购产品
流程四:4、报价单负责人根据客户提供型号以及数量拟份销售合同
流程五:5、客户收到合同查阅同意后盖章回传并按照合同销售额汇款到公司开户行
流程六:6、我公司财务查到款后,业务员安排发货并通知客户跟踪运单
问题:在S7-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。
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(嵌套深度太高)。例如:
b) The nesting depth of synchronous errors is too high(同步错误嵌套深度太高)。例如:
c) Error during allocation of local data (分配本地数据错误) 。对于S7-CPU每个**级都有对本地数据大小的限制,如果用户使用的范围**出了此限制,CPU将出现错误。以6ES7315-2AG10-0AB0为例,其每个**级下的本地数据大小为512 BYTE。如下错误使用都可能导致此错误:
? 对于S7-400CPU, 用户可以在硬件配置中调节每个**级下的本地数据大小,以6ES7412-2XG04-0AB0为例,如图6所示:
西门子S7-1200PLC维修
4. 当用户在使用嵌套功能出现错误时,对于支持OB88的CPU(例如S7-400CPU),可用通过下载OB88来防止CPU停机,此时CPU将处于SF状态,但OB88不可以再出现嵌套使用错误,否则CPU将进入停机状态。对于不支持OB88的CPU(例如S7-300CPU),当出现嵌套调用错误时,无法避免CPU进入停机状态。
描述
对于主存储区很小的CPU来说,改变上述参数对于完善CPU的性能是非常有意义的。
CPU程序使用的主存储器的一个主要的部分是CPU的诊断缓冲区,这儿需要决定在监控缓冲区中使用的信息数量。
可以改变通信任务的数量, 在 "当前应用的通信任务"(图. 4)可以读出应用的需求,改变它的较大值是必要的,必须考虑30%的备用。
可以在如下图所示的对话框中改变消息数量。
尽可能无间隔的设置IO模块的IO地址,这样能够减少过程映像输入输出区的大小。
在CPU的在线属性中,可以看到主存储区被占用了多少。 在 "存储器" 栏,选择"主存储器代码" 值 (在此点击), 然后点击 "主存储器详细" 按钮。
回答:S7-CPU支持嵌套程序,但对于不同的CPU类型,在使用时需要注意一些问题。
1. 不同的CPU类型,支持的嵌套程序深度不同,用户可在CPU的技术数据中查到此参数,以6ES7315-2AG10-0AB0为例。
图1:CPU的嵌套深度参数
图2:嵌套调用
? 用户在某个**级(如OB1)中调用嵌套程序深度**出所使用CPU支持深度,如*2节(a) 部分所描述。
? 用户在某个**级(如OB1)中调用嵌套程序深度**出所使用CPU支持深度,如*2节(b) 部分所描述。
此时CPU将报16#4575错,如图3所示:
图3:同步错误嵌套1
? 用户在OB1中使用L DB1.DBB0 语句(CPU中并未下载DB1),
? 此时CPU出现编程错误,将调用OB121。
? 如果用户在下载的OB121中又使用了L DB1.DBB0 指令,将导致CPU停机
此时CPU将报16#4573错,如图4所示:
图4:同步错误嵌套2
? 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:分配本地数据错误
图6:分配本地数据
SIMATIC CPU 的存储器的一部分被系统功能所占用,这些系统功能所占用的大小依赖于CPU的不同参数。
图. 1: CPU监控缓冲区信息的数量的设置选项
图. 2: 通信任务和本地堆栈数据的设置选项
图. 3: 过程映像的设置选项
图 4: CPU 412 主存储器的占用