1、S7-200系列PLC主机中有两类指令集:IEC11313指令集是国际电工委员会制定的PLC国际标准语言,只能用梯形图(LAD)和功能块图(FBD)编程语言编程,通常指令执行时间较长。SIMATIC指令集是西门子公司为S7-200 PLC设计的编程语言,该指令通常执行时间短,而且可以用梯形图(LAD)、功能块图(FBD)和语句表(STL)三种编程语言。本章讲解SIMATIC指令集中的常用指令及使用方法。,第三节 S7-200 PLC的指令系统,一、 S7-200 PLC编程基础 (一) 编程语言,SIMATIC指令集是西门子公司专为S7-200 PLC设计的编程语言。使用SIMATIC指令集,
2、可以用梯形图(LAD)、功能块图(FBD)和语句表(STL)编程语言编程。,1. 梯形图(LAD)编程语言,梯形图(LAD)是与电气控制电路相呼应的图形语言。它沿用了继电器、触头、串并联等术语和类似的图形符号。梯形图按自上而下,从左到右的顺序排列,最左边的竖线称为起始母线也叫左母线,然后按一定的控制要求和规则连接各个接点,最后以继电器线圈(或再接右母线)结束,称为一逻辑行或叫一“梯级”。通常一个梯形图中有若干逻辑行(梯级),形似梯子,如图5-1所示。,右母线省略,2. 功能块图(FBD)编程语言,对应图5-1中的I0.1长闭触点,功能块图(FBD)类似于普通逻辑功能图,它沿用了半导体逻辑电路的
3、逻辑框图的表达方式。一般用一种功能方框表示一种特定的功能,框图内的符号表达了该功能块图的功能。功能块图通常有若干个输入端和若干个输出端。输入端是功能块图的条件,输出端是功能块图的运算结果。,3. 语句表(STL)编程语言,语句表(STL)是用助记符来表达PLC的各种控制功能的。它类似于计算机的汇编语言。这种编程语言可使用简易编程器编程,但比较抽象,一般与梯形图语言配合使用,互为补充。,语句表(STL)可以编写梯形图(LAD)或功能块图(FBD)无法实现的程序。,(二) 数据类型,1. 基本数据类型,S7-200 PLC的指令参数所用的基本数据类型有:1位 布尔型(BOOL)8位 字节型(BYT
4、E)16位 无符号整数型(WORD)16位 有符号整数型(INT)32位 无符号双字整数型(DWORD)32位 有符号双字整数型(DINT)32位 实数型(REAL)。,2. 数据长度与数值范围,不同的数据类型具有不同的数据长度和数值范围。在上述数据类型中,用字节(B)型、字(W)型、双字(D)型分别表示8位、16位、32位数据的数据长度。S7-200 编程时应注意操作数的数据类型和指令标识符相匹配。如整数乘法指令的操作数是字型数据;数据传送指令的操作数可以是字节或字或双字型数据。,(三) 存储器区域,PLC的存储器分为程序区、系统区、数据区。,1、程序区用于存放用户程序,存储器为EEPROM
5、。 2、系统区用于存放有关PLC配置结构的参数,如PLC主机及扩展模块的I/O配置和编址、配置PLC站地址,设置保护口令、停电记忆保持区、软件滤波功能等,存储器为EEPROM。 3、数据区是S7-200 CPU提供的存储器的特定区域。它包括输入映象寄存器(I)、输出映像寄存器(Q)、变量存储器(V)、内部标志位存储器(M)、顺序控制继电器存储器(S)、特殊标志位存储器(SM)、局部存储器(L)、定时器存储器(T)、计数器存储器(C)、模拟量输入映像寄存器(AI)、模拟量输出映像寄存器(AQ)、累加器(AC)、高速计数器(HC)。存储器为EEPROM和RAM。,1、数据区存储器的地址表示格式,(
6、1)位地址格式数据区存储器区域的某一位的地址格式为:Ax.y必须指定存储器区域标识符A、字节地址x及位号y。,存储器是由许多存储单元组成,每个存储单元都有惟一的地址,可以依据存储器地址来存取数据。数据区存储器地址的表示格式有位、字节、字、双字地址格式。,位寻址格式,例: I4.5,I是变量存储器的区域标识符(输入映像寄存器),4是字节地址,5是位号,在字节地址4与位号5之间用点号“.”隔开。,(2)字节、字、双字地址格式 数据区存储器区域的字节、字、双字地址格式为:ATx。必须指定区域标识符A、数据长度T以及该字节、字或双字的起始字节地址x。图中,用VB100、VW100、VD100分别表示字
7、节、字、双字的地址。VW100由VB100、VB101两个字节组成;VD100由VB100-VB103四个组成。(V是存储器的变量存储器区),(3)其他地址格式 数据区存储器区域中,还包括定时器存储器(T)、计数器存储器(C)、累加器(AC)、高速计数器(HC)等,它们是模拟相关的电器元件的。它们的地址格式为:Ay。由区域标识符A和元件号y组成。例:T24表示某定时器的地址,T是定时器的区域标识符,24是定时器号,同时T24又可表示此定时器的当前值。,(1)输入/输出映像寄存器(I/Q) 输入映像寄存器(I)PLC的每一个输入端子与输入映像寄存器(I)的相应位相对应。,2. 数据区存储器区域,
8、输入点的状态,在每次扫描周期开始(或结束)时进行采样,并将采样值存于输入映像寄存器,作为程序处理时输入点状态的依据。输入映像寄存器的状态只能由外部输入信号驱动,而不能在内部由程序指令来改变。输入映像寄存器(I)的地址格式为:位地址:I字节地址.位地址,如I0.1。字节、字、双字地址:I数据长度起始字节地址,如IB4、IW6、ID10。CPU226模块输入映像寄存器的有效地址范围为:I(0.015.7);IB(015);IW(014);ID(012)。, 输出映像寄存器(Q) 每一个输出模块的端子与输出映像寄存器的相应位相对应。CPU将输出判断结果存放在输出映像寄存器中,在扫描周期的结尾,CPU
9、以批处理方式将输出映像寄存器的数值复制到相应的输出端子上。输出映像寄存器(Q)地址格式为:位地址:Q字节地址.位地址,如Q1.1字节、字、双字地址:Q数据长度起始字节地址,如QB5、QW8、QD11。CPU226模块输出映像寄存器的有效地址范围为:Q(0.015.7);QB(015 );QW(014);QD(012)。,在程序的执行过程中,对于输入或输出的存取通常是通过映像寄存器,而不是实际的输入、输出端子。系统在程序执行期间完全与外界隔开,提高了系统抗干扰能力。S7-200 CPU执行有关输入输出程序时的操作过程如图所示。,S7-200 CPU输入、输出的操作,(2)内部标志位存储器(M)
10、内部标志位存储器(M)用来存放中间操作状态,或存储其他相关的数据。内部标志位存储器(M)以位为单位使用,也可以字节、字、双字为单位使用。内部标志位存储器(M)的地址格式为:位地址:M字节地址 .位地址,如M26.7。字节、字、双字地址:M数据长度起始字节地址,如MB11、MW23、MD26。CPU226模块内部标志位存储器的有效地址范围为:M(0.031.7);MB(031);MW(030);MD(028)。,(3) 变量存储器(V)变量存储器(V):存放全局变量、存放程序执行过程中控制逻辑操作的中间结果或其他相关的数据。变量存储器是全局有效。全局有效是指同一个存储器可以在任一程序分区(主程序
11、、子程序、中断程序)被访问。V存储器的地址格式为:位地址:V字节地址.位地址,如V10.2。字节、字、双字地址:V数据长度起始字节地址,如VB20、VW100、VD320。CPU226模块变量存储器的有效地址范围为: V(0.05119.7);VB(05119);VW(05118);VD(05116),(4)局部存储器(L)局部存储器用来存放局部变量。局部存储器是局部有效的。 局部有效:是指某一局部存储器只能在某一程序分区(主程序或子程序或中断程序)中使用。S7-200 PLC提供64个字节局部存储器,局部存储器可用作暂时存储器或为子程序传递参数。局部存储器(L)的地址格式为:位地址:L字节地
12、址.位地址,如L0.0。字节、字、双字地址:L数据长度起始字节地址,如LB33、LW44、LD55。CPU226模块局部存储器的有效地址范围为:L(0.063.7);LB(063);LW(062);LD(060)。,(5)顺序控制继电器存储器(S)顺序控制继电器(S):又称状态组件,与顺序控制继电器指令配合使用,用于顺序控制(或步进控制)。顺序控制继电器存储器(S)的地址格式为:位地址:S字节地址.位地址,如S3.1。字节、字、双字地址:S数据长度起始字节地址,如SB4、SW10、SD21。CPU226模块顺序控制继电器存储器的有效地址范围为:S(0.031.7);SB(031);SW(030
13、);SD(028)。,(6)特殊标志位存储器(SM)特殊标志位(SM):即特殊内部线圈。它是用户程序与系统程序之间的界面,用于CPU与用户之间交换信息。特殊标志位区域分为只读区域(SM0.0SM29.7,头30个字节为只读区)和可读写区域,在只读区特殊标志位,用户只能利用其触点。 特殊标志位存储器(SM)的地址表示格式为:位地址:SM字节地址.位地址,如SM0.1。字节、字、双字地址:SM数据长度起始字节地址,如SMB86、SMW100、SMD12。CPU226模块特殊标志位存储器的有效地址范围为:SM(0.0549.7);SMB(0549);SMW(0548); SMD(0546)。,(7)
14、定时器存储器(T) 定时器是模拟继电器控制系统中的时间继电器。S7-200 PLC定时器的时基有三种:1ms、10ms、100ms。定时器存储器地址表示格式为:T定时器号,如T24。S7-200 PLC定时器存储器的有效地址范围为:T(0255)。(8)计数器存储器(C)计数器是累计其计数输入端脉冲电平由低到高的次数,有三种类型:增计数、减计数、增减计数。计数器存储器地址表示格式为:C计数器号,如C3。S7-200 PLC计数器存储器的有效地址范围为:C(0255)。,(9)模拟量输入映像寄存器(AI)模拟量输入模块将外部输入的模拟信号的模拟量转换成1个字长的数字量,存放在模拟量输入映像寄存器
15、(AI)中。模拟量输入(AI)的值为只读值。模拟量输入映像寄存器(AI)的地址格式为:AIW起始字节地址,如AIW4。模拟量输入映像寄存器(AI)的地址必须用偶数字节地址(如AIW0,AIW2,AIW4)来表示。CPU226模块模拟量输入映像寄存器(AI)的有效地址的范围为:AIW(062)。,(10)模拟量输出映像寄存器(AQ)CPU运算的相关结果存放在模拟量输出映像寄存器(AQ)中,供D/A转换器将1个字长的数字量转换为模拟量。模拟量输出映像寄存器(AQ)中的数字量为只写值。模拟量输出映像寄存器(AQ)的地址格式为:AQW起始字节地址,如AQW10。模拟量输出映像寄存器(AQ)的地址必须用
16、偶数字节地址(如AQW0,AQW2,AQW4)来表示。CPU226模块模拟量输出映像寄存器(AQ)的有效地址的范围为:AQW(062)。,(11)累加器(AC)累加器:是用来暂时存储计算中间值的存储器,也可向子程序传递参数或返回参数。S7-200 CPU提供了4个32位累加器(AC0、AC1、AC2、AC3)。累加器的地址格式为:AC累加器号,如AC0。CPU226模块累加器的有效地址范围为:AC(03)。累加器是可读写单元,可以按字节、字、双字存取累加器中的数值。,(12)高速计数器(HC)高速计数器用来累计高速脉冲信号。当高速脉冲信号的频率比CPU扫描速率更快时,必须要用高速计数器计数。高
17、速计数器的当前值寄存器为32位(bit),读取高速计数器当前值应以双字(32位)来寻址。高速计数器的当前值为只读值。高速计数器地址格式为:HC高速计数器号,如HC1。CPU226模块高速计数器的有效地址范围为:HC(05)。,(四)寻址方式,1.立即寻址,寻址方式:指令中如何提供操作数或操作数地址,称为寻址方式。 S7-200 PLC的寻址方式有:立即寻址、直接寻址、间接寻址。,立即寻址方式:指令直接给出操作数,操作数紧跟着操作码。CPU以二进制方式存储所有常数。指令中可用十进制、十六进制、ASCII码或浮点数形式来表示。表示格式举例如下: 十进制常数:30112 十六进制常数:16#42F
18、ASCII常数:INPUT 实数或浮点常数:+1.1E-10 二进制常数:2#0101 1110,#为常数的进制格式说明符,无格式说明符则默认十进制,2.直接寻址,直接寻址方式:指令直接使用存储器或寄存器的元件名称和地址编号,根据这个地址就可以立即找到该数据。即指令中给出了数据的地址。指令中,数据类型应与指令标识符相匹配。 不同数据长度的寻址指令举例如下: 位寻址:AND Q5.5 字节寻址:ORB VB33,LB21 字寻址:MOVW AC0,AQW2 双字寻址:MOVD AC1,VD200,3. 间接寻址,间接寻址方式:指令给出了存放操作数地址的存储单元的地址(也称地址指针)。 指令给出存
19、放数的地址的地址。可作为地址指针的存储器有:V、L、AC(13)可间接寻址的存储器区域有:I、Q、V、M、S、T(仅当前值)、C(仅当前值)。,存取连续地址的存储单元数据时:(1)建立指针 间接寻址前,应先建立指针。指针为双字长,存放所要访问的存储单元(最大为双字型32位)的物理地址。只能使用变量存储器(V)、局部存储器(L)或累加器(AC1、AC2、AC3)作为指针,AC0不能用作间接寻址的指针。,例如:MOVD &VB200,AC1说明: VB200只是一个直接地址编码,并不是它的物理地址。 地址符号“&”与VB200组合表示所对应单元的32位物理地址 。 指令中的第二个地址数据长度必须是
20、双字长,如:AC、LD和VD。 这里地址“VB200”要用32位表示,因而必须使用双字传送指令(MOVD)。,指针,地址符号,(2)间接存取 下面两条指令是建立指针和间接存取的应用方法:MOVD &VB200,AC1MOVW *AC1,AC0“*”号表示该操作数(AC1)为指针。 执行指令MOVW *AC1,AC0,把指针中的内容值(VB200)作为地址,由于指令MOVW的标识符是“W”,因而指令操作数的数据长度应是字型,把地址VB200、VB201处2个字节的内容(1234)传送到AC0。,间接寻址,把VB200的地址送入AC1建立指针,把指针处的值送到AC0,MOVD &VB200,AC1
21、MOVW *AC1,AC0“*”号表示该操作数(AC1)为指针。 执行指令MOVW *AC1,AC0,把指针中的内容值(VB200)作为地址,由于指令MOVW的标识符是“W”,因而指令操作数的数据长度应是字型,把地址VB200、VB201处2个字节的内容(1234)传送到AC0。,(3)修改指针 存取连续地址的存储单元中数据时,通过修改指针可以非常方便地存取数据。INCD AC1INCD AC1 MOVW *AC1,AC0用两次自增指令INCD AC1,将AC1指针中的值(VB200)修改为VB202后,指针即指向新地址VB202。执行指令MOVW*AC1,AC0 ,这样就可将VB202、VB
22、203二个字节的数据(5678)传送到AC0。,修改指针值时,应根据存取的数据长度来进行调整。若对字节进行存取,指针值加1(或减1);若对字进行存取、或对定时器、计数器的当前值进行存取,指针值加2(或减2);若对双字进行存取,则指针值加4(或减4)。,修改指针,把指针增加两次,指向下一个字,把AC1(VW202)所指向的字数值送到AC0,存取连续地址的存储单元数据时:,建立指针,间接存取,修改指针,间接存取,“*”号表示该操作数(AC1)为指针。,地址符号“&”与VB200组合表示所对应单元的32位物理地址。,(五) 用户程序结构,用户程序可分为三个程序分区:主程序、子程序(可选)和中断程序(
23、可选)。,主程序(OB1):是用户程序的主体。CPU在每个扫描周期都要执行一次主程序指令。子程序:是程序的可选部分,只有当主程序调用时,才能够执行。合理使用子程序,可以优化程序结构,减少扫描时间。中断程序:是程序的可选部分,只有当中断事件发生时,才能够执行。中断程序可在扫描周期的任意点执行。,(六) 编程的一般规则,1. 网络 在梯形图(LAD)中,程序被分成称为网络的一些程序段。每个梯形图网络是由一个或多个梯级组成。,功能块图(FBD)中,使用网络概念给程序分段。 语句表(STL)程序中,使用“网络”这个关键词对程序分段。对梯形图、功能块图、语句表程序分段后,就可通过编程软件实现它们之间的相互转换。,2. 梯形图(LAD)/功能块图(FBD)梯形图中:左、右垂直线称为左、右母线。通常将右母线省略。在左、右母线之间是由触点、线圈或功能框组合的有序排列。梯形图的输入总是在图形的左边,输出总是在图形的右边,因而触点与左母线相连,线圈或功能框终止右母线,从而构成一个梯级。在一个梯级中,不允许“短路”、“开路”,也不允许“能流”反向流动。功能块图中:输入总是在框图的左边,输出总是在框图的右边。,