浔之漫智控技术(上海)有限公司
西门子模块代理商
西门子S7-400可编程控制器CPU414-2西门子代理商 西门子总代理

西门子S7-400可编程控制器CPU414-2西门子代理商 西门子总代理

西门子S7-400可编程控制器CPU414-2西门子代理商 西门子总代理

西门子S7-400可编程控制器CPU414-2西门子代理商 西门子总代理

西门子200PLC的程序与存储器结构

①S7-200程序结构

  S7-200用户程序可以采用主、子程序结构或普通线性化结构。当采用普通线性化结构时,只需要编制主程序OB1:当采用主、子程序式分块结构时,PLC 程序由主程序(OB1)、子程序(SBRn)、中断程序(INTn)等组成。

  S7-200PLC的主、子程序结构对程序块的内部排列有规定的要求。主程序(OB1)必须进行编写,且位于程序的Zui前而;随后是子程序(SBRn)与中断程序(INTn)。在S7-200 中,子程序(SBRn)、中断程序(INTn)可以根据需要进行选用与编写。

  a.主程序。S7-200主程序代号规定为OB1。早期的S7-200 PLC用户程序不分块,需要在主程序之后接着安排子程序与中断程序,因此,主程序的结束应使用指令 MEND作为标记。但如果使用的是Micro/WTN32编程软件,主程序、子程序、中断程序都可以通过独立的区域进行编程,通过编程软件的自动编译功能可以对程序进行自动的编排与调整,主程序的结束无需再编写指令 MEND,如图5-51(a)所示。

  主程序OB1在S7-200PLC中为用户程序的组织、管理者,必须位于PLC用户程序的Zui前面以保证每次执行PLC循环时,首先对OB1进行扫描。

  b.子程序。S7-200 PLC的子程序代号为SBRn(n为十进制数值,根据CPU的不同,可以是0~63或0~127),子程序号用来区别不同的子程序。

  同样,早期的S7-200是在子程序结束处使用指令RET作为返回标记,子程序SBRn必须编在主程序OB1的结束指令MEND之后。采用了Micro/WIN32编程软件后,这些由编程软件进行自动编排与调整。

  子程序SBRn在S7-200PLC中为可选部分,可以编写也可以不编写。子程序的执行通过主程序OB1对该子程序的调用实现,并非每次PLC循环都需要执行全部子程序。

  c.中断程序。S7-200 PLC的中断程序代号为INTn(n为十进制数值,可以是0~127),用于区别不同的中断程序。早期的中断程序结束是使用指令 RETI作为返回标记,中断程序INTn同样必须编在主程序OB1的结束指令MEND之后,且习惯上是放在子程序SBRn之后(也可以放在子程序之前)。

  中断程序INTn在S7-200中同样为可以选择的部分,它需要通过主程序OB1的调用才能执行,并非每次PLC循环都需要执行全部中断程序。

  S7-200的程序结构与执行过程如图5-51(c)所示。

PLC程序结构

  d.局部变量堆栈。在进行PLC程序设计时,程序中有很多为了简化逻辑块结构而设置的临时状态、数据存储单元,这些存储单元实际上只是为了方便编程、检查而设的临时存储单元,它与逻辑外部的程序无关,在S7中将其称为"局部变量"或"临时变量(Temp)"。

  根据需要,设计者可以在S7-200的OB1、SBRn、INTn中使用"临时变量"。"临时变量"存储在局部变量数据堆栈(L)中,这一区域为全部程序块所公用,只可以用于 OB1或SBRn、INTn块内部使用的中间运算结果寄存(这些中间运算结果不可以用于块外部)。局部变量堆栈在程序块执行完成后,数据将被其他逻辑所需要的内容所替代。

  如果需要保存可以用于其他逻辑块的状态,应使用PLC的内部标志寄存器M或变量存储器。

  ②S7-200 PLC的存储器结构

  编制完成的PLC用户程序以及PLC执行程序所需要的数据、执行过程中产生的中间状态等都需要通过存储器进行存储,为了使读者进一步了解CPU的内部管理情况,现将S7-200的存储器结构介绍如下。

  a.S7-200存储器类型。S7-200 PLC可以采用多种形式的存储器来进行PLC程序与数据的存储,以防止数据的丢失。S7-200可以使用的存储器主要有如下类型。

  (a)RAM:CPU模块本身带有动态数据存储器(RAM)。RAM用于存储PLC的运算、处理结果等数据。根据需要,RAM的数据可以通过电容器或电池盒(选件)进行保持,但其存储时间较短,一般只能保持几天。

  (b)EEPROM(或Flash ROM):除 RAM外,CPU模块木身带有的保持型存储器(EEPROM或Flash ROM),可以进行数据的yongjiu性存储。保持型存储器用于存储PLC用户程序、PLC参数等重要数据;根据需要,也可以将PLC程序执行过程中所产生的局部变量V、内部标志M、定时器T、计数器C等保存在保持型存储器中。

  (c)存储器卡:存储器卡在S7-200中为可选件,用户可以根据需要选用。存储器卡为保持型存储器,可以作为PLC保持型存储器的扩展与后备,用于保存PLC用户程序、PLC 参数、变量V、内部标志M、定时器T、计数器C等。

  b.存储器分区。S7-200的内部存储器分为程序存储区、数据存储区、参数存储区。其中,程序存储区用于存储PLC用户程序;数据存储区用于存储PLC运算、处理的中间结果(如输入输出映像,标志、变量的状态,计数器、定时器的中间值等);参数存储区用于存储PLC配置参数(包括程序保护密码、地址分配设定、停电保持区域的设定等)。

  3个区的作用以及相互间的关系如图5-52所示。

