Download presentation
Presentation is loading. Please wait.
1
6 S7-200可编程控制器 指令集 2019/1/2 PLC指令集
2
主要内容 6.1用于描述指令的习惯用语 6.2S7--200存储器范围及特性 6.3位逻辑指令 6.4时钟指令 6.5通讯指令
6.6比较指令 6.7转换指令 6.8计数器指令 6.9高速计数器指令 2019/1/2 PLC指令集
3
6.10脉冲输出指令 6.11数字运算指令 6.12比例/积分/微分(PID)回路控制指令 6.13中断指令 6.14逻辑操作指令
6.15传送指令 6.16程序控制指令 6.17移位和循环指令 6.18字符串指令 2019/1/2 PLC指令集
4
6.19表指令 6.20定时器指令 6.21子程序指令 2019/1/2 PLC指令集
5
6.1用于描述指令的习惯用语 图6-1给出了对一条指令的典型描述,并指出了用于描述指令及其操作的不同区域。指令说明包括LAD、FBD和STL三种格式。操作数表列出了指令的操作数,并给出每个操作数的有效数据类型,存储区的区域及长度。 EN/ENO操作数和数据类型没有在指令操作数表中列出,因为这些操作数对于所有的LAD和FBD指令来说都是一样的。 对于LAD:EN和ENO是能流,为布尔数据类型。 对于FBD:EN和ENO是I、Q、V、M、SM、S、T、C、L或者能流,为布尔数据类型。 2019/1/2 PLC指令集
6
2019/1/2 PLC指令集
7
6.2S7--200存储器范围及特性 2019/1/2 PLC指令集
8
2019/1/2 PLC指令集
9
6.3位逻辑指令 触点 标准触点 常开触点指令(LD、A和O)与常闭触点指令(LDN、AN和ON)从存储器或者过程映象寄存器中得到参考值。标准触点指令从存储器中得到参考值。(如果数据类型是I或Q,则也可从过程映象寄存器中得到参考值。) 当位值为1时,常开触点闭合;当位值为0时,常闭触点闭合。 在FBD中,与和或操作的输入可以最多扩展到32个。在STL中,常开指令LD、AND或OR或将相应地址位的位值存入栈顶;而常闭指令 LD、AND或OR则将相应地址位的位值取反,再存入栈顶。 2019/1/2 PLC指令集
10
2019/1/2 PLC指令集
11
2019/1/2 PLC指令集
12
立即触点 立即触点并不依赖于S7--200的扫描周期刷新,它会立即刷新。常开立即触点指令(LDI、AI和OI)和常闭立即触点指令(LDNI、ANI和ONI)在指令执行时得到物理输入值,但过程映像寄存器并不刷新。 当物理输入点状态为1时,常开立即触点闭合;当物理输入点状态为0时,常闭立即触点闭合。常开立即指令LD、AND或OR将物理输入值存入栈顶,而常闭立即指令LD、AND或OR将物理输入的值取反,再存入栈顶。 2019/1/2 PLC指令集
13
取反指令(NOT) 正、负跳变指令(EU、ED) 2019/1/2 PLC指令集
对于运行模式下编辑(在RUN模式下编辑应用程序),必须为正跳变指令和负跳变指令输入参数。 关于在RUN模式下编辑程序的更多信息参见SIEMENS的详细资料。 2019/1/2 PLC指令集
14
2019/1/2 PLC指令集
15
如图6-2中所示,S7--200用逻辑堆栈来决定控制逻辑。在本例中,“iv0”到“iv7”表示逻辑堆栈的初始值,“nv”表示指令提供的一个新值,S0表示逻辑堆栈中存储的计算值。
2019/1/2 PLC指令集
16
2019/1/2 PLC指令集
17
2019/1/2 PLC指令集
18
2019/1/2 PLC指令集
19
线圈 输出(=) 输出指令(=)将新值写入输出点的过程映象寄存器。当输出指令执行时,S7--200将输出过程映象寄存器中的位接通或者断开。在LAD和FBD中,指定点的值等于能流。在STL中,栈顶的值复制到指定位。 立即输出(=I) 当指令执行时,立即输出指令(=I)将新值同时写到物理输出点和相应的过程映象寄存器中。 2019/1/2 PLC指令集
20
2019/1/2 PLC指令集
21
2019/1/2 PLC指令集
22
当立即输出指令执行时,物理输出点立即被置为能流值。在STL中,立即指令将栈顶的值立即复制到物理输出点的指定位上。“I”表示立即,当指令执行时,新值会同时被写到物理输出和相应的过程映象寄存器。这一点不同于非立即指令,只把新值写入过程映象寄存器。 置位(S)和复位(R) 置位(S)和复位(R)指令将从指定地址开始的N个点置位或者复位。可以一次置位或者复位1--255个点。 2019/1/2 PLC指令集
23
如果复位指令指定的是一个定时器位(T)或计数器位(C),指令不但复位定时器或计数器位,而且清除定时器或计数器的当前值。
2019/1/2 PLC指令集
24
立即置位和立即复位 立即置位和立即复位指令将从指定地址开始的N个点立即置位或者立即复位。可以一次置位或复位1到128个点。
“I”表示立即,当指令执行时,新值会同时被写到物理输出和相应的过程映象寄存器。这一点不同于非立即指令,只把新值写入过程映像寄存器。 2019/1/2 PLC指令集
25
2019/1/2 PLC指令集
26
2019/1/2 PLC指令集
27
2019/1/2 PLC指令集
28
逻辑堆栈指令 栈装载与(ALD) 栈装载或(OLD)
2019/1/2 PLC指令集
29
逻辑推入栈(LPS) 逻辑读栈(LRD) 逻辑弹出栈(LPP)
2019/1/2 PLC指令集
30
ENO与(AENO) 装入堆栈(LDS) 2019/1/2 PLC指令集
ENO与指令(AENO)对ENO位和栈顶的值进行逻辑与操作,其产生的效果与LAD或者FBD中盒指令的ENO位相同。与操作结果成为新的栈顶。 ENO是LAD和FBD中盒指令的布尔输出。如果盒指令的EN输入有能流并且执行没有错误,则ENO将能流传递给下一元素。您可以把ENO作为指令成功完成的使能标志位。ENO位被用作栈顶,影响能流和后续指令的执行。STL中没有EN输入。条件指令要想执行,栈顶值必须为逻辑1。在STL中也没有ENO输出。但是在STL中,那些与LAD和FBD中具有ENO输出的指令相应的指令,存在一个特殊的ENO位。它可以被AENO指令访问。 装入堆栈(LDS) 装入堆栈指令(LDS)复制堆栈中的第N个值到栈顶。栈底的值被推出并消失。 2019/1/2 PLC指令集
31
如图6-3中所示,S7--200用逻辑堆栈来决定控制逻辑。在本例中,“iv0”到“iv7”表示逻辑堆栈的初始值,“nv”表示指令提供的一个新值,而“S0”表示逻辑堆栈中存储的计算值。
2019/1/2 PLC指令集
32
2019/1/2 PLC指令集
33
2019/1/2 PLC指令集
34
RS触发器指令 置位优先触发器是一个置位优先的锁存器。当置位信号(S1)和复位信号(R)都为真时,输出为真。
Bit参数用于指定被置位或者复位的布尔参数。可选的输出反映Bit参数的信号状态。 表6-7中给出了例子程序的真值表。 2019/1/2 PLC指令集
35
2019/1/2 PLC指令集
36
2019/1/2 PLC指令集
37
6.4时钟指令 读实时时钟(TODR)和写实时时钟(TODW)
写实时时钟(TODW)指令将当前时间和日期写入硬件时钟,当前时钟存储在以地址T开始的8字节时间缓冲区中。 您必须按照BCD码的格式编码所有的日期和时间值(例如:用16#97表示1997年)。图6-4给出了时间缓冲区(T)的格式。 2019/1/2 PLC指令集
38
时间日期(TOD)时钟在电源掉电或内存丢失后,初始化为下列日期和时间: 日期: 01--Jan--90 时间: 00:00:00
星期: 星期日 2019/1/2 PLC指令集
39
2019/1/2 PLC指令集
40
扩展读实时时钟(TODRX) 扩展写实时时钟(TODWX)
扩展读实时时钟(TODRX)指令从PLC中读取当前时间、日期和夏令时组态 ,并装载到从由T指定的地址开始的19字节缓冲区内。 扩展写实时时钟(TODWX) 扩展读实时时钟(TODWX)指令写当前时间、日期和夏令时组态到PLC中由T指定的地址开始的19字节缓冲区内。必须按照BCD码的格式编码所有的日期和时间值(例如:用16#02表示2002年)。表6-9给出了19字节时间缓冲区(T)的格式。 时间日期时钟在电源掉电或内存丢失后,初始化下列日期和时间: 2019/1/2 PLC指令集
41
日期: 01--Jan--90 时间: 00:00:00 星期: 星期日 2019/1/2 PLC指令集
42
2019/1/2 PLC指令集
43
6.5通讯指令 通讯指令 网络读写指令 2019/1/2 PLC指令集
网络读指令(NETR)初始化一个通讯操作,根据表(TBL)的定义,通过指定端口从远程设备上采集数据。 网络写指令(NETW)初始化一个通讯操作,根据表(TBL)的定义,通过指定端口向远程设备写数据。 网络读指令可以从远程站点读取最多16个字节的信息,网络写指令可以向远程站点写最多16个字节的信息。 在程序中,可以使用任意条网络读写指令,但是在同一时间,最多只能有8条网络读写指令被激活。例如,在所给的S CPU中,可以有4条网络读指令和4条网络写指令,或者2条网络读指令和6条网络写指令在同一时间被激活。 可以使用网络读写向导程序。要启动网络读写向导程序,在命令菜单中选择Tools > InstructionWizard,并且在指令向导窗口中选择网络读写。 2019/1/2 PLC指令集
44
2019/1/2 PLC指令集
45
2019/1/2 PLC指令集
46
发送(XMT)和接收(RCV)指令 发送指令(XMT)用于在自由口模式下依靠通讯口发送数据。
接收指令(RCV)启动或者终止接收信息功能。必须为接收操作指定开始和结束条件。从指定的通讯口接收到的信息被存储在数据缓冲区(TBL)中。数据缓冲区的第一个数据指明了接收到的字节数。 2019/1/2 PLC指令集
47
2019/1/2 PLC指令集
48
使用自由口模式控制串行通讯口 通过编程,可以选择自由口模式来控制S7--200的串行通讯口。当选择了自由口模式,用户程序通过使用接收中断、发送中断、发送指令和接收指令来控制通讯口的操作。当处于自由口模式时,通讯协议完全由梯形图程序控制。SMB30(对于端口0)和SMB130(对于端口1,如果您的S7--200有两个端口的话)被用于选择波特率和校验类型。 当S7--200处于STOP模式时,自由口模式被禁止,重新建立正常的通讯(例如:编程设备的访问)。 2019/1/2 PLC指令集
49
在最简单的情况下,可以只用发送指令(XMT)向打印机或者显示器发送信息。其它例子包括与条码阅读器、称重计和焊机的连接。在每种情况下,您都必须编写程序,来支持在自由口模式下与S7--200通讯的设备所使用的协议。 只有当S7--200处于RUN模式时,才能进行自由口通讯。要使能自由口模式,应该在SMB30(端口0)或者SMB130(端口1)的协议选择区中设置01。处于自由口通讯模式时,不能与编程设备通讯。 2019/1/2 PLC指令集
50
将PPI通讯转变为自由口模式 2019/1/2 PLC指令集
51
发送数据 接收数据 接收指令的启动和结束条件 发送指令使您能够发送一个字节或多个字节的缓冲区,最多为255个。
接收指令使您能够接收一个字节或多个字节的缓冲区,最多为255个。 接收指令的启动和结束条件 接收指令使用接收信息控制字节(SMB87或SMB187)中的位来定义信息起始和结束条件。 2019/1/2 PLC指令集
52
使用字符中断控制接收数据 为了完全适应对各种协议的支持,也可以使用字符中断控制的方式接收数据。接收每个字符时都会产生中断。在执行与接收字符事件相连的中断服务程序之前,接收到的字符存入SMB2中,校验状态(如果使能的话)存入SM3.0。SMB2是自由口接收字符缓冲区。在自由口模式下,每一个接收到的字符都会存放到这一位置,便于用户程序访问。SMB3用于自由口模式。它包含一个校验错误标志位。当接收字符的同时检测到校验错误时,该位被置位。该字节的其它位被保留。利用校验位去丢弃信息或向该信息发送否定应答。 2019/1/2 PLC指令集
53
2019/1/2 PLC指令集
54
2019/1/2 PLC指令集
55
6.6比较指令 数值比较 比较指令用于比较两个数值: IN1 = IN2 IN1 >= IN2 IN1 <= IN2
字节比较操作是无符号的。 整数比较操作是有符号的。 双字比较操作是有符号的。 实数比较操作是有符号的。 2019/1/2 PLC指令集
56
对于LAD和 FBD:当比较结果为真时,比较指令使触点闭合(LAD)或者输出接通(FBD)。
对于STL:当比较结果为真时,对1进行LD,A或O操作,并置入栈顶。 2019/1/2 PLC指令集
57
2019/1/2 PLC指令集
58
2019/1/2 PLC指令集
59
字符串比较 字符串比较指令比较两个字符串的ASCII码字符: IN1=IN2 IN1<>IN2
当比较结果为真时,比较指令使触点闭合(LAD)或者输出接通(FBD),或者对1进行LD,A或O操作,并置入栈顶(STL)。 2019/1/2 PLC指令集
60
6.7转换指令 标准转换指令 数字转换 字节转为整数(BTI)、整数转为字节(ITB)、整数转为双整数(ITD)、双整数转为整数(DTI)、双整数转为实数(DTR)、BCD码转为整数(BCDI)和整数转为BCD码(IBCD)。以上指令将输入值IN转换为指定的格式并存储到由OUT指定的输出值存储区中。例如:可以将双整数值转为实数值;也可以在整数和BCD码格式之间相互转换。 2019/1/2 PLC指令集
61
四舍五入(ROUND)和取整(TRUNC)
四舍五入指令(ROUND)将一个实数转为一个双整数值,并将四舍五入的结果存入OUT指定的变量中。 取整指令(TRUNC)将一个实数转为一个双整数值,并将实数的整数部分作为结果存入OUT指定的变量中。 包络段数 段码指令(SEG)允许您产生一个点阵,用于点亮七段码显示器的各个段。 2019/1/2 PLC指令集
62
2019/1/2 PLC指令集
63
ASCII码转换指令 有效的ASCII码字符为十六进制的30到39和41到46。 在ASCII码和十六进制数之间相互转换
ASCII码转十六进制数指令(ATH)将一个长度为LEN从IN开始的ASCII码字符串转换成从OUT开始的十六进制数。十六进制数转ASCII码指令(HTA)将从输入字节IN开始的十六进制数,转换成从OUT开始的ASCII码字符串。被转换的十六进制数的位数由长度LEN给出。 能够被转换的ASCII码字符串或者十六进制数的最大数量为255。有效ASCII码输入 有效的ASCII码输入字符是0到9的十六进制数代码值30到39,和大写字符A到F的十六进制数代码值41到46这些字母数字字符。 2019/1/2 PLC指令集
64
将数值转为ASCII码 整数转ASCII码(ITA)、双整数转ASCII码(DTA)和实数转ASCII码(RTA)指令,分别将整数、双整数或实数值转换成ASCII码字符。 2019/1/2 PLC指令集
65
2019/1/2 PLC指令集
66
2019/1/2 PLC指令集
67
字符串转换指令 将数值转换为字符串 整数转字符串(ITS)、双整数转字符串(DTS)和实数转字符串(RTS)指令,将整数、双整数或实数值(IN)转换成ASCII码字符串(OUT)。 2019/1/2 PLC指令集
68
将子字符串转换为数字值 子字符串转整数(STI)、子字符串转双整数(STD)和子字符串转实数(STR)指令,将从偏移量INDX开始的字符串值IN转换成整数/双整数或实数值OUT。 2019/1/2 PLC指令集
69
2019/1/2 PLC指令集
70
编码和解码指令 编码 译码 编码指令(ENCO)将输入字IN的最低有效位的位号写入输出字节OUT的最低有效“半字节”(4位)中。
译码指令(DECO)根据输入字节(IN)的低四位所表示的位号置输出字(OUT)的相应位为1,输出字的所有其他位都清0。 2019/1/2 PLC指令集
71
2019/1/2 PLC指令集
72
6.8计数器指令 SIMATIC计数器指令 增计数器 STL操作: H 复位输入:栈顶 H 计数输入:其值被装载在第二个堆栈中。
增计数指令(CTU)从当前计数值开始,在每一个(CU)输入状态从低到高时递增计数。当CXX的当前值大于等于预置值PV时,计数器位CXX置位。当复位端(R)接通或者执行复位指令后,计数器被复位。当它达到最大值(32,767)后,计数器停止计数。 STL操作: H 复位输入:栈顶 H 计数输入:其值被装载在第二个堆栈中。 2019/1/2 PLC指令集
73
减计数器 减计数指令(CTD)从当前计数值开始,在每一个(CD)输入状态的低到高时递减计数。当CXX的当前值等于0时,计数器位CXX置位。当装载输入端(LD)接通时,计数器位被复位,并将计数器的当前值设为预置值PV。当计数值到0时,计数器停止计数,计数器位CXX接通。 STL操作: H 装载输入:栈顶 H 计数输入:其值被装载在第二个堆栈中。 2019/1/2 PLC指令集
74
增/减计数器 增/减计数指令(CTUD),在每一个增计数输入(CU)的低到高时增计数,在每一个减计数输入(CD)的低到高时减计数。计数器的当前值CXX保存当前计数值。在每一次计数器执行时,预置值PV与当前值作比较。 当达到最大值(32767)时,在增计数输入处的下一个上升沿导致当前计数值变为最小值( )。当达到最小值( )时,在减计数输入端的下一个上升沿导致当前计数值变为最大值(32767)。 当CXX的当前值大于等于预置值PV时,计数器位CXX置位。否则,计数器位关断。当复位端(R)接通或者执行复位指令后,计数器被复位。当达到预置值PV时,CTUD计数器停止计数。 2019/1/2 PLC指令集
75
STL操作: H 复位输入:栈顶 H 减计数输入:其值被装载在第二栈位中。 H 增计数输入:其值被装载在第三栈位中。 2019/1/2
PLC指令集
76
2019/1/2 PLC指令集
77
2019/1/2 PLC指令集
78
6.9高速计数器指令 定义高速计数器 定义高速计数器指令(HDEF)为指定的高速计数器(HSCx)选择操作模式。模块的选择决定了高速计数器的时钟、方向、启动和复位功能。 对于每一个高速计数器使用一条定义高速计数器指令。 高速计数器 高速计数器指令(HSC)在HSC特殊存储器位状态的基础上配置和控制高速计数器。参数N指定高速计数器的标号。 2019/1/2 PLC指令集
79
高速计数器可以被配置为12种模式中的任意一种,详细情况可参考SIEMENS S7-200系统手册。
每一个计数器都有时钟、方向控制、复位、启动的特定输入。对于双相计数器,两个时钟都可以运行在最高频率。在正交模式下,您可以选择一倍速(1x)或者四倍速(4x)计数速率。所有计数器都可以运行在最高频率下而互不影响。 2019/1/2 PLC指令集
80
高速计数器编程 可以使用指令向导来配置计数器。向导程序使用下列信息:计数器的类型和模式、计数器的预置值、计数器的初始值和计数的初始方向。要启动HSC指令向导,可以在命令菜单窗口中选择Tools >Instruction Wizard ,然后在向导窗口中选择HSC指令。 2019/1/2 PLC指令集
81
对高速计数器编程,必须完成下列基本操 高速计数器的编程示例省略。 定义计数器和模式 设置控制字节 设置初始值 设置预置值
指定并使能中断服务程序 激活高速计数器 高速计数器的编程示例省略。 2019/1/2 PLC指令集
82
6.10脉冲输出指令 脉冲输出指令(PLS)用于在高速输出(Q0.0和Q0.1)上控制脉冲串输出(PTO)和脉宽调制(PWM)功能。
请参阅资料光盘上应用示例中使用PLS指令进行PTO/PWM操作的程序。见应用示例7、22、23、30和50。 2019/1/2 PLC指令集
83
6.11数字运算指令 加、减、乘、除指令 加法 减法 IN1+IN2=OUT IN1--IN2=OUT LAD和FBD
IN1+OUT=OUT OUT--IN1=OUT STL 整数加法(+I)或者整数减法(--I)指令,将两个16位整数相加或者相减,产生一个16位结果。双整数加法(+D)或者双整数减法(--D)指令,将两个32位整数相加或者相减,产生一个32位结果。实数加法(+R)和实数减法(--R)指令,将两个32位实数相加或相减,产生一个32位实数结果。 2019/1/2 PLC指令集
84
乘法 除法 IN1*IN2=OUT IN1/IN2=OUT LAD和FBD IN1*OUT=OUT OUT/IN1=OUT STL
整数乘法(*I)或者整数除法(/I)指令,将两个16位整数相乘或者相除,产生一个16位结果。(对于除法,余数不被保留。)双整数乘法(*D)或者双整数除法(/D)指令,将两个32位整数相乘或者相除,产生一个32位结果。(对于除法,余数不被保留。)实数乘法(*R)或实数除法(/R)指令,将两个32位实数相乘或相除,产生一个32位实数结果。 2019/1/2 PLC指令集
85
2019/1/2 PLC指令集
86
2019/1/2 PLC指令集
87
2019/1/2 PLC指令集
88
2019/1/2 PLC指令集
89
2019/1/2 PLC指令集
90
数学功能指令 正弦、余弦和正切 正弦(SIN)、余弦(COS)和正切(TAN)指令计算角度值IN的三角函数值,并将结果存放在OUT中。输入角度值是弧度值。 SIN(IN)= OUT COS(IN)=OUT TAN(IN) =OUT 要将角度从度数变为弧度,可以使用MUL_R(*R)指令,将度数乘以 E--2(接近π/180)即可。 2019/1/2 PLC指令集
91
自然对数和自然指数 平方根 自然对数指令(LN)计算输入值IN的自然对数,并将结果存放到OUT中。
自然指数指令(EXP)计算输入值IN的自然指数值,并将结果存放到OUT中。 LN (IN) = OUT EXP (IN)=OUT 平方根 平方根指令(SQRT)计算实数(IN)的平方根 ,并将结果存放到OUT中。 SQRT(IN)=OUT 2019/1/2 PLC指令集
92
递增和递减指令 2019/1/2 PLC指令集 递增 递减 递增或者递减指令将输入IN加1或者减1,并将结果存放在OUT中。
IN+1=OUT LAD和 FBD OUT+1=OUT STL 递减 IN -- 1=OUT LAD和 FBD OUT -- 1=OUT STL 递增或者递减指令将输入IN加1或者减1,并将结果存放在OUT中。 字节递增(INCB)和字节递减(DECB)操作是无符号的。 字递增(INCW)和字递减(DECW)操作是有符号的。 双字递增(INCD)和双字递减(DECD)操作是有符号的。 2019/1/2 PLC指令集
93
2019/1/2 PLC指令集
94
PID回路控制指令(PID)根据输入和表(TBL)中的配置信息,对相应的LOOP执行PID回路计算。
2019/1/2 PLC指令集
95
6.13中断指令 中断允许(ENI)和中断禁止(DISI)
当进入RUN模式时,初始状态为禁止中断。在RUN模式,您可以执行全局中断允许指令(ENI)允许所有中断。全局中断禁止指令 (DISI)不允许处理中断服务程序,但中断事件仍然会排队等候。 2019/1/2 PLC指令集
96
中断条件返回(CRETI) 中断连接(ATCH) 中断分离(DTCH)
中断连接指令(ATCH)将中断事件EVNT与中断服务程序号INT相关联,并使能该中断事件。 中断分离(DTCH) 中断分离指令(DTCH)将中断事件EVNT与中断服务程序之间的关联切断,并禁止该中断事件。 2019/1/2 PLC指令集
97
清除中断事件(CLR—EVENT) S7--200支持的中断类型 S7--200支持下列类型的中断服务程序:
I/O中断:S7--200对I/O点状态的各种变化产生中断事件。这些事件可以对高速计数器、脉冲输出或输入的上升或下降状态做出响应。 时基中断:S7--200产生使程序在指定的间隔上起作用的事件。 2019/1/2 PLC指令集
98
中断优先级和中断队列 在各个指定的优先级之内,CPU按先来先服务的原则处理中断。任何时间点上,只有一个用户中断程序正在执行。一旦中断程序开始执行,它要一直执行到结束。而且不会被别的中断程序,甚至是更高优先级的中断程序所打断。当另一个中断正在处理中,新出现的中断需要排队,等待处理。 2019/1/2 PLC指令集
99
2019/1/2 PLC指令集
100
2019/1/2 PLC指令集
101
2019/1/2 PLC指令集
102
6.14逻辑操作指令 取反指令 字节、字和双字取反 使ENO=0的错误条件: 受影响的SM标志位:
字节取反(INVB)、字取反(INVW)和双字取反(INVD)指令将输入IN取反的结果存入OUT中。 使ENO=0的错误条件: H 0006(间接寻址) 受影响的SM标志位: H SM1.0(结果为0) 2019/1/2 PLC指令集
103
2019/1/2 PLC指令集
104
2019/1/2 PLC指令集
105
2019/1/2 PLC指令集
106
2019/1/2 PLC指令集
107
与、或和异或指令 字节与、字与和双字与 字节或、字或和双字或
字节与(ANDB)、字与(ANDW)和双字与(ANDD)指令将输入值IN1和IN2的相应位进行与操作,将结果存入OUT中。 字节或、字或和双字或 字节或(ORB)、字或指令(ORW)和双字或(ORD)指令将两个输入值IN1和IN2的相应位进行或操作,将结果存入OUT中。 2019/1/2 PLC指令集
108
字节异或、字异或和双字异或 字节异或(ROB)、字异或(ORW)和双字异或(ORD)指令将两个输入值IN1和IN2的相应位进行异或操作,将结果存入OUT中。 2019/1/2 PLC指令集
109
2019/1/2 PLC指令集
110
6.15传送指令 字节、字、双字或者实数传送 字节传送(MOVB)、字传送(MOVW)、双字传送(MOVD)和实数传送指令在不改变原值的情况下将IN中的值(MOVR)传送到OUT。 2019/1/2 PLC指令集
111
字节立即传送(读和写) 字节立即传送指令允许您在物理I/O和存储器之间立即传送一个字节数据。
字节立即读(BIR)指令读物理输入(IN),并将结果存入内存地址(OUT),但过程映像寄存器并不刷新。 字节立即写指令(BIW)从内存地址(IN)中读取数据,写入物理输出(OUT),同时刷新相应的过程映像区。 2019/1/2 PLC指令集
112
块传送指令 字节、字、双字的块传送 N的范围从1到255。
字节块传送(BMB)、字块传送(BMW)和双字块传送(BMD)指令传送指定数量的数据到一个新的存储区,数据的起始地址IN,数据长度为N个字节、字或者双字,新块的起始地址为OUT。 N的范围从1到255。 2019/1/2 PLC指令集
113
2019/1/2 PLC指令集
114
6.16程序控制指令 条件结束 条件结束指令(END)根据前面的逻辑关系终止当前扫描周期。可以在主程序中使用条件结束指令,但不能在子程序或中断服务程序中使用该命令。 停止 停止指令(STOP)导致CPU从RUN到STOP模式从而可以立即终止程序的执行。 如果STOP指令在中断程序中执行,那么该中断立即终止,并且忽略所有挂起的中断,继续扫描程序的剩余部分。完成当前周期的剩余动作,包括主用户程序的执行,并在当前扫描的最后,完成从RUN到STOP模式的转变。 2019/1/2 PLC指令集
115
看门狗复位 看门狗复位指令(WDR)允许S CPU的系统看门狗定时器被重新触发,这样可以在不引起看门狗错误的情况下,增加此扫描所允许的时间。 使用WDR指令时要小心,因为如果您用循环指令去阻止扫描完成或过度的延迟扫描完成的时间,那么在终止本次扫描之前,下列操作过程将被禁止: 2019/1/2 PLC指令集
116
通讯(自由端口方式除外) I/O更新(立即I/O除外) 强制更新 SM位更新(SM0,SM5~SM29不能被更新) 运行时间诊断 由于扫描时间超过25秒,10ms和100ms定时器将不会正确累计时间。 在中断程序中的STOP指令 带数字量输出的扩展模块也包含一个看门狗定时器,如果模块没有被S7--200写,则此看门狗定时器将关断输出。在扩展的扫描时间内,对每个带数字量输出的扩展模块进行立即写操作以保持正确的输出。请参考这段描述之后的实例。 2019/1/2 PLC指令集
117
2019/1/2 PLC指令集
118
For--Next循环指令 FOR和NEXT指令可以描述需重复进行一定次数的循环体。每条FOR指令必须对应一条NEXT指令。For--Next循环嵌套(一个For--Next循环在另一个For--Next循环之内)深度可达8层。 FOR--NEXT指令执行FOR指令和NEXT指令之间的指令。必须指定计数值或者当前循环次数INDX、初始值(INIT)和终止值(FINAL)。 NEXT指令标志着FOR循环的结束。 2019/1/2 PLC指令集
119
2019/1/2 PLC指令集
120
跳转指令 跳转到标号指令(JMP)执行程序内标号N指定的程序分支。标号指令标记跳转目的地的位置N。
可以在主程序、子程序或者中断服务程序中,使用跳转指令。跳转和与之相应的标号指令必须位于同一段程序代码(无论是主程序、子程序还是中断服务程序)。 不能从主程序跳到子程序或中断程序,同样不能从子程序或中断程序跳出。 可以在SCR程序段中使用跳转指令,但相应的标号指令必须也在同一个SCR段中。 2019/1/2 PLC指令集
121
2019/1/2 PLC指令集
122
顺控继电器(SCR)指令 SCR指令使得能够按照自然工艺段在LAD、FBD或STL中编制状态控制程序。
装载SCR指令(LSCR)将S位的值装载到SCR和逻辑堆栈中。 SCR堆栈的结果值决定是否执行SCR程序段。SCR堆栈的值会被复制到逻辑堆栈中,因此可以直接将盒或者输出线圈连接到左侧的能流线上而不经过中间触点。 2019/1/2 PLC指令集
123
2019/1/2 PLC指令集
124
分支控制 在许多实例中,一个顺序控制状态流必须分成两个或多个不同分支控制状态流。当一个控制状态流分离成多个分支时,所有的分支控制状态流必须同时激活,如图 6-33所示。 使用多条由相同转移条件激活的SCRT指令,可以在一段SCR程序中实现控制流的分支,如下面的实例所示。 2019/1/2 PLC指令集
125
2019/1/2 PLC指令集
126
2019/1/2 PLC指令集
127
合并控制 与分支控制的情况类似,两个或者多个分支状态流必须合并为一个状态流。当多个状态流汇集成一个时,我们称之为合并。当控制流合并时,所有的控制流必须都完成,才能执行下一个状态。图 6-34给出了两个控制流合并的示意图。 在SCR程序中,通过从状态L转到状态L’,以及从状态M转到状态M’的方法实现控制流的合并。当状态L’、M’的SCR使能位为真时,即可激活状态N,如下例所示。 2019/1/2 PLC指令集
128
2019/1/2 PLC指令集
129
2019/1/2 PLC指令集
130
诊断LED指令( DIAG_LED) 如果输入参数IN的值为零,就将诊断LED置为OFF。如果输入参数IN的值大于零,就将诊断LED置为ON(黄色)。 当系统块中指定的条件为真或者用非零IN参数执行DIAG_LED指令时,CPU发光二极管(LED)标注的SF/DIAG可以被配置用于显示黄色。 系统块(配置LED)复选框选项: 当有一项在CPU内被强制时,SF/DIAGLED为ON(黄色) 当模块有I/O错误时,SF/DIAGLED为ON(黄色) 两个配置LED选项都不选中,将使SF/DIAG黄光只受DIAG_LED指令控制。CPU系统故障(SF)用红光指示。 2019/1/2 PLC指令集
131
2019/1/2 PLC指令集
132
6.17移位和循环指令 右移(SHR)和左移(SHL)指令 移位指令将输入值IN右移或左移N位,并将结果装载到输出OUT中。
移位指令对移出的位自动补零。如果位数N大于或等于最大允许值(对于字节操作为8,对于字操作为16,对于双字操作为32),那么移位操作的次数为最大允许值。如果移位次数大于0,溢出标志位(SM1.1)上就是最近移出的位值。如果移位操作的结果为0,零存储器位(SM1.0)置位。 字节操作是无符号的。对于字和双字操作,当使用有符号数据类型时,符号位也被移动。 2019/1/2 PLC指令集
133
循环右移(ROR)和循环左移(ROL)指令
循环移位指令将输入值IN循环右移或者循环左移N位,并将输出结果装载到OUT中。循环移位是圆形的。 如果位数N大于或者等于最大允许值(对于字节操作为8,对于字操作为16,对于双字操作为32),S7--200在执行循环移位之前,会执行取模操作,得到一个有效的移位次数。移位位数的取模操作的结果,对于字节操作是0到7,对于字操作是0到15,而对于双字操作是0到31。 2019/1/2 PLC指令集
134
2019/1/2 PLC指令集
135
移位寄存器指令(SHRB) 移位寄存器指令将一个数值移入移位寄存器中。移位寄存器指令提供了一种排列和控制产品流或者数据的简单方法。使用该指令,每个扫描周期,整个移位寄存器移动一位。 移位寄存器指令把输入的DATA数值移入移位寄存器。其中,S_BIT指定移位寄存器的最低位,N指定移位寄存器的长度和移位方向(正向移位=N,反向移位=--N)。 SHRB指令移出的每一位都被放入溢出标志位(SM1.1)。 这条指令的执行取决于最低有效位(S_BIT)和由长度(N)指定的位数。 2019/1/2 PLC指令集
136
2019/1/2 PLC指令集
137
2019/1/2 PLC指令集
138
字节交换指令(SWAP) 字节交换指令用来交换输入字IN的高字节和低字节。 2019/1/2 PLC指令集
139
6.18字符串指令 字符串指令 字符串长度 字符串复制 字符串连接 字符串长度指令(SLEN)返回IN中指定的字符串的长度值。
字符串复制指令(SCPY)将IN中指定的字符串复制到OUT中。 字符串连接 字符串连接指令(SCAT)将IN中指定的字符串连接到OUT中指定字符串的后面。 2019/1/2 PLC指令集
140
2019/1/2 PLC指令集
141
从字符串中复制子字符串 从字符串中复制子字符串指令(SSCPY)从INDX指定的字符号开始,将IN中存储的字符串中的N个字符复制到OUT中。
2019/1/2 PLC指令集
142
字符串搜索 字符串搜索指令(SFND)在IN1字符串中寻找IN2字符串。由OUT指定搜索的起始位置。如果在IN1中找到了与IN2中字符串相匹配的一段字符,则OUT中会存入这段字符中首个字符的位置。如果没有找到,OUT被清0。 字符搜索 字符搜索指令(CFND)在IN1字符串中寻找IN2字符串中的任意字符。由OUT指定搜索的起始位置。如果找到了匹配的字符,字符的位置被写入OUT中。如果没有找到,OUT被清0。 2019/1/2 PLC指令集
143
2019/1/2 PLC指令集
144
2019/1/2 PLC指令集
145
6.19表指令 填表 ATT指令向表(TBL)中增加一个数值(DATA)。表中第一个数是最大填表数(TL),第二个数是实际填表数(EC),指出已填入表的数据个数。新的数据填加在表中上一个数据的后面。每向表中填加一个新的数据,EC会自动加1。 一个表最多可以有100条数据。 2019/1/2 PLC指令集
146
2019/1/2 PLC指令集
147
2019/1/2 PLC指令集
148
先进先出和后进先出 一个表可以有最多100条数据。 先进先出(FIFO) 后进先出(LIFO)
先进先出(FIFO)指令从表(TBL)中移走第一个数据,并将此数输出到DATA。剩余数据依次上移一个位置。每执行一条本指令,表中的数据数减1。 后进先出(LIFO) 后进先出(LIFO)指令从表(TBL)中移走最后一个数据,并将此数输出到DATA。每执行一条本指令,表中的数据数减1。 2019/1/2 PLC指令集
149
2019/1/2 PLC指令集
150
2019/1/2 PLC指令集
151
2019/1/2 PLC指令集
152
内存填充(FILL) 存储器填充指令(FILL)用输入值(IN)填充从输出(OUT)开始的N个字的内容。 N的范围从1到255。
2019/1/2 PLC指令集
153
2019/1/2 PLC指令集
154
查表(FND) 查表指令(FND)搜索表,以查找符合一定规则的数据。查表指令从INDX开始搜索表(TBL),寻找符合PTN和条件(=、<>、<或>)的数据。命令参数CMD是一个1~4的数值,分别代表=、<>、<和>。 如果发现了一个符合条件的数据,那么INDX指向表中该数的位置。为了查找下一个符合条件的数据,在激活查表指令前,必须先对INDX加1。如果没有发现符合条件的数据,那么INDX等于EC。 一个表可以有最多100条数据。数据条标号从0到99。 2019/1/2 PLC指令集
155
2019/1/2 PLC指令集
156
2019/1/2 PLC指令集
157
2019/1/2 PLC指令集
158
6.20定时器指令 SIMATIC定时器指令 接通延时定时器(TON) 有记忆的接通延时定时器(TORN) 断开延时定时器(TOF)
接通延时定时器(TON)和有记忆的接通延时定时器(TONR)在使能输入接通时记时。定时器号(Txx)决定了定时器的分辨率,并且分辨率现在已经在指令盒上标出了。 断开延时定时器(TOF) 断开延时定时器用于在输入断开后延时一段时间断开输出。定时器号(Txx)决定了定时器的分辨率,并且分辨率现在已经在指令盒上标出了。 2019/1/2 PLC指令集
159
2019/1/2 PLC指令集
160
2019/1/2 PLC指令集
161
2019/1/2 PLC指令集
162
2019/1/2 PLC指令集
163
2019/1/2 PLC指令集
164
时间间隔定时器 触发时间间隔(BITIM) 计算时间间隔(CITIM) CITIM自动处理在最大间隔内发生的1毫秒定时器翻转。
触发时间间隔(BITIM)指令读内置的1毫秒计数器的当前值,并将此值存储到OUT中。双字毫秒值的最大定时间隔是2的32次幂或49.7天。 计算时间间隔(CITIM) 计算时间间隔(CITIM)指令计算当前时间和IN提供的值之间的时间差。时间差被存储在OUT中。双字毫秒值的最大定时间隔是2的32次幂或49.7天。依据于BITIM指令执行的时间, CITIM自动处理在最大间隔内发生的1毫秒定时器翻转。 2019/1/2 PLC指令集
165
2019/1/2 PLC指令集
166
2019/1/2 PLC指令集
167
2019/1/2 PLC指令集
168
6.21子程序指令 子程序调用指令(CALL)将程序控制权交给子程序SBR_N。
调用子程序时可以带参数也可以不带参数。子程序执行完成后,控制权返回到调用子程序的指令的下一条指令。 子程序条件返回指令(CRET)根据它前面的逻辑决定是否终止子程序。 要添加一个子程序可以在命令菜单中选择:Edit > Insert >Subroutine。 2019/1/2 PLC指令集
169
2019/1/2 PLC指令集
170
在主程序中,可以嵌套调用子程序(在子程序中调用子程序),最多嵌套8层。在中断服务程序中,不能嵌套调用子程序。
在被中断服务程序调用的子程序中不能再出现子程序调用。不禁止递归调用(子程序调用自己),但是当使用带子程序的递归调用时应慎重。 2019/1/2 PLC指令集
171
2019/1/2 PLC指令集
172
2019/1/2 PLC指令集
173
2019/1/2 PLC指令集
174
谢谢,欢迎指正! 2019/1/2 PLC指令集
Similar presentations