西门子S7-200 PLC指令简介及实例分析 下载本文

内容发布更新时间 : 2024/12/24 2:29:40星期一 下面是文章的全部内容请认真阅读。

4. 数学函数变换指令

数学函数变换指令包括平方根、自然对数、指数、三角函数等。 (1)平方根(SQRT)指令:对32位实数(IN)取平方根,并产生一个32位实数结果,从OUT指定的存储单元输出。

(2)自然对数(LN)指令:对IN中的数值进行自然对数计算,并将结果置于OUT指定的存储单元中。

求以10为底数的对数时,用自然对数除以2.302585(约等于10的自然对数)。

(3)自然指数(EXP)指令:将IN取以e为底的指数,并将结果置于OUT指定的存储单元中。

将“自然指数”指令与“自然对数”指令相结合,可以实现以任意

数为底,任意数为指数的计算。求yx,输入以下指令:EXP (x * LN (y))。

例如:求23=EXP(3*LN(2))=8;27的3次方根=271/3=EXP(1/3*LN(27))=3。

(4)三角函数指令:将一个实数的弧度值IN分别求SIN、COS、TAN,得到实数运算结果,从OUT指定的存储单元输出。

函数变换指令格式及功能如表5-17所示。

表5-17 函数变换指令格式及功能

LAD STL SQRT IN,OUT 功能 SQRT(IN)=OUT LN IN,OUT EXP IN,OUT SIN IN,OUT COS IN,OUT TAN IN,OUT LN(IN)=OUT EXP(IN)=OUT SIN(IN)=OUT COS(IN)=OUT TAN(IN)=OUT 操作数及数据类型 IN: VD, ID, QD, MD, SMD, SD, LD, AC, 常量, *VD, *LD, *AC OUT:VD, ID, QD, MD, SMD, SD, LD, AC, *VD, *LD, *AC 数据类型:实数 使ENO = 0的错误条件:0006(间接地址),SM1.1(溢出)SM4.3(运行时间)

对标志位的影响:SM1.0(零),SM1.1(溢出),SM1.2(负数) 【例5-14】求45o正弦值。 分析:先将45o转换为弧度:(3.14159/180)*45,再求正弦值。程序如图5-20所示。

LD I0.1

MOVR 3.14159, AC1 /R 180.0, AC1 *R 45.0, AC1 SIN AC1, AC0

图5-20 例5-14题图

5.2.2 逻辑运算指令

逻辑运算是对无符号数按位进行与、或、异或和取反等操作。操作数的长度有B、W、DW。指令格式如表5-18所示。

1. 逻辑与(WAND)指令:将输入IN1,IN2按位相与,得到的逻辑运算结果,放入OUT指定的存储单元。

2. 逻辑或(WOR)指令:将输入IN1,IN2按位相或,得到的逻辑运算结果,放入OUT指定的存储单元。

3. 逻辑异或(WXOR)指令:将输入IN1,IN2按位相异或,得到的逻辑运算结果,放入OUT指定的存储单元。

4. 取反(INV)指令:将输入IN按位取反,将结果放入OUT指定的存储单元。

表5-18 逻辑运算指令格式

LAD ANDB IN1,OUT STL 功能 B 操作数 DW W ANDW IN1,OUT ANDD IN1,OUT IN1,IN2按位相与 ORB IN1,OUT ORW IN1,OUT ORD IN1,OUT IN1,IN2按位相或 XORB IN1,OUT XORW IN1,OUT XORD IN1,OUT IN1,IN2按位异或 INVB OUT INVW OUT INVD OUT 对IN取反 IN1/IN2:VB, IB, QB, MB, SB, SMB, LB, AC, 常量, *VD, *AC, *LD OUT:VB, IB, QB, MB, SB, SMB, LB, AC, *VD, *AC, *LD IN1/IN2:VW, IW, QW, MW, SW, SMW, T, C, AC, LW, AIW, 常量, *VD, *AC, *LD OUT:VW, IW, QW, MW, SW, SMW, T, C, LW, AC, *VD, *AC, *LD OUT:VD, ID, QD, MD, SMD, LD, AC, *VD, *AC, SD, *LD IN1/IN2:VD, ID, QD, MD, SMD, AC, LD, HC, 常量, *VD, *AC, SD, *LD 说明:

(1)在表5-18中,在梯形图指令中设置IN2和OUT所指定的存储单元相同,这样对应的语句表指令如表中所示。若在梯形图指令中,IN2(或IN1)和OUT所指定的存储单元不同,则在语句表指令中需使用数据传送指令,将其中一个输入端的数据先送入OUT,在进行逻辑运算。如MOVB IN1,OUT ANDB IN2,OUT

(2)ENO=0的错误条件:0006 间接地址,SM4.3 运行时间 (3)对标志位的影响:SM1.0(零)

【例5-15】逻辑运算编程举例,程序如图5-21所示。

//字节与操作 LD I0.0 ANDB VB1, VB2 //字或操作

MOVW VW100, VW300 ORW VW200, VW300

//双字异或操作 XORD AC0, AC1 //字节取反操作 MOVB VB5, VB6 INVB VB6

图5-21 例5-15题图

运算过程如下:

VB1 VB2 VB2 0001 1100 WAND 1100 1101 → 0000 1100 VW100 VW200 VW300

