西门子plc编程举例.ppt
第四章 S7-300指令系统 数字指令,要求:1、了解S7-300编程软件STEP7的基本数据类型。2、了解S7-300系列PLC的各种数字指令3、能编写简单程序。,一、S7-300系列PLC编成语言-STEP7,详细资料见梯形图(LAD)手册或语句表(STL)手册,PLC的编程语言有3种:1、梯形图(LAD)方式 2、语句表(STL)方式 3、功能块图(FBD)方式,I124.0,(),Q125.1,例1 梯形图方式,例2 语句表方式,A I124.0A I124.1=Q125.1,例3 功能块图方式,I124.1,&,I124.0,I124.1,=,Q125.1,二、S7-300指令系统(梯形图方式),1、位逻辑指令 2、比较指令 3、转换指令 4、计数器指令 5、数据块指令 6、逻辑控制指令 7、整数算术运算指令 8、浮点算术运算指令9、赋值指令 10、程序控制指令 11、移位和循环指令,12、状态位指令13、定时器指令14、字逻辑指令详细资料见梯形图(LAD)手册或语句表(STL)手册,三、S7-300系列PLC数字指令,2、比较指令 3、转换指令 4、计数器指令 5、数据块指令 6、逻辑控制指令 7、整数算术运算指令 8、浮点算术运算指令9、赋值指令 10、程序控制指令 11、移位和循环指令,12、状态位指令13、定时器指令14、字逻辑指令详细资料见梯形图(LAD)手册或语句表(STL)手册注:这些运算分整数(2个字节)运算、双整数(4个字节)运算、实数(即浮点数)运算等。,四、STEP 7基本数据类型,BOOL1True 或 False(1 或0)BYTE8B#16#A9WORD16W#16#12AFDWORD32DW#16#ADAC1EF5CHAR8 w S5TIME16S5T#5s_200msINT16123DINT32L#65539REAL321.2 或 34.5E-12TIME32T#2D_1H_3M_45S_12MSDATE16D#1993-01-20TIME_OF_DAY32TOD#12:23:45,关键字,长度(位),该类型的常数举例,用户定义的变量或常数可以为以上基本数据类型,五、S7-300PLC的特殊功能寄存器,累计器1(ACCU1)32位累计器2(ACCU2)32位地址寄存器1(AR1)32位地址寄存器2(AR2)32位数据块地址寄存器DB(共享数据块)32位数据块地址寄存器DI(背景数据块)32位状态寄存器 16位,状态字,状态字用于表示CPU执行指令时所具有的状态。某些指令可否执行或以何种方式执行可能取决于状态字中的某些位,指令执行时也可能改变状态字中的某些位,可以用位逻辑指令或字逻辑指令访问并检测状态字。,状态字的结构,首位检测位(FC)逻辑操作结果(RLO)状态位(STA)或位(OR)溢出位(OV)溢出状态保持位(OS)条件码1(CC1)和条件码0(CC0)二进制结果位(BR),编程元件 对应的存储区1.输入继电器I 输入映像寄存器区I2.输出继电器Q 输出映像寄存器区Q3.辅助继电器M 位存储区M4.外部输入寄存器 PI 外部输入寄存器区PI 5.外部输出寄存器PQ 外部输出寄存器区PQ 6.定时器T(共5种)定时器区T7.计数器C(共3种)计数器区C8.数据块寄存器DB 数据块寄存器区DB9.本地数据寄存器L 本地数据寄存器区L,六、数字指令所用到的操作数,地址的表示方法:,例如:I 2.1或 IX2.1IB3 Q0.1,区域标识符 访问方式 位置,编程元件地址的表示方法,例如:QW4,区域标识符,访问方式,位置,区域标识符:指出该地址在存储器的哪个区域,各字母代表的存储区域如下。(P89)I:输入映像寄存器区(数字入)Q:输出映像寄存器区(数字出)PI:外部输入区(模拟输入)PQ:外部输出区(模拟输出)M:标志位存储区T:定时器存储区C:计数器存储区L:局部变量存储区DB:数据存储区,访问方式:X:位(一般可省略)B:字节W:字D:双字位置:不同的CPU位置范围不同。参考P47,例I1.0 IB2 IW4 ID0Q2.0 QB0 QW6 QD2PIW2 PQW4M4.0 MB2 MW4 MD8L2.2 LB1 LW4 LD4T1 T5C0 C3,字节单元为存储单元,S7系列PLC的物理存储器以字节为单位,所以规定字节单元为存储单元,每个字节单元存储8位信息。存储单元可以位、字节、字、双字为单位使用,例如,MW0由MB0和MB1组成,MB0是高位字节,MB1是低位字节。在分配存储区地址时,要防止因字节重叠造成读写错误。,七、典型数字指令,二、比较指令P124,根据所选比较类型,对 IN1 和 IN2 进行比较:=表示IN1 等于 IN2 表示IN1 不等于 IN2 表示IN1 大于 IN2=表示IN1 大于等于 IN2=表示IN1 小于等于 IN2如果比较结果为真,则功能的RLO 为“1”。下述比较指令可供使用:CMP?I 整数比较 CMP?D 双整数比较 CMP?R 实数比较,CMP?I 整数比较,例,如果下列条件成立,则输出 Q4.0 置位:在输入 I0.0 和 I0.1 的信号状态为“1”并且MW0=MW2,CMP?D 双整数比较,例,如果下列条件成立,则输出 Q4.0 置位:在输入 I0.0 和 I0.1 的信号状态为“1”并且 MD0=MD4 并且,输入 I0.2 的信号状态为“1”,CMP?R 实数比较,例,如果下列条件成立,则输出 Q4.0 置位:在输入 I0.0 和 I0.1 的信号状态为“1”并且 MD0=MD4 并且,输入 I0.2 的信号状态为“1”,三、转换指令P118,下述转换指令可供使用:BCD_I BCD 码转换为整数 I_BCD 整数转换为BCD 码 BCD_DI BCD 码转换为双整数 I_DINT 整数转换为双整数 DI_BCD 双整数转换为BCD 码 DI_REAL 双整数转换为浮点数 INV_I 整数的二进制反码 INV_DI 双整数的二进制反码,NEG_I 整数的二进制补码 NEG_DI 双整数的二进制补码 NEG_R 浮点数求反 ROUND 舍入为双整数 TRUNC 舍去小数取整为双整数 CEIL 上取整 FLOOR 下取整,例1,例2,如果I0.0 为“1”,则 MW10 的内容作为整数读入,并转换为一个双整数。其结果保存在MD12 中。如果不执行转换(ENO=EN=0),则输出 Q4.0 为“1”,四、整数算数运算指令P121,使用整数算术运算指令,可以进行以下两个整数(16 位和 32 位)之间的运算:ADD_I 整数加法 SUB_I 整数减法 MUL_I 整数乘法 DIV_I 整数除法 ADD_DI 双整数加法 SUB_DI 双整数减法 MUL_DI 双整数乘法 DIV_DI 双整数除法 MOD_DI 回送余数的双整数,如果I0.0=“1”,则ADD_I 方块激活。MW0+MW2 相加的结果放入MW10 中。如果结果在整数的允许范围之外,则输出Q4.0 置位。,例1,例2 解决算术问题如何使用 3 种整数算术运算指令产生如下列方程一样的结果:MW4=(IW0+DBW3)x 15)/MW0,打开数据块 DB1。,五、浮点数运算指令P121,32 位标准IEEE 浮点数完成以下算术运算:ADD_R 实数加法 SUB_R 实数减法 MUL_R 实数乘法 DIV_R 实数除法 完成一个浮点数的绝对值运算(ABS)完成一个浮点数的平方(SQR)和平方根(SQRT)运算 完成一个用 32 位标准IEEE 浮点数表示的角度的以下三角函数运算:-正弦(SIN)和反正弦(ASIN)运算-余弦(COS)和反余弦(ACOS)运算-正切(TAN)和反正切(ATAN)运算,例,如果I0.0=“1”,则ADD_R 方块激活。MD0+MD4 相加的结果放入MD10 中。如果结果在浮点数的允许范围之外或程序语句没有执行(I0.0=“0”),则输出Q4.0 置位。,六、数据块指令,例,数据块10(DB10)被打开。接点地址(DBX0.0)指的是数据块DB10 中包含的当前数据记录的数据字节 0 的 0 位。该位的信号状态被赋值给输出Q4.0。,-(OPN)打开数据块:DB 或DI,七、赋值指令P197,MOVE 赋值,例,如果 I0.0=“1”,则执行指令。MW10 的内容被复制到当前打开的数据块的数据字12中。如果执行指令,则 Q4.0 为“1”。,参数 数据类型 存储区域 说明EN BOOL I,Q,M,L,D 使能输入ENO BOOL I,Q,M,L,D 使能输出IN 所有数据类型,长度可为 8位、16 位或 32 位 I,Q,M,L,D 或 常数 源数值OUT 所有数据类型,长度可为 8位、16 位或 32 位 I,Q,M,L,D 目的地址,装载举例,数据装入和传递(1),L+5/16-位常数(整数)L L#523123/32-位常数(双整数)L B#16#EF/十六进制字节L 2#0010 0110 1110 0011/16-位二进制值L 3.14/32-位常数(实数),数据装入和传递(2),:L W#16#CAFE,L W#16#AFFE:,ACCU2内容,ACCU1内容,程序,X,X,X,X,X,X,X,X,数据装入和传递(3),装载,L MB 0,程序,T QD 4,QD 4,QW 4,QB 4,传递,L MW 0,L MD 0,T QW 4,T QB 4,八、逻辑控制指令P133,逻辑控制指令可以用于所有逻辑块:组织块(OB),功能块(FB)和功能(FC)。可执行下列功能的逻辑控制指令:-(JMP)-无条件跳转-(JMP)-条件跳转-(JMPN)-若非则跳转,例1 无条件跳转,例2 有条件跳转,无条件跳转(不依赖于 RLO),条件跳转(依赖于 RLO),九、程序控制指令,下述程序控制指令可供使用:-(CALL)从线圈调用 FC/SFC(无参数)CALL_FB 从方块调用 FB CALL_FC 从方块调用 FC CALL_SFB 从方块调用 SFB CALL_SFC 从方块调用 SFC 调用多背景块 从库中调用块,十、移位和循环指令P199,下述移位指令可供使用:SHR_I 整数右移 SHR_DI 双整数右移 SHL_W 字左移 SHR_W 字右移 SHL_DW 双字左移 SHR_DW 双字右移,例,如果 I0.0=“1”,则 SHR_I 方块激活。MW0 装入,并右移使用 MW2 指定的位数。其结果被写入 MW4 中。Q4.0 置位。,下图所示为包括两台传送带的系统,在两台传送带之间有一个临时仓库区。传送带1 将包裹运送至仓库区。传送带1 靠近仓库区一端安装的光电传感器确定已有多少包裹运送至仓库区。传送带2 将临时库区中的包裹运送至装货场,在这里货物由卡运送至顾客。传送带2 靠近仓库区一端安装的光电传感器确定已有多少包裹从仓库区运送至装货场。含 5 个指示灯的显示面板表示临时仓库区的占用程度。,输入点:光电传感器1 I12.0光电传感器2 I12.1仓库置初值 I12.2设备启动 I12.4设备停止 I12.5,输出点:仓库区空 Q12.0仓库区不空 Q12.1仓库区装入大于等于50%Q15.3仓库区装入大于等于90%Q15.4 仓库区满 Q15.4传送带1前进 Q15.5传送带2前进 Q15.6,(),I2.4,I2.5,M0.0,(),M0.0,I12.0,Q15.5,M0.0,(),M0.0,I12.1,Q15.6,进库,出库,置初值,清零,Q12.0,S7-300指令系统(语句表STL方式),STL指令与LAD和FBD相比,指令集更为丰富。因此LAD、FBD的代码可以转换为STL代码,但并非所有的STL代码都可以转换成LAD或FBD。,1、位逻辑指令 2、比较指令 3、转换指令 4、计数器指令 5、数据块指令 6、逻辑控制指令 7、整数算术运算指令 8、浮点算术运算指令,9、装入和传送指令 10、程序控制指令 11、移位和循环指令12、定时器指令13、字逻辑指令14、累加器操作指令详细资料语句表(STL)手册,S7-300指令系统(梯形图方式),1、位逻辑指令 2、比较指令 3、转换指令 4、计数器指令 5、数据块指令 6、逻辑控制指令 7、整数算术运算指令 8、浮点算术运算指令9、赋值指令 10、程序控制指令 11、移位和循环指令,12、状态位指令13、定时器指令14、字逻辑指令详细资料见梯形图(LAD)手册或语句表(STL)手册,