|
要自己创建FB块或FC块。
在FB的局部变量表中,建立块内使用的各种变量,INPUT,OUTPUT,TEMP,等。
还需要自建一些UDT类型,变量引用。
自己做块程序,需要一些实际编程经验才行。
FB块程序调用,建立调用的背景数据块。
FC块的话,内部的局部变量只保持一个周期有效,FB块内部的变量不同,这是两者的区别。
STEP 7编程语言:LAD 梯形图/FBD功能块图/STL语句表,更加丰富,更加灵活,但对初学者比较难以理解,当然某些语言不能用LAD表达。
块编辑的启动:选择所需编程语言,双击打开需编辑的块,如OB1或FC1等。当采用LAD或FBD编程语言时,可用工具条来插入简单的程序文件,当采用STL,则可用在线帮助得到有关语言的语法和功能——HELP-Help on STL。
编程器组成:声明表:属于块,为块声明变量和参数;代码区:包含程序本身;编程元件:可选打开或关闭,内容依赖于所选择的编程语言,双击插入或拖拉插入。
VIEW菜单:可切换到另一种语言,并可实现LAD/FBD/STL之间的转换,要知道,LAD/FBD转换成STL的,在语句表中可能不是最有效程序。而STL转换成其他则不一定行,转换不了的仍用语句表示,转换过程绝不会丢失程序。
其他菜单由于篇幅较大,请最好结合教材及软件自己熟悉。
在讨论调用块前先介绍一下OB1块——主循环块,绝对不能改名或删除,它是由操作系统循环调用,可以访问其他的S7程序块,它包括自身程序和其他块的调用。所以,当我们编辑好一个块以后,如FC1,为了让新块集成在CPU中的循环程序中,必须在OB1中调用。即在OB1中CALL F1。 子程序(新块FC 1)执行的条件有以下三个:已经下载到plc中,必须在OB1调用,PLC处于运行状态。 下载到实际的PLC时,我们可以选择所有块或其中的一个或几个,再Download到PLC中。
程序的执行过程:当PLC得电或从STOP切换到RUN模式,CPU会执行一次全启动(使用OB100)在全启动期间,操作系统清除非保持位存储器、定时器和计数器,删除中断堆笺和块堆笺,复位所有保存的硬件中断,并启动扫描循环监视时间。
CPU的循环操作包括三个主要部分:CPU检查输入信号的状态并刷新过程影象输入表(PII..);执行用户程序,也就是OB1中的程序及一些事件(中断等);把过程输出影象输出表(PIQ)写到输出模块。上面所提到的PII/PIQ是CPU中特定的存储器,用来保存输入模块/输出模块的信号,在用户程序中检查时,可以保证在一个扫描周期内为同样的信号状态。
程序结构:上面曾经提到过,一个比较简单的程序,我们可以不用各种子程序块(如FC.FB),而是直接把整个程序直接写在一个块上(通常是OB1主块上),CPU逐条的处理指令,我们称这种叫线形编程;而对稍微有点复杂的程序,我们可以把它分成几个块,每块包含处理一部分任务的程序,在每一个块中可以进一步分解、成几个段,可以为相同类型的段生成段模块,组织块OB1包含按顺序调用其他块的指令,我们把这种方法叫分块编程;另外,对可重复使用的功能装入单个块中,OB1(或其他块)调用这些块并传递相关参数,这种方法叫结构化编程。用户块(程序块)包括程序代码和用户数据,在结构化程序中,一些块循环调用处理,一些块需要时才调用。程序块共有组织块(OB)、功能块(FB)、功能(FC)、系统功能块(SFB)和系统功能(FC)5种,其中系统块是在CPU操作系统中预先定义好的功能和功能块,这些块不占用用户程序空间。
在下节讨论位指令前先讨论一下SIEMENS的模块地址:在不带DP口的S7-300和不组态的S7-400采用固定槽位编址,使用带DP口的S7-300和S7-400,可以分配模块的起始地址。但要注意,由于CPU存储器复位后,参数和地址会丢失,这就意味着所有地址都回到和槽位有关的地址或是缺省地址。我们还是以S7-300为例,在S7-300中,机架上的插槽号简化了模块地址,模块的第一个地址由机架上的模块地址决定。一般槽1给电源,槽2是CPU,槽3为IM(接口模板)所用,4~11为I/O卡、CP卡和FM卡。他们的固定地址就是为每个槽位保留4个字节——就是说,槽4(第一块I/O卡),地址为0.0~3.7(共32位),槽5(第二块I/O卡)地址为4.0~7.7,假设第一卡是DI,那么他们的地址就是I0.0、I0.1、、、I3.7,若第二卡为DO卡,地址为Q4.0、Q4.1、、、、Q7.7,请注意,当使用16通道的DI/DO模块时,每个槽位就会失去两个字节(16位)。 |
|