plc的循环程序是如何执行的。(这一点非常重要)
1.循环程序如何执行
西门子plc程序执行图(建议保存)
1.1在CPU上电之后,启动块OB100/101/102先启动一次。(调用哪一个OB块由系统的启动模式配置决定)
1.2启动块执行完毕后,系统的循环监视时间就被激活了(这个时间可以在STEP7的硬件配置中设置,如果循环时间超出则PLC停机)
1.3之后,CPU会从输入模块及其它过程映象设备读取所有的输入状态
1.4接着下来便到了主循环程序的执行
1.4.1主循环执行也是按照语句顺序执行,如图所示,当OB1执行第一个语句CallFB,则此时程序进入所调用FB块顺序执行FB块的语句
1.4.2若在所调用的FB块,在某一语句中执行了CallFB/FC,则程序又进入下一级的FC中依次执行块中语句,依此类推
1.4.3当调用的下一级FC所有语句执行完成后,程序回到CallFC的这一语句,继续执行后面的语句
1.4.4当所Call的FB也执行完成后,程序回到OB1的CallFB处,继续执行后面的语句。
1.4.5直至最后,完成OB1的所有程序,则主循环结束。
1.4.6在OB1执行的过程中,循环中断(如OB35)、故障中断(如OB86)等可以插入执行,执行完成后会回到中断的地方继续主循环的执行。
1.5主循环执行完成后,PLC将过程映象的输出写到输出模块
1.6完成1.5的步骤之后一个完整的循环就结束了,此时跳至1.2步骤,重新开始新一循环的监视时间,如此周而复始。
2.程序块类型
知道了PLC循环程序如何执行后,我们再来看一看STEP7的程序块有哪些类型
2.1用户块
用户块包括程序代码和用户数据。在结构化程序中,一些块循环调用处理,一些块需要时才调用。
2.1.1组织块
OB块构成了S7CPU和用户程序的接口。可以把全部程序存在OB1中,让它连续不断地循环处理。也可以把程序放在不同的块中,用OB1在需要的时候调用这些程序块。除OB1外。操作系统根据不同的事件可以调用其他的OB块,例如:
2.1.1.1时间-日期中断
2.1.1.2周期时间中断
2.1.1.3诊断中断
2.1.1.4硬件中断
2.1.1.5故障处理中断
2.1.1.6硬件启动
2.1.2功能块(FB)
功能块是在逻辑操作块内的功能或功能组,在操作块内分配有存储器,并存储有变量。FB需要这个背景数据块形式的辅助存储器。通过背景数据块传递参数,而且,一些局部参数也保存在此区。其他的临时变量存在局部堆栈中。保存在背景数据块内的数据,当功能块关闭时数据仍保持。而保存在局部堆栈中的数据不能保存。
2.1.3功能(FC)
功能是类似于功能块的逻辑操作块,但是,其中不分配存储区。FC不需要背景数据块。临时变量保存在局部堆栈中,直到功能结束。当FC执行结束时,使用的变量要丢失。
2.1.4数据块(DB)
数据块是一个永久分配的区域,其中保存其他功能的数据或信息。数据块是可读/写区,并做为用户程序的一部分转入CPU。
2.2系统块
系统块是在CPU操作系统中预先定义好的功能和功能块。这些块不占用用户程序空间。用户程序调用系统块,在整个系统中这些块具有相同的接口、相同的标示和相同的号。用户程序可以容易地转换到不同的CPU或PLC。
2.2.1系统功能块(SFC)
系统功能是集成在S7CPU中的已经编程并调试过的功能。这些块支持的一些任务是设置模块参数、数据通讯和拷贝功能等。用户程序可以不用装载直接调用SFC。SFC不需要分配数据块。
2.2.2系统功能块(SFB)
系统功能块是S7CPU的集成功能。由于SFB是操作系统的一部分,用户程序可以不用装载直接调用SFB。SFB需要分配背景数据块DB,数据块必须作为用户程序的一部分下装到CPU。
2.2.3系统数据块(SDB)
系统数据块是由不同STEP7工具产生的程序存储区,其中存有操作控制器的必要数据。SDB中存有一些信息,例如:组态数据、通讯连接和参数。
3.编程方法
前面大致了解了一下PLC程序的一个循环是如何执行的,并了解了一下程序中块的类型,下面再来看看有哪些编程方法组织这些块。
每一个西门子的编程人员都会有自已的编程习惯和方法。STEP7为设计程序提供了三种方法。基于这些方法,可以选择最适合于你的应用的程序设计方法。
3.1线性化编程
所有的程序都在一个连续的指令块中。这种结构和PLC所代替的固定接线的继电器线路类似。系统按照顺序处理各个指令。
3.2模块化编程
程序分成不同的块,每个块包含了一些设备和任务的逻辑指令。组织块中的指令决定是否调用有关的控制程序模块。例如,一个模块程序包含有一个被控加工过程的各个操作模式。
3.3结构化编程
结构化程序包含有带有参数的用户自定义的指令块。这些块可以设计成一般调用。实际的参数(输入和输出的地址)在调用时进行赋值。