西门子P资料LC培训讲义4.docx
《西门子P资料LC培训讲义4.docx》由会员分享,可在线阅读,更多相关《西门子P资料LC培训讲义4.docx(13页珍藏版)》请在冰豆网上搜索。
![西门子P资料LC培训讲义4.docx](https://file1.bdocx.com/fileroot1/2023-7/17/27b9eb47-e4e2-48a1-a25e-2a08a8f5d029/27b9eb47-e4e2-48a1-a25e-2a08a8f5d0291.gif)
西门子P资料LC培训讲义4
四、S7-300/400梯形图指令介绍
在学习指令之前,要先了解有关PLC的存储区域概念。
不同品牌的PLC,梯形图指令均大同小异,但是,存储区的名字及地址的表示方法却差异很大。
西门子S7-300/400PLC的存储区域分为:
输入映像区(I或PI):
开关量输入DI模块的影射到I区,模拟量输入AI模块影射到PI区;这是只读区。
输出映像区(Q或PQ):
Q区写入与之对应的开关量输出DO模块,PQ区写入与之对应的模拟量输出AO模块;Q区可读/写,PQ只写,不可读。
位存储区(M):
又叫中间继电器,可读/写。
DB块:
用户定义的数据块,必须先定义后使用,可读/写。
T区:
计时器名。
C区:
计数器名。
L区:
这是局部数据区,上面提到的那些都是全局数据区。
所谓全局数据区,就是所有的程序(OB块、FC、FB)都可以访问,而且访问到的是同一个变量;局部数据区则不然,每个独立的OB块、FC、FB块都有一个独立的L区,例如:
OB1和FC1中都有L0.0,但它们却不是同一个变量。
在STEP7的梯形图指令中,不同类型的常数的格式都有严格的规定。
如byte、word和dword类型的常数,在输入时要以“16#”作为前缀,后面跟十六进制的数据;dint类型的数据在输入时要以“L#”作为前缀,后面跟十进制的数据;real类型的数据,在输入时,后面一定要带小数部分,如没有小数部分,则加上“.0”;计时器的时间常数则以“S5T#”为前缀,后面加上aH_bbM_ccS_dddMS(表示:
几小时_几分_几秒_几毫秒),“S5T#2.5S”表示2.5秒。
STEP7中的变量,从是否使用符号的角度,可以分为符号名变量和地址名变量。
地址名变量是以存储区域名为前缀,后面紧跟代表二进制长度的B、W、D(分别代表字节、字和双字),然后是起始字节的地址;位的地址名变量是存储区域名,加上位所在的字节地址,加“.”,加上位的序号。
例如:
IB0、IW0、ID0、I0.0;QB0、QW0、QD0、Q0.0;MB0、MW0、MD0、M0.0;LB0、LW0、LD0、L0.0;DB1.DBB0、DB1.DBW0、DB1.DBD0、DB1.DBX0.0。
计时器变量名则以T加上一个0~max之间的数字来表示,如T0、T1等等。
计数器变量名则以C加上一个0~max之间的数字来表示,如C0、C1等等。
(注:
max代表某型号的CPU所具有的最大数)建议大家尽量少用地址名变量,而使用符号名变量。
符号名变量是可以通过符号编辑器(symboleditor)来建立,也可以直接在使用了地址名变量后,用鼠标右键点击它,在弹出菜单中,选择“编辑符号”来建立符号。
在STEP7中,不仅可以为地址名变量建立符号名变量,还可以为组织块,功能块,功能,数据块建立符号名,并使用符号名来编写程序。
一旦建立了符号名,在编写程序的过程中,系统会自动提示,以便我们正确输入变量。
L区的变量,是局域变量;在程序进入该块时,到该块结束的过程中,局域变量是稳定的,当程序再次进入时,该局域变量的内容是不可知的,系统可能覆盖了它。
除此之外,其他存储区域的变量为全局变量,组织块、功能块、功能均可访问它们,系统不会改变它们的内容。
梯形图是PLC最常用的编程语言,它与电气控制原理图有一点点相似,是比较容易学习和掌握的一种PLC编程语言。
在STEP7的梯形图指令中,按照功能特点共分为如下十四大类指令:
位逻辑指令、比较指令、类型转换指令、整数运算指令、实数运算指令、移动(赋值)指令、字逻辑运算指令、移位指令、定时器指令、计数器指令、DB块调用指令、跳转指令、程序控制指令和(CPU)状态位指令。
4.1、位逻辑指令
位逻辑指令说明:
指令符号前面的“––”,是指令的输入,指令符号后面的“––”,是指令的输出。
输入和输出都是BOOL类型,即只有“0”和“1”两种可能。
梯形图的左边竖线表示“1”,连接线表示直接传导这个信号,传导是由左向右的。
Ø––||––常开触点(地址):
本地址位与输入进行“与”运算,结果输出。
Ø––|/|––常闭触点(地址):
对本地址位先“非”,再与输入进行“与”运算,结果输出。
Ø––()输出线圈(地址):
本地址位等于输入。
Ø––|NOT|––能流取反:
把输入信号,“非”后输出;
Ø––(S)置位线圈(地址):
如果输入为“1”,本地址位等于“1”。
Ø––(R)重置线圈(地址):
如果输入为“1”,本地址位等于“0”。
Ø––(P)––RLO上升沿检测:
如果输入为“1”,本地址位为“0”,则输出为“1”,否则,输出为“0”。
Ø––(N)––RLO下降沿检测:
如果输入为“0”,本地址位为“1”,则输出为“1”,否则,输出为“0”。
Ø––POS––地址上升沿检测:
输入为“1”,指定的位检测上升沿时,输出为“1”,否则,输出为“0”。
Ø––NEG––地址下降沿检测:
输入为“1”,指定的位检测下降沿时,输出为“1”,否则,输出为“0”。
Ø––(#)––中间输出:
本地址位保存输入的值,输出等于输入。
Ø==SR复位优先型SR双稳态触发器:
先置位,后重置,故复位优先。
Ø==RS置位优先型RS双稳态触发器:
先重置,后置位,故置位优先。
ØXOR逻辑“异或”:
位与位直接进行“异或”运算的梯形图指令没有。
Ø立即读取:
在执行含有PIB、PIW、PID的变量的指令时,CPU直接从外设读取数据。
Ø立即写入:
在执行含有PQB、PQW、PQD的变量的指令时,CPU直接向外设写数据。
4.2、比较指令
比较指令说明:
指令符号前面的“––”,是指令的输入,指令符号后面的“––”,是指令的输出。
输入和输出都是BOOL类型,即只有“0”和“1”两种可能。
当比较指令输入为“1”时,且IN1和IN2的比较,结果符合条件,输出为“1”,否则,输出为“0”。
IN1和IN2必须是相同的数据类型,比较的条件分为如下六种情况:
Ø==IN1等于IN2
Ø<>IN1不等于IN2
Ø>IN1大于IN2
ØØ>=IN1大于等于IN2
Ø<=IN1小于等于IN2
根据IN1和IN2的数据类型,分为:
整数比较、双整数比较和实数比较三大类。
ØCMP?
I整数比较,符号如下:
ØCMP?
D双整数比较,符号如下:
ØCMP?
R实数比较,符号如下:
4.3、数据格式转换指令
数据格式转换指令说明:
EN为输入,是BOOL类型,ENO为输出,且总是与EN相同;当输入为“1”时,执行指令,否则,不执行指令。
IN输入的数据类型和OUT输出的数据类型在指令名称中已经说明;并且要求为全局变量或局部变量。
Ø
BCD_IBCD码转换为整数
ØI_BCD整数转换为BCD码
Ø
BCD_DIBCD码转换为双整数
ØDI_BCD双整数转换为BCD码
Ø
I_DINT整数转换为双整数
ØDI_REAL双整数转换为浮点数
Ø
INV_I整数的二进制反码
ØINV_DI双整数的二进制反码
Ø
NEG_I整数的二进制补码
ØNEG_DI双整数的二进制补码
Ø
NEG_R浮点数求反
ØROUND舍入为双整数
ØTRUNC舍去小数取整为双整数
Ø
CEIL上取整
ØFLOOR下取整
4.4、计数器指令
ØS_CUD加-减计数器
ØS_CD减计数器
ØS_CU加计数器
Ø---(SC)计数器线圈置位
Ø---(CU)加计数器线圈
Ø---(CD)减计数器线圈
**4.5、数据块指令
在梯形图中,访问固定数据块中的数据的一种方式,是先用——(OPN)指令打开DB块,然后直接使用DB块中的地址。
Ø---(OPN)打开数据块:
DB或DI(无条件调用功能)。
4.6、逻辑控制指令
逻辑控制指令,只能在逻辑块内跳转。
Ø---(JMP)---无条件跳转:
指输入为“1”,跳转指令必定执行。
Ø---(JMP)---条件跳转:
其输入为逻辑运算的结果,“1”时执行,“0”则不执行。
Ø---(JMPN)---若非则跳转:
其输入为逻辑运算的结果,“0”时执行,“1”则不执行。
ØLABEL标号是一个跳转指令目的地的标识符。
由1~4个字符组成,第一个字符为字母,后面可以是数字或字母,中间也可以有“_”。
与跳转指令配合使用。
4.7、整数算术指令
指令说明:
EN为输入,是BOOL类型,ENO为输出,且总是与EN相同;当输入为“1”时,执行指令,否则,不执行指令。
整数算术指令要求IN1、IN2必须为INT类型的变量或常数,OUT必须为INT类型的变量;双整数的运算指令要求IN1、IN2必须为DINT类型的变量或常数,OUT必须为DINT类型的变量。
使用整数算术指令时,要考虑是否会产生溢出及除法余数丢失等等问题。
Ø
ADD_I整数加法
ØSUB_I整数减法
ØMUL_I整数乘法
ØDIV_I整数除法
Ø
ADD_DI双整数加法
ØSUB_DI双整数减法
ØMUL_DI双整数乘法
Ø
DIV_DI双整数除法
ØMOD_DI回送余数的双整数
4.8、浮点数(实数)算术指令
指令说明:
EN为输入,是BOOL类型,ENO为输出,且总是与EN相同;当输入为“1”时,执行指令,否则,不执行指令。
实数的加、减、乘、除法运算指令要求IN1、IN2必须为REAL类型的变量或常数,OUT必须为REAL类型的变量。
ØADD_R实数加法
Ø
SUB_R实数减法
ØMUL_R实数乘法
ØDIV_R实数除法
实数的下述运算指令要求IN必须为REAL类型的变量或常数,OUT必须为REAL类型的变量。
Ø
求绝对值运算(ABS)
Ø求平方(SQR)运算
Ø求平方根(SQRT)运算
Ø求自然对数(LN)运算
Ø求基于e的指数运算(EXP)(e=2.71828)
Ø求正弦(SIN)运算
Ø求反正弦(ASIN)运算
Ø求余弦(COS)运算
Ø求反余弦(ACOS)运算
Ø求正切(TAN)运算
Ø求反正切(ATAN)运算
4.9、赋值指令
指令说明:
EN为输入,是BOOL类型,ENO为输出,且总是与EN相同;当输入为“1”时,执行指令,否则,不执行指令。
指令要求IN为变量或常数,其类型,与OUT的类型一致,且OUT必须为变量。
MOVE只能复制BYTE(字节)、WORD(字)、INT(整数)、DWORD(双字)、DINT(双精度整数)和REAL(实数)数据对象。
用户定义的数据类型(例如数组或结构)必须使用系统功能“BLKMOVE”(SFC20)进行复制。
Ø
MOVE赋值指令
**4.10、程序控制指令
Ø---(CALL)从线圈调用:
用来调用不带参数的功能(FC)或系统功能(SFC);
从方块调用FB/FC/SFB/SFC,即从左侧的“总览(OVERVIEW)”里,拖放到梯形图中,EN为输入,ENO为输出,且总是相同的,如图所示:
ØCALL_FB从方块调用FB
ØCALL_FC从方块调用FC
ØCALL_SFB从方块调用SFB
ØCALL_SFC从方块调用SFC
Ø调用多背景块
Ø从库中调用块
Ø使用MCR功能的重要注意事项
Ø---(MCR<)主控继电器接通
Ø---(MCR>)主控继电器断开
Ø---(MCRA)主控继电器启动
Ø---(MCRD)主控继电器停止
ØRET返回
4.11、移位指令
使用移位指令,可以将输入IN中的内容向左或向右逐位移动(请参见“CPU寄存器”)。
将输入IN中的内容左移相当于完成乘2加权;将输入IN中的内容右移相当于完成除2加
权的运算。
例如,如果将十进制数值“3”的等效二进制数左移3位,则累加器中的结果是
十进制数“24”的二进制数。
如果将十进制数值“16”的等效二进制数右移2位,则累加
器中的结果是十进制数“4”的二进制数。
输入参数N提供的数值表示移动的位数。
Ø•SHR_I整数右移
Ø•SHR_DI双整数右移
Ø•SHL_W字左移
Ø•SHR_W字右移
Ø•SHL_DW双字左移
Ø•SHR_DW双字右移
Ø•ROL_DW双字左循环
Ø•ROR_DW双字右循环
**4.12、状态位指令
状态字是CPU内部存储区中的一个寄存器,包含有为位地址和字逻辑指令提供参考的位。
这类指令的使用难度较大,意义不大,这是我个人意见。
Ø二进制结果位(BR---II---)置位(即有一个信号状态为“1”)。
Ø算术运算功能有上溢(OV---II---)或存储的上溢(OS---II---)。
Ø算术运算功能的结果是无序的(UO---II---)。
Ø算术运算功能的结果以下列方式之一:
==0,<>0,>0,<0,>=0,<=0。
4.13、定时器指令
Ø•S_PULSE脉冲S5定时器
Ø•S_PEXT扩展脉冲S5定时器
Ø•S_ODT接通延时S5定时器
Ø•S_ODTS保持型接通延时S5定时器
Ø•S_OFFDT断电延时S5定时器
Ø•---(SP)脉冲定时器线圈
Ø•---(SE)扩展脉冲定时器线圈
Ø•---(SD)接通延时定时器线圈
Ø•---(SS)保持型接通延时定时器线圈
Ø•---(SA)断开延时定时器线圈
4.14、字逻辑指令
Ø•WAND_W字和字相“与(AND)”
Ø•WOR_W字和字相“或(OR)”
Ø•WXOR_W字和字相“异或(XOR)”
Ø•WAND_DW双字和双字相“与(AND)”
Ø•WOR_DW双字和双字相“或(OR)”
Ø•WXOR_DW双字和双字相“异或(XOR)”
说明:
指令类别前加**,表示在梯形图中很少使用或者不使用。