S7-300 S7-400语句表(STL)编程手册51-100
- 格式:pdf
- 大小:250.35 KB
- 文档页数:50
第一章 S7-300/400的基本结构1、 S7-300/400属于模块式PLC,主要由机架、CPU模块、信号模块、功能模块、接口模块、通信处理器、电源模块和编程设备(工程师、操作员站和操作屏)组成。
图1-1 PLC控制系统示意图PLC的主要生产厂家:德国的西门子(Siemens)公司,美国Rockwell公司所属的AB公司,GE-Fanuc公司,法国的施耐德(Schneider)公司,日本的三菱和欧姆龙(OMRON)公司。
PLC的工作过程表1-1 逻辑运算关系表与或非Q4.0=I0.0*I0.1 Q4.1 = I0.2+I0.3 Q4.2 =/I0.4I0.0 I0.1 Q4.0 I0.2 I0.3 Q4.1 I0.4 Q4.20 0 0 0 0 0 0 10 1 0 0 1 1 1 01 0 0 1 0 11 1 1 1 1 1在CPU模块上有存储器(用来存放系统程序、用户程序、逻辑变量和其它一些信息),包括ROM和RAM。
可通过扩展槽扩展用户RAM。
l RAM:主程序区OB1+子程序区(FB、FCB、定时中断块等)断电时由锂电池供电(几年)以免RAM中信息丢失。
锂电池电压< 规定值,灯报警,换电池(期间靠电容充电几分钟)。
l PLC采用循环执行用户程序的方式。
OB1是用于循环处理的组织块(主程序),它可以调用别的逻辑块,或被中断程序(组织块)中断。
在起动完成后,不断地循环调用OB1,在OB1中可以调用其它逻辑块(FB, SFB, FC 或SFC)。
循环程序处理过程可以被某些事件中断。
在循环程序处理过程中,CPU并不直接访问I/O模块中的输入地址区和输出地址区,而是访问CPU内部的输入/输出过程映像区。
批量输入、批量输出。
梯形图中Q4.0的线圈(称为内部线圈)―通电‖时,对应的输出过程映像位为1状态。
信号经输出模块隔离和功率放大后,继电器型输出模块中对应的硬件继电器的线圈(外部线圈)通电,其常开触点闭合,使外部负载通电工作。
S7-300/400 的编程语言与指令系统1. S7-300/400 的编程语言1.1 PLC 编程语言的国际标准IEC 61131 是PLC 的国际标准,1992~1995 年发布了IEC 61131标准中的1 ~4 部分,我国在1995 年11 月发布了GB/T15969-1/2/3/4(等同于IEC 61131-1/2/3/4)。
IEC 61131-3 广泛地应用PLC、DCS 和工控机、“软件PLC”、数控系统、RTU 等产品。
定义了5 种编程语言1) 指令表IL(Instruction list):西门子称为语句表STL。
2) 结构文本ST(Structured text):西门子称为结构化控制语言(SCL)。
3) 梯形图LD(Ladder diagram):西门子简称为LAD。
4) 功能块图FBD (Function block diagram):标准中称为功能方框图语言。
5) 顺序功能图SFC(Sequential function chart):对应于西门子的S7Graph。
1.2 STEP 7 中的编程语言梯形图、语句表和功能块图是3 种基本编程语言,可以相互转换。
1.顺序功能图(SFC) :STEP 7 中的S7 Graph2.梯形图(LAD)直观易懂,适合于数字量逻辑控制。
“能流”(Power flow)与程序执行的方向。
3. 语句表(STL):功能比梯形图或功能块图强。
4.功能块图(FBD) “LOGO!”系列微型PLC 使用功能块图编程。
5.结构文本(ST):STEP 7 的S7 SCL(结构化控制语言)符合EN61131-3 标准。
SCL 适合于复杂的公式计算、复杂的计算任务和最优化算法,或管理大量的数据等。
6.S7 HiGraph 编程语言图形编程语言S7 HiGraph 属于可选软件包,它用状态图(state graphs)来描述异步、非顺序过程的编程语言。
7.S7 CFC 编程语言可选软件包CFC(Continuous Function Chart,连续功能图)用图形方式连接程序库中以块的形式提供的各种功能。
s7-300PLC编程语句手册汇总S7-300是一种可编程控制器,它有自己的编程语言和指令系统。
在使用S7-300进行编程时,需要了解其语言和指令系统的特点和用法。
S7-300的编程语言包括LAD(梯形图)、FBD(功能块图)和STL(结构化文本语言)。
其中,LAD是最常用的一种语言,它使用梯形图形式来表示程序的逻辑关系。
FBD则是一种图形化的编程语言,它使用不同的功能块来表示程序的逻辑关系。
STL则是一种类似于C语言的文本语言,它使用结构化的语法来表示程序的逻辑关系。
S7-300的指令系统包括基本指令和扩展指令。
基本指令包括逻辑指令、算术指令、移位指令等,用于实现程序的基本功能。
扩展指令则是在基本指令的基础上进行扩展,用于实现更加复杂的功能。
在使用S7-300进行编程时,需要根据具体的应用场景选择合适的编程语言和指令。
同时,还需要注意编程的规范和标准,以确保程序的可靠性和稳定性。
总之,S7-300的编程语言和指令系统是其核心功能之一,掌握其特点和用法对于进行编程工作非常重要。
在实际应用中,需要根据具体的需求和要求,选择合适的编程语言和指令,以实现程序的优化和效率提升。
STEP 7编程语言介绍STEP 7是一种用于编程可编程逻辑控制器(PLC)的工具。
它被广泛应用于自动化控制系统中,包括工厂自动化、机器人控制、物流自动化、建筑自动化等领域。
数据类型在STEP 7中,有多种数据类型可供使用,包括整型、浮点型、布尔型、字符型等。
这些数据类型可用于存储和处理不同类型的数据,以满足不同的应用需求。
参数数据类型在编写PLC程序时,需要指定参数的数据类型。
这些参数可以是输入、输出或内部数据。
参数的数据类型决定了它们可以存储的数据类型,以及它们可以执行的操作。
PLC用户存储区的分类及功能PLC用户存储区是用于存储程序和数据的区域。
它可以分为程序存储区和数据存储区。
程序存储区用于存储PLC程序,而数据存储区用于存储程序中使用的数据。
西门子编程PLC S7-200/300语句表助记符英文全称助记指令(英文全称意思) :指令含义1 、LD ( Lode 装载 ) :动合触点2、LDN ( Lode Not 不装载 ) : 动断触点3、A ( And 与动合) : 用于动合触点串联4、AN ( And Not 与动断 ) :用于动断触点串联5、O ( Or 或动合 ) :用于动合触点并联6、ON ( Or Not 或动断 ) : 用于动断触点并联7、= ( Out 输出 ) :用于线圈输出8、OLD ( Or Lode): 块或9、ALD ( And Lode): 块与10、LPS ( Logic Push ) :逻辑入栈11、LRD ( Logic Read ) :逻辑读栈12、LPP ( Logic Pop ) :逻辑出栈13、NOT ( not 并非 ) :非14、NOP ( No Operation Performed ) : 无操作15、AENO ( And ENO ) : 指令盒输出端ENO相与16、S ( Set 放置 ) : 置117、R ( Reset 重置,清零 ) :清零18、P ( uP 上升) :正跳变19、N ( dowN 下降) :负跳变20、TON ( On_Delay Timer ) :通电延时21、TONR ( Retentive On_Delay Timer ) : 有记忆通电延时型22、TOF ( Off_ Delay Timer ) :断电延时型23、CTU ( Count Up ) : 递增计算器24、CTD ( Count Down ) : 递减计数器25、CTDU ( Count Up/ Count Down ) :增减计数器26、ADD ( add 加 ) : 加注意 //ADD_I (_ I 表示整数) ADD_DI( DI表示双字节整数)ADD-R(R 表示实数)它们都是加运算只是数的大小不同!!后面有很多这样的我就略写了!27、SUB ( Subtract 减去,减少) :减28、MUL ( Multiply ) : 乘29、DIV ( Divide ) : 除30、SQRT ( Square root ) : 求平方根31、LN ( Napierian Logarithm 自然对数 ) : 求自然对数32、EXP ( Exponential 指数的 ) :求指数33、INC_B ( Increment 增加 ) :增134、DEC_B ( Decrement 减少 ) :减135、WAND_B ( Word and 与命令 ) :逻辑与//其中_B代表数据类型还有W(字节)、DW双字后面几个都是这样的。
3.8 INVI 对整数求反码(16 位)格式INVI说明使用对整数求反码指令(INVI),可以对累加器 1 低字中的 16 位数值求反码。
求反码指令为逐位转换,即“0”变为“1”,“1”变为“0”。
其结果保存在累加器 1 的低字中。
状态字BR CC 1 CC 0 OV OS OR STA RLO /FC 写:- - - - - - - - -举例STL 解释L IW8 INVIT MW10 // 将数值装入累加器 1 低字中。
// 对 16 位数求反码。
// 将结果传送到存储字 MW10。
内容累加器 1 低字位15... .. .. 0INVI 执行之前0110 0011 1010 1110 INVI 执行之后1001 1100 0101 00013.9 INVD 对双整数求反码(32 位)格式INVD说明使用对双整数求反码指令(INVD),可以对累加器 1 中的 32 位数值求反码。
求反码指令为逐位转换,即“0”变为“1”,“1”变为“0”。
其结果保存在累加器 1 中。
状态字BR CC 1 CC 0 OV OS OR STA RLO /FC 写:- - - - - - - - -举例STL 解释L ID8 INVDT MD10 // 将数值装入累加器 1 中。
// 对 32 位数求反码。
// 将结果传送到存储双字 MD10。
内容累加器 1 高字累加器 1 低字位31... .. .. ...16 15... .. .. 0INVD 执行之前0110 1111 1000 1100 0110 0011 1010 1110 INVD 执行之后1001 0000 0111 0011 1001 1100 0101 00013.10 NEGI 对整数求补码(16 位)格式NEGI说明使用对整数求补码指令(NEGI),可以对累加器 1 低字中的 16 位数值求补码。
求补码指令为逐位转换,即“0”变为“1”,“1”变为“0”;然后对累加器中的内容加“1”。
转换结果保存在累加器 1 的低字中。
求补码指令相当于该数乘以“-1”。
状态位 CC 1、CC 0、OS 和 OV 都设定为运算结果的一个功能。
状态字BR CC 1 CC 0 OV OS OR STA RLO /FC 写:- x x x x - - - -状态字生成CC 1 CC 0 OV OS结果 = 0 0 0 0 --32768 ≤结果≤-1 0 1 0 -32767 ≥结果≥1 1 0 0 -结果 = 2768 0 1 1 1举例STL 解释L IW8 NEGIT MW10 // 将数值装入累加器 1 低字中。
// 对 16 位数求补码。
// 将结果传送到存储字 MW10。
内容累加器 1 低字位15... .. .. 0NEGI 执行之前0101 1101 0011 1000 BEGI 执行之后1010 0010 1100 10003.11 NEGD 对双整数求补码(32 位)格式NEGD说明使用对双整数求补码指令(NEGD),可以对累加器 1 中的 32 位数值求补码。
求补码指令为逐位转换,即“0”变为“1”,“1”变为“0”;然后对累加器中的内容加“1”。
转换结果保存在累加器 1 中。
求补码指令相当于该数乘以“-1”。
指令的执行与 RLO 无关,而且对 RLO 没有影响。
状态位 CC 1、CC 0、OS 和OV 都设定为运算结果的一个功能。
状态字BR CC 1 CC 0 OV OS OR STA RLO /FC 写:- x x x x - - - -状态字生成CC 1 CC 0 OV OS结果 = 0 0 0 0 -- 2,147,483,648 ≤结果≤-1 0 1 0 -2,147,483,647 ≥结果≥ 1 1 0 0 -结果 = 2,147,483,648 0 1 1 1举例STL 解释L ID8 NEGDT MD10 // 将数值装入累加器 1 中。
// 对 32 位数求补码。
// 将结果传送到存储双字 MD10。
内容累加器 1 高字累加器 1 低字位31... .. .. ...16 15... .. .. 0NEGD 执行之前0101 1111 0110 0100 0101 1101 0011 1000 ITD 执行之后1010 0000 1001 1011 1010 0010 1100 1000 (X = 0 或1,该位不用于转换)3.12 NEGR 对浮点数求反(32 位,IEEE-FP)格式NEGR指令说明使用 NEGR(对 32 位 IEEE 浮点数求反)指令,可以对累加器 1 中的浮点数(32 位,IEEE-FP)求反。
该指令可转换累加器 1 中位 31 的信号状态(尾数的符号位)。
其结果保存在累加器 1 中。
状态字BR CC 1 CC 0 OV OS OR STA RLO /FC 写:- - - - - - - - -举例STL 解释L ID8 NEGRT MD10 // 将数值装入累加器 1 中(例如:ID 8 = 1.5E+02)。
// 将浮点数(32 位,IEEE FP)取反;结果保存到累加器 1 中。
// 将结果传送到存储双字 MD10(例如:结果 = -1.5E+02)。
3.13 CAW 交换累加器 1 低字中的字节顺序(16 位)格式CAW说明使用 CAW 指令,可以反转累加器 1 低字中的字节顺序。
结果保存在累加器 1的低字中。
累加器 1 的高字和累加器 2 保持不变。
状态字BR CC 1 CC 0 OV OS OR STA RLO /FC 写:- - - - - - - - -举例STL 解释L MW10 CAWT MW20 // 将存储字 MW10 的数值装入累加器1。
// 反转累加器 1 低字中的字节顺序。
// 将结果传送到存储字 MW20。
内容累加器 1 高字中的高字节累加器 1 高字中的低字节累加器 1 低字中的高字节累加器 1 低字中的低字节CAW 执行之前数值A 数值B 数值C 数值D CAW 执行之后数值A 数值B 数值D 数值C3.14 CAD 交换累加器 1 中的字节顺序(32 位)格式CAD说明使用 CAD 指令,可以反转累加器 1 中的字节顺序。
结果保存在累加器 1 中。
累加器 2 保持不变。
状态字BR CC 1 CC 0 OV OS OR STA RLO /FC 写:- - - - - - - - -举例STL 解释L MD10 CADT MD20 // 将存储双字 MD10 的数值装入累加器1。
// 反转累加器 1 中的字节顺序。
// 将结果传送到存储双字 MD20。
内容累加器 1 高字中的高字节累加器 1 高字中的低字节累加器 1 低字中的高字节累加器 1 低字中的低字节CAD 执行之前数值A 数值B 数值C 数值D CAD 执行之后数值D 数值C 数值B 数值A3.15 RND 取整格式RND说明RND 指令(32 位 IEEE 浮点数转换成为 32 位整数)将累加器 1 中的内容作为一个 32 位 IEEE 浮点数进行编译(32 位,IEEE-FP)。
使用该指令,可以将32 位 IEEE 浮点数转换成为一个 32 位整数(双整数),并将结果取整为最近的整数。
如果被转换数字的小数部分位于奇数和偶数结果中间,则该指令选择偶数结果。
如果有数值超出这一范围,则状态位 OV(溢出位)和 OS(存储溢出位)被置为“1”。
结果保存在累加器 1 中。
出错时,将不进行转换,并指示溢出(利用 NaN 或无法表示为一个 32 位整数的浮点数)。
状态字BR CC 1 CC 0 OV OS OR STA RLO /FC 写:- - - x x - - - -举例STL 解释L MD10 RNDT MD20 // 将浮点数装入累加器 1 低字中。
// 将浮点数(32 位,IEEE FP)转换为整数,并将结果取整。
// 将结果(双整数)传送到存储双字 MD20。
转换之前的数值转换之后的数值MD10 = "100.5" => RND => MD20 = "+100" MD10 = "-100.5" => RND => MD20 = "-100"3.16 TRUNC 截尾取整格式TRUNC说明TRUNC 指令(32 位 IEEE 浮点数转换成为 32 位整数)将累加器 1 中的内容作为一个 32 位 IEEE 浮点数进行编译。
使用该指令,可以将 32 位 IEEE 浮点数转换成为一个 32 位整数(双整数)。
其结果为被转换浮点数的整数部分(IEEE取整方式“截尾取整”)。
如果有数值超出这一范围,则状态位 OV(溢出位)和 OS(存储溢出位)被置为“1”。
结果保存在累加器 1 中。
出错时,将不进行转换,并指示溢出(利用 NaN 或无法表示为一个 32 位整数的浮点数)。
状态字BR CC 1 CC 0 OV OS OR STA RLO /FC 写:- - - x x - - - -举例STL 解释L MD10 TRUNCT MD20 // 将浮点数装入累加器 1 中。
// 将浮点数(32 位,IEEE-FP)转换为整数(32 位)并对结果取整。
结果保存在累加器 1 中。
// 将结果(双整数)传送到存储双字 MD20。
转换之前的数值转换之后的数值MD10 = "100.5" => TRUNC => MD20 = "+100" MD10 = "-100.5" => TRUNC => MD20 = "-100"3.17 RND+ 取整为较大的双整数格式RND+说明RND+ 指令(32 位 IEEE 浮点数转换成为 32 位整数)将累加器 1 中的内容作为一个 32 位 IEEE 浮点数进行编译。
使用该指令,可以将 32 位 IEEE 浮点数转换成为一个 32 位整数(双整数),并将结果取整为大于或等于该浮点数的最小整数(IEEE 取整方式“向上取整”)。
如果有数值超出这一范围,则状态位 OV(溢出位)和 OS(存储溢出位)被置为“1”。
结果保存在累加器 1 中。
出错时,将不进行转换,并指示溢出(利用 NaN 或无法表示为一个 32 位整数的浮点数)。
状态字BR CC 1 CC 0 OV OS OR STA RLO /FC 写:- - - x x - - - -举例STL 解释L MD10 RND+T MD20 // 将浮点数(32 位,IEEE-FP)装入累加器 1 中。