1、自由循环组织块ob1
s7 cpu启动完成后,操作系统循环执行ob1,ob1执行完成后,操作系统再次启动ob1。在ob1中可以调用fb、sfb、fc、sfc等用户程序使其循环执行。除ob90以外,ob1优先级最低,可以被其他ob中断。ob1默认扫描监控时间为150ms(可设置),扫描超时,cpu自动调用)b80报错,如果程序中没有建立ob80,cpu进入停止模式。
2、日期中断组织块ob10~ob17
在cpu属性中,可以设置日期中断组织块ob10~ob17触发的日期、执行模式(到达设定的触发日期后,ob只执行一次或按每分、每小时、每周、每月周期执行)等参数,当cpu的日期值大于设定的日期值时,触发相应的ob并按设定的模式执行。在用户程序中也可以通过调用sfc28系统函数设定cpu日期中断的参数,调用sfc30激活日期中断投入运行,与在cpu属性中的设置相比,通过用户程序,可以在cpu运行时灵活地修改设定的参数,两种方式可以任意选择,也可以同时对一个ob进行设置。
3、时间延迟中断组织块ob20~ob23
时间延迟中断组织块ob20~ob23的优先级及更新过程映像区的参数需要在cpu属性中设置,通过调用系统函数sfc32触发执行,ob号及延迟时间在sfc32参数中设定,延迟时间为1~60000ms,大大优于定时器精度。
4、循环中断组织块ob30~ob38
循环中断组织块ob30~ob38按设定的时间间隔循环执行,循环中断的间隔时间在cpu属性中设定,每一个ob默认的时间间隔不同,例如)b35默认的时间间隔为100ms,在ob35中的用程序将每隔100ms调用一次,时间间隔可以自由设定,最小时间间隔不能小于55ms。ob中的用户程序执行时间必须小于设定的时间间隔,如果间隔时间较短,由于循环中断ob没有完成程序扫描而被再次调用,从而造成cpu故障,触发ob80报错,如果程序中没有创建ob80,cpu进入停止模式。通过调用sfc39~sfc42系统函数可以禁止、延迟、使能循环中断的调用。循环中断组织块通常处理需要固定扫描周期的用户程序,例如pid函数块通常需在循环中断中调用以处理积分时间的计算。
5、硬件中断组织块ob40~ob47
硬件中断也叫过程中断,由外部设备产生,例如功能模块fm、通信处理器cp及数字量输入、输出模块等。通常使用具有硬件中断的数字量输入模块触发中断响应,然后为每一个模块配置相应的中断ob(一个模块只能良一个中断ob,s7-300系列plc cpu只能触发硬件中断ob40),在模块配置中可以选择输入点的上升沿、下降沿或全部作为触发中断ob的事件。配置中的中断事件出现,中断主程序,执行中断ob中的用户程序一个周期,然后跳回中断处继续执行主程序。使用中断与普通输入信号相比,没有主程序扫描和过程映像区更新时间,适合需要快速响应的应用。
如果输入模块中的一个通道触发硬件中断,操作系统将识别模块的槽号及触发相应的ob,中断ob执行之后发送与通道相关的确认。在识别和确认过程中,该通道再次触发的中断事件将丢失;如果模块其他通道触发中断事件,中断不会丢失,在当前正在运行的中断确认之后触发;如果是不同的模块触发的中断事件,中断请求被记录,中断ob在空闲(没有模块其他通道的中断请求)时触发。通过调用sfc39~sfc42系统函数可以禁止、延迟、使能硬件中断的调用。
6、dpv1中断组织块ob55~ob57
cpu响应profibus-dp v1从站触发的中断信息。
7、多处理器中断组织块ob60
用于s7-400系列plc多cpu(一个机架中最多插入4个cpu完成同一个复杂任务)处理功能,通过调用sfc35,可以触发ob60在多个cpu中同时执行。
8、时钟同步中断组织块ob61~ob64
用于处理profibus-dp v1等时钟同步,从采集各个从站的输入到逻辑结果输出,需要经过从站输入信号采样循环(信号转换)、从站背板总线循环(转换的信号从模块传递到从站接口)、profibus-dp总线循环(信号自从站传递到主站)、程序执行循环(信号的程序处理)、profibus-dp总线循环(信号从主站传递到从站)、从站背板总线循环(信号从从站接口传递到输出柜块)及模块输出循环(信号转换)7个循环,时钟同步中断将7个循环同步,优化数据的传递并保证profibus-dp各个从站数据处理的同步性。profibus时钟同步中断只能用于s7-400系列plc cpu(具有dp v2 功能)。
9、工艺同步处理中断组织块ob65
用于t-cpu(具有运动控制功能的cpu)工艺块与开始程序的同步处理。
10、冗余故障中断组织块ob70、ob72
用于s7-400h冗余系统,当i/o冗余故障,例如冗余的profibus-dp从站故障时,触发ob70的调用,当cpu冗余故障,如cpu切换、同步故障时,触发ob72的调用。如果i/o冗余,或者cpu冗余故障而在cpu中没有创建ob70、ob72,cpu不会进入停止模式。
11、异步故障中断组织块ob80~ob87
异步故障中断用于处理各种故障事件。
ob80:处理时间故障、cir(configuration in run)后的重新运行等功能,例如ob1或ob35运行超时,cpu自动调用ob80报错,如果程序中没有创建ob80,cpu进入停止模式。
ob81:处理与电源相关的各种信息(s7-400系列plc cpu只有电池故障时调用),出现故障,cpu自动调用ob81报错,如果程序中没有创建ob81,cpu不会进入停止模式。
ob82:诊断中断,如果使能一个具有诊断中断模块的诊断功能(例如断线、传感器电源丢失),出现故障时调用ob82,如果程序中没有创建ob82,cpu进入停止模式。诊断中断还对cpu所有内外部故障,包括模块前连接器拔出、硬件中断丢失等作出响应。
ob83:用于模块插拔事件的中断处理,事件出现,cpu自动调用ob83报警,如果程序中没有创建ob83,cpu进入停止模式。
ob84:用于处理存储器、冗余系统中两个cpu的冗余连接性能降低等事件。
ob85:用于处理操作系统访问模块故障、更新过程映像区时i/o访问故障、事件触发但相应的ob没有下载到cpu等事件,事件出现,cpu自动调用ob85报错,如果程序中没创建ob85,cpu进入停止模式。
ob86:用于处理扩展机架(不适用于s7-300系列)、profibus-dp主站、profibus-dp或profinet i/o分布i/o系统中站点故障等事件,事件出现,cpu自动调用ob86报错,如果程序中没有创建,cpu进入停止模式。
ob87:用于处理mpi gd 通信及时钟同步故障,事件出现,cpu自动调用ob87报错,如果程序中没有创建,cpu不会进入停止模式。
12、处理中断组织块ob88
用于处理程序嵌套、区域数据分配故障,故障出现,cpu自动调用ob88报错,如果程序中没有创建,cpu进入停止模式。
13、背景循环中断组织块ob90
优先级最低,保证cpu最短的扫描时间,避免过程映像区更新过于频繁。程序的下载和cpu中程序的删除触发ob90的调用。只能用于s7-400系列plc cpu。
14、启动中断组织块ob100~ob102
用于处理cpu启动事件,暖启动cpu调用ob100,热启动cpu调用ob101(不适合s7-300系列plc和s7-400h),冷启动cpu调用ob102,温度越低,cpu启动时清除存储器中数据区的类型越多。
15、同步错误中断组织块ob121、ob122
ob121处理与编程故障有关的事件,例如调用的函数没有下载到cpu中、bcd码出错等,ob122处理与i/o地址访问故障有关的事件,例如访问一个i/o模块时,出现读故障等。如果上述故障出现,在程序中没有创建ob121、ob122,cp进入停止模式。
注意:不是所有的ob都可以在s7 cpu中使用,例如s7-300系列plc pu中只有暖启动ob100,操作系统不能调用ob101、ob102,cpu中可以使用的ob请参考cpu选型手册。
s7-300系列plc中组织块的优先级是固定的,不能修改,在s7-400系列plc中下列组织块的优先级可以进行修改:
ob10~ob47:优先级修改范围2~23。
ob70~ob72:优先级修改范围2~38。
ob81~ob87:优先级修改范围2~26,优先级24~26确保异步故障中断不被其他的事件中断。
几个组织块可以具有相同的优先级,当事件同时出现时,组织块按事件出现的先后顺序触发,如果超过12个相同优先级的ob同进触发,中断可能丢失。
我们在使用相应ob时要注意以下问题。
1.ob只是及时反应出了故障,但并不解决故障,ob允许cpu带故障运行。
2.诊断ob如ob82/86/122反映的是硬件上的故障,靠软件是解决不了的,软件的作用是尽快指向故障点,硬件的问题还是硬件解决。
3.诊断ob的产生会影响cpu的整个程序的执行速度,会影响系统的控制品质,尤其是一些带过程中断,大量运算及运动控制的高速生产线。
4.无条件的让ob去掩盖故障是一件很危险的事情,应该有应对的措施,让系统尽快的进入一种可控的安全状态。
由于通信的原因,模块不存在或有故障,刷新过程映像表时i/o访问出错,将会调用优先级错误中断(ob85)。
可以在cpu属性对话框中设置3种调用ob85的方式。s7-300默认的方式是不调用ob85,s7-400默认的方式是每个扫描循环周期调用一次,还可以设置为故障发生和消失时分别调用一次。
用pi/pq地址区访问有故障的i/o模块、dp从站时,将会调用i/o访问错误中断(ob122),每个扫描周期调用一次。
对于简单程序,只涉及到数字量逻辑控制,只使用ob1就可以了,对于复杂程序,使用了dp通讯等等,就需要做一些相应功能的组织块来保证plc的运行正常。
1 ob100启动组织块,即plc一通电的第一个扫描周期就先处理此块,以后就不扫描了,所以在这个块内可以做初始化脉冲,复位一些数据。
2 ob122 i/o访问错误组织块,
3 ob121 编程错误组织块,这个块比较重要,曾经遇到一个德国进口喂料机,使用一段时间后出现cpu不能运行,程序是使用stl编程,使用了很多间接寻址,很难找到问题所在,后来就选择了这个组织块后,cpu运行设备就正常工作了。
4 ob82诊断中断组织块,这个对于使用模拟量模块多的项目需要使用这个块,否则一旦接入的模拟量信号出现问题时,cpu停机就是大事了。
5 ob80 时间错误组织块,包括:超出周期时间、执行ob时出现确认错误、提前了时间而使ob的启动时间被跳过、在cir后恢复run模式。
6 ob86机架故障组织块,对于使用了dp通讯的分布式i/o需要使用这个块。 要想第一时间找到处故障的子站,需要使用ob86来作为dp故障诊断.需要对ob86内变量做编程处理,使用触摸屏或其他上位机来显示报警内容。
7 ob87通讯错误组织块。
ob1:循环扫描ob,它是没有时间间隔的,执行完ob1后就会再次从头开始执行ob1,所以外部输入的模拟量数据转换成工程量的程序在ob1中执行,使得数据能够及时更新。
ob10~ob23:一般很少用到。
ob30~ob38 ob33和ob35是常用的,和时间有关的程序一般都是放在这些ob中得,比如利用pid控制的程序块,要求不是很严格的时间处理功能,当定时器不够用的时候自己编写的类似定时器的程序块。
ob100~ob102:这些ob只是在cpu不同的启动模式下启动一次,所有一些初始化的程序可以写在这些ob中。
其他ob就不常用了。