S7-200的程序有三种:主程序、子程序、中断程序。
主程序只有一个,名称为OB1。
子程序可以达到64个,名称分别为SBR0~SBR63。子程序可以由子程序或中断程序调用。
中断程序可以达到128个,名称分别为INT0~INT127。中断方式有输入中断、定时中断、高速计数中断、通信中断等中断事件引发,当CPU响应中断时,可以执行中断程序。
由这三种程序可以组成线性程序和分块程序两种结构。
一、线性程序结构
_线性程序是指一个工程的全部控制任务都按照工程控制的顺序写在一个程序中,比如写在OB1中。程序执行过程中,CPU不断地扫描OB1,按照事先准备好的顺序去执行工作,如图:
显然,线性程序结构简单,一目了然。但是,当控制工程大到一定程序之后,仅仅采用线性程序就会使整个程序变得庞大而难于编制、难于调试了。
二、分块程序结构
分块程序是指一个工程的全部控制任务被分成多个小的任务块,每个任务块的控制任务根据具体情况分别放到子程序中,或者放到中断程序中。程序执行过程中,CPU不断地调用这些子程序或者被中断程序中断,
分块程序虽然结构复杂一些,但是可以把一个复杂的过程分解成多个简单的过程。对于具体的程序块容易编写,容易调试。从总体上看,分块程序的优势是十分明显的。
使用子程序,可使编程结构优化,最大限度地使用以往(或分享他人)的资源。
子程序须由主程序或其他子程序调用,内部计算时使用临时变量。而临时变量与全局变量之间衔接,就是通过参数调用。您可以看到西门子子程序变量声明栏中有各种类型,in、out、in-out、temp,可根据需要进行声明和定义符号(注意系统关键字)
可以在子程序中将“结果”声明成out类型,并定义符号,如“run”。调用时,可看到右侧的“引脚”run,可以填写您喜欢的任意地址,如 q0.0
1.PLC的子程序其实就是一个普通的调用函数,在汇编语言里面可以看做跳转到某段程序里面运行,结束后返回。
2.call子程序时,IN会把数值先送给分配好的局部变量,然后运行子程序。结束时,系统自动把分配好的局部变量传输给OUT。
3.局部变量是公共区间,所有程序中的局部变量都会使用这片区域。它保存的值不会程序调用的结束而自动清零,因此所有程序使用局部变量之前应该遵守先赋值,再使用的原则。同样的,应该警惕子程序返回CRET指令对局部变量OUT的影响,先赋值,再退出。
4.局部存储区是应该用于临时的,存放中间过程的。
5.对于计数,建议用保持寄存器V区间。
楼主最近还看过