技术论坛

 SIMATIC S7-1500与TIA博途软件的使用---连载58

返回主题列表
作者 主题

至圣

经验值: 11073
发帖数: 1023
精华帖: 21
楼主    2016-09-13 09:42:24
主题:SIMATIC S7-1500与TIA博途软件的使用---连载58

以下内容节选自机械工业出版社出版的西门子自动化技术丛书----《SIMATIC S7- 1500 与 TIA博途软件使用指南》, 作者崔坚。更多更详细的内容请您参考《SIMATIC S7- 1500 与 TIA博途软件使用指南》一书。

 

 

 

 

组织块--- CPU的过载特性、L堆栈、接口区

7.2.2 CPU的过载特性

        S7-1500 CPU的组织块所支持的优先级从1(最低)到26(最高),这意味着同时发出多个OB请求时,将首先执行优先级最高的OB块。如果OB有相同的优先级,则当触发事件同时到来时,组织块将按事件出现的顺序(进入系统的顺序)触发。部分组织块的优先级是可以修改的,具体参考表7-2。

        如果到来事件的优先级低于正在处理的OB块优先级,则CPU不会中断当前正在执行的OB块。如果此时相同的低优先级事件多次发生,那么CPU会对这些相同事件进行排队。当执行完高优先级OB块后,CPU执行队列中低优先级事件对应的OB块。

        当来自同一事件源的事件发生速度大于CPU的处理速度时,会发生过载。如果要控制临时过载,可以限制未处理事件的数量(队列中相同事件的数量)。当达到OB块属性设置中的未处理事件的数目时,则丢弃随后的事件。可以在某些OB块(比如循环中断组织块、时间中断组织块)的 “待进入队列的事件” 参数中设置这个事件队列的数目。如果设置此参数值为1,则仅临时存储一个事件。在这个OB块的下一次调用中,可在其优化的启动信息中的“event_count”输入参数中获取已丢失事件的数目,然后对过载情况作出适当的响应。

        例如,循环中断组织块OB30的周期为10ms,优先级设置为16,“待进入队列的事件”设置为1。硬件中断组织块OB40的优先级为17,用户程序执行时间为30ms。那么当硬件中断发生时,OB30只进入队列一次(本该执行三次,但实际上会丢失两次),当OB40执行完毕后,不会执行丢失的那两次OB30。

        如果CPU丢失了OB启动事件,那么之后的行为特性将取决于OB块的属性参数“报告事件溢出到诊断缓冲区”,如果选中了该复选框,CPU将把此次过载情况写入诊断缓冲区。

        OB块的属性参数“启用时间错误”用于指定在达到类似事件的指定过载级别时是否调用时间错误OB80。如果调用(选中复选框),则需使用参数“时间错误的事件阈值”指定调用OB80时队列中类似事件的数量。取值范围为:1≤“时间错误的事件阈值” ≤待排队的事件数。示例中,此参数设置为1,则排队队列数目为1时,就会调用OB80。事件队列在OB块的属性中设置,如图7-13所示。

 

图7-13 组织块的事件队列设置

7.2.3组织块的本地数据区堆栈(L 堆栈)

        S7-1500 CPU为每个优先级分配了64K的临时变量,包括下列数据:

  • 程序块中的临时变量

  • 组织块的开始信息(非优化存储的组织块与操作系统的接口区)

  • FC、FB的参数接口

        如果在一个程序块中使用了临时变量,它将占用调用它的组织块的L堆栈,程序块嵌套调用越深,占用L堆栈空间越大。例如在OB1中调用FC1,在FC1中调用FC10、FC11,在FC11中又调用FC12、FC13,占用L堆栈大小的计算方式参考表7-3。

 

表7-3组织块的L堆栈

 

注意:

如果使用的临时变量超过L堆栈规定的限制,又没有进行编程错误处理,则S7-1500 CPU将停机报错。

 

        在创建组织块时(非优化的存储方式),系统自动在接口区声明了一些不能被修改的临时变量,用于记录组织块的启动信息。如果用户需要自定义临时变量,必须在这些启动信息之后创建。临时变量仅在其所属的块执行时可用,当该块执行完毕后,这些临时变量(L堆栈)可能由于其它块的执行而被覆盖。

 

7.2.4组织块的接口区

        在组织块的接口区中,除了自动生成的变量之外,用户可以自行定义临时变量及本地常量,所支持的数据类型如表7-4所示。

 

表7-4 组织块OB接口区的数据类型

 

 

您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。