业精于勤技精于专学以致用工程实训中心PLC复杂控制系统设计、编程与调试第5讲S7-300PLC结构化编程主讲人TangChunxia,LiLixiaYanHumin,ChenQinghua工程实训中心第5讲S7-300PLC结构化编程5、用户程序中的块结构FCFBFCSFBFBSFCDBDB操作系统OB组织块循环定时过程故障FB图例:OB--组织块FB--功能块FC--功能SFC--系统功能SFB--系统功能块FB带背景数据块最大嵌套深度:S7-300:816(CPU318)S7-400:242至4个附加级给故障OB工程实训中心第5讲S7-300PLC结构化编程5-1、用户程序结构线性程序(线性编程)分部式程序(分部编程、分块编程)结构化程序(结构化编程或模块化编程)工程实训中心第5讲S7-300PLC结构化编程1.线性程序(线性编程)所谓线性程序结构,就是将整个用户程序连续放置在一个循环程序块(OB1)中,块中的程序按顺序执行,CPU通过反复执行OB1来实现自动化控制任务。这种结构和PLC所代替的硬接线继电器控制类似,CPU逐条地处理指令。事实上所有的程序都可以用线性结构实现,不过,线性结构一般适用于相对简单的程序编写。工程实训中心第5讲S7-300PLC结构化编程2.分部式程序(分部编程、分块编程)所谓分部程序,就是将整个程序按任务分成若干个部分,并分别放置在不同的功能(FC)、功能块(FB)及组织块中,在一个块中可以进一步分解成段。在组织块OB1中包含按顺序调用其他块的指令,并控制程序执行。在分部程序中,既无数据交换,也不存在重复利用的程序代码。功能(FC)和功能块(FB)不传递也不接收参数,分部程序结构的编程效率比线性程序有所提高,程序测试也较方便,对程序员的要求也不太高。对不太复杂的控制程序可考虑采用这种程序结构。工程实训中心第5讲S7-300PLC结构化编程3.结构化程序(结构化编程或模块化编程)所谓结构化程序,就是处理复杂自动化控制任务的过程中,为了使任务更易于控制,常把过程要求类似或相关的功能进行分类,分割为可用于几个任务的通用解决方案的小任务,这些小任务以相应的程序段表示,称为块(FC或FB)。OB1通过调用这些程序块来完成整个自动化控制任务。结构化程序的特点是每个块(FC或FB)在OB1中可能会被多次调用,以完成具有相同过程工艺要求的不同控制对象。这种结构可简化程序设计过程、减小代码长度、提高编程效率,比较适合于较复杂自动化控制任务的设计。工程实训中心第5讲S7-300PLC结构化编程例题:十字路口交通灯控制为了控制十字路口的交通,在十字路口设立了红绿灯。当合上控制开关K后,东西方向绿灯首先亮20s,接着闪烁5s后熄灭,然后黄灯亮5s后灭,接着红灯亮30s后灭,然后绿灯亮循环……对应东西方向绿灯和黄灯亮的时候,南北方向红灯亮,然后绿灯亮20s后闪烁5s熄灭,黄灯亮5s后灭,接着红灯亮循环……断开控制开关后,所有的灯都熄灭。北向南向东向西向红红红红黄黄黄黄绿绿绿绿工程实训中心第5讲S7-300PLC结构化编程控制过程分析如果不看两个方向交通灯的工作,其控制状态流程图是一样的,所以可以做成一个通用的“结构”程序,让两个方向交通灯工作时一起调用。工程实训中心第5讲S7-300PLC结构化编程结构规划启动条件:1个结束条件:1个定时延时:4个工作过程:4个In:1个BoolIn:1个BoolIn:4个Timer,4个S5TimeOut:4个实际编程过程中,如果遇到有边沿检测信号,需要在In_Out类型中增加参数数目。在使用功能块(FB)编程时,不同的调用应该使用不同的数据块。工程实训中心第5讲S7-300PLC结构化编程为功能块(FB)定义参数及类型In类型参数工程实训中心第5讲S7-300PLC结构化编程为功能块(FB)定义参数及类型Out类型参数In_Out类型参数工程实训中心第5讲S7-300PLC结构化编程功能块(FB)编程工程实训中心第5讲S7-300PLC结构化编程功能块(FB)编程工程实训中心第5讲S7-300PLC结构化编程OB1编程工程实训中心第5讲S7-300PLC结构化编程OB1编程工程实训中心第5讲S7-300PLC结构化编程例题:皮带机的启动与停止在码头有一组皮带传送机,由4条传送带组成,具体控制要求如下:每条传送带分别有一个启动按钮、一个停止按钮、一个运行反馈信号和一个过载信号,如果启动输出信号发出一段时间后,电机运行信号没有反馈(用接触器触点检测),则启动输出信号被取消,同时指示灯以2HZ频率闪烁,按下停止按钮并释放,该报警消除;当有过载信号产生时电机停止运行,同时指示灯以1HZ频率闪烁。工程实训中心第5讲S7-300PLC结构化编程控制过程分析与结构规划In类型:启动信号:1个停止信号:1个反馈检测:1个过载信号:1个定时器:1个定时时间:1个Out类型:驱动信号:1个指示灯:1个In_Out类型:2Hz闪烁信号:1个1Hz闪烁信号:1个故障保持信号:1个根据实际情况,还需要增加两个边沿检测信号,增加到In_Out类型中。工程实训中心第5讲S7-300PLC结构化编程为功能块(FB)定义参数及类型工程实训中心第5讲S7-300PLC结构化编程功能块(FB)编程工程实训中心第5讲S7-300PLC结构化编程功能块(FB)编程工程实训中心第5讲S7-300PLC结构化编程多重实例编程(1)定义静态变量新建功能块(FB),在新建功能块(FB)中插入静态变量(STAT),名称自定,数据类型选择为FB(nr),然后将(nr)用需要多次使用的功能块(FB)序号替代。工程实训中心第5讲S7-300PLC结构化编程多重实例编程(2)为新建功能块(FB)编程选取指令树下的“多重实例”并打开,能看到已经定义的所有的静态变量(STAT)。选取静态变量,静态变量被放置到程序段中。工程实训中心第5讲S7-300PLC结构化编程主程序(OB1)编程在主程序中调用还有多重实例的功能块(FB),并定义其所需要的数据块。工程实训中心第5讲S7-300PLC结构化编程多重实例的背景数据块工程实训中心第5讲S7-300PLC结构化编程END