0001 1101 1111 1010 WOR 1110 0000 1101 1100→ 1111 1101 1111 1110 VB5 VB6 0000 1111 INV 1111 0000

5.2.3 递增、递减指令

递增、递减指令用于对输入无符号数字节、符号数字、符号数双字进行加1或减1的操作。指令格式如表5-19所示。

1. 递增字节(INC-B)/递减字节(DEC-B)指令

递增字节和递减字节指令在输入字节(IN)上加1或减1,并将结果置入OUT指定的变量中。递增和递减字节运算不带符号。

2. 递增字(INC-W)/递减字(DEC-W)指令

递增字和递减字指令在输入字(IN)上加1或减1,并将结果置入OUT。递增和递减字运算带符号(16#7FFF > 16#8000)。

3.递增双字(INC-DW)/递减双字(DEC-DW)指令

递增双字和递减双字指令在输入双字(IN)上加1或减1,并将结果置入OUT。递增和递减双字运算带符号()。

表5-19 递增、递减指令格式

LAD STL 功能 操作及数据类型 INCB OUT 字节加1 DECB OUT 字节减1 INCW OUT 字加1 DECW OUT 字减1 INCD OUT 双字加1 DECD OUT 双字减1 IN:VB, IB, QB, MB, SB, IN: VW, IW, QW, MW, SW, IN:VD, ID, QD, MD, SD, SMB, LB, AC, 常量, *VD, SMW, AC, AIW, LW, T, C, 常量, SMD, LD, AC, HC, 常量, *LD, *AC SMB, LB, AC, *VD, *LD, *AC *VD, *LD, *AC *VD, *LD,*AC OUT:VB, IB, QB, MB, SB, OUT:VW, IW, QW, MW, SW, OUT;VD, ID, QD, MD, SD, SMW, LW, AC, T, C, *VD, *LD, SMD, LD, AC, *VD, *LD, *AC *AC 数据类型:双整数 IN/OUT数据类型:字节 数据类型:整数 说明:

(1)使ENO = 0的错误条件:SM4.3(运行时间),0006(间接地址),SM1.1溢出) (2)影响标志位:SM1.0 (零),SM1.1(溢出),SM1.2(负数)。

(3)在梯形图指令中,IN和OUT可以指定为同一存储单元,这样可以节省内存,在语句表指令中不需使用数据传送指令。

5.2.4 运算单位转换实训

1. 实训目的

(1)掌握算术运算指令和数据转换指令的应用。 (2)掌握建立状态表及通过强制调试程序的方法。

(3)掌握在工程控制中,进行运算单位转换的的方法及步骤。 2. 实训内容

将英寸转换成厘米,已知C10的当前值为英寸的计数值,1英寸=2.54厘米。 3. 写入程序、编译并下载到PLC

分析:将英寸转换为厘米的步骤为:将C10中的整数值英寸→双整数英寸→实数英寸→实数厘米→整数厘米。参考程序如图5-22所示。

//(VD4)=2.54

LD SM0.1 MOVR 2.54, VD4

// 将计数器数值(英寸)载入AC1 LD I0.0 ITD C10 AC1 // 将数值转换为实数 DTR AC1 VD0

MOVR VD0 VD8 // 乘以2.54(转换为厘米) *R VD4 VD8

// 将数值转换回整数 ROUND VD8 VD12

?图5-22 将英寸转换为厘米参考程序

注意:在程序中VD0、VD4、VD8、VD12,都是以双字(4个字节)编址的。 4. 建立状态表,通过强制,调试运行程序。

(1)创建状态表

用鼠标右键单击目录树中的状态表图标或单击已经打开的状态表,将弹出一个窗口,在窗口中选择“插入状态表”选项,可创建状态表。在状态表的地址列输入地址I0.0、C10、AC1、VD0、VD4、VD8、VD12。

(2)起动状态表

与可编程控制器的通信连接成功后,用菜单“调试→状态表”或单击工具条上的状态表图标

,可

起动状态表,再操作一次关闭状态表。状态表被起动后,编程软件从PLC读取状态信息。

(3)用状态表强制改变数值

通过强制C,模拟逻辑条件,方法是在显示状态表后,在状态表的地址列中选中“C”操作数,在“新数值”列写入模拟数值,然后单击工具条的“强制”图标

,被强制的数值旁边将显示锁定图标

成对“C”的“新数值”列的改动后,部写入”,将所有需要的改动发送至PLC。

(5)运行程序并通过状态表监视操作数的当前值,记录状态

表的数据。

(4)在完可以使用“全

5.3 表功能指令

数据表是用来存放字型数据的表格,如图5-23所示。表格的第一个字地址即首地址,为表地址,首地址中的数值是表格的最大长度(TL),即最大填表数。表格的第二个字地址中的数值是表的实际长度(EC),指定表格中的实际填表数。每次向表格中增加新数据后,EC加1。从第三个字地址开始,存放数据(字)。表格最多可存放100个数据(字),不包括指定最大填表数(TL)和实际填表数(EC)的参数。

图5-23 数据表

要建立表格,首先须确定表的最大填表数。如图5-24所示。

// 输入表格的最大填表数 LD SM0.1 MOVW +6, VW200