S7-200存储器区域的作用及相互关系西门子200PLC四则运算指令程序

S7-200/300/400 PLC的四则运算指令基本相同,主要是对两个操作数的加、减、乘、除运算、操作数可以是整数、双整数、浮点数等。S7-200与S7-300/400PLC的指令格式相似,梯形图程序格式如图3-84所示。

四则运算指令程序格式

  图3-84 四则运算指令程序格式

  (a)S7-200 PLC四则运算程序格式(b)S7-300/400 PLC四则运算程序格式

  图中的IN1为四则运算中的被加数、被减数、被乘数、被除数;IN2为加数、减数、乘数、除数;OUT 为运算结果存储器地址。

  从图3-84中可见,尽管S7-200与S7-300/400PLC的梯形图指令相同,但从转换后的指令表可以看出两者在执行过程中存在有差异。

  (1) S7-200 PLC的执行过程如下:

  1) 将操作数1(被加数、被减数、被乘数、被除数)移动到结果存储器。

  2) 将结果存储器(操作数1)与操作数2(加数、减数、乘数、除数)进行运算,并将运算结果存储到结果存储器中。

  (2) S7-300/400 PLC的执行过程如下:

  1) 将操作数1(被加数、被减数、被乘数、被除数)读入到累加器1中。

  2) 将操作数2(加数、减数、乘数、除数)读人到累加器1中,原累加器1中的操作数1移动到累加器2中。

  3) 累加器2中的内容与累加器1运算,运算结果存储在累加器1中。

  4) 累加器1的运算结果传送到结果存储器中。

  (3) 四则运算编程时应注意以下几点:

  1) 在S7-200 PLC中,整数、双整数的运算结果仍然为整数与双整数,因此,在程序中应注意防止因运算结果溢出而导致的执行错误。

  2) 在S7-200PLC中整数、双整数的除法运算DIV_I、DIV_DI指令,以及S7-300/400PLC的DIV_DI 指令,其除法运算的结果不保留余数。

  3) 对于S7-200PLC的整数除法,如果需要余数,可以使用DIV指令。DIV指令要求的输出存储器OUT 为32位,执行DIV指令后,两个整数的除法运算可以得到32位运算结果,输出存储器OUT的高16位用于存储余数,低16位用于存储商。

  4) S7-200PLC的双整数除法无法保留余数。

  5) 对于S7-300/400PLC的整数除法,可以自动生成余数,执行DIV_I指令后,累加器1的高16位存储余数,低16位存储商。

  6) 对于S7-300/400 PLC的双整数除法,如果需要余数,可以在利用DIV_DI指令求出商后,再使用MOD指令求余数。执行MOD指令后,商被舍去,累加器1存储余数。

  7) 除法运算的除数不能为“0”。

  (4) 浮点数的函数运算。在S7-200/300/400 PLC中,浮点数可以进行函数运算。函数运算包括正弦余弦、正切、平方根、自然对数、指数等运算,任S7-300/400PLC中还可以进行平方、反正弦、反余弦、反正切、求juedui值等运算。

  对于浮点数的函数运算,为了得到正确的运算结果,同样应遵守函数运算的基本规定与要求,保证程序中操作数取值范围的正确性。

  (5) 增量指令。在S7-200 PLC中,除可以使用以上数据运算指令外,还可以通过专门的指令对字节字、双字进行增“1”(Increment)与减“1”(Decrement)运算。这些指令的使用十分简单,可以按照表3-22的格式直接编程。

  除以上常用的功能指令外,S7还有其他部分功能指令,如程序控制指令,S7-200PLC中的表指令、字符串指令、特殊计数指令等。这些指令有的使用较少,有的将在S7PLC的特殊功能指令中给予说明,因此,这里不再进行介绍,需要时可以参见Siemens手册相关的内容。


展开全文
优质商家推荐 拨打电话