西门子plc s7-300和400语句表stl编程_第1页
西门子plc s7-300和400语句表stl编程_第2页
西门子plc s7-300和400语句表stl编程_第3页
西门子plc s7-300和400语句表stl编程_第4页
西门子plc s7-300和400语句表stl编程_第5页
已阅读5页,还剩239页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本手册包括应该遵守的注意事项,以保证人身安全及财产损失。在本手册中,与人身安全有关的注意事项通过安全警告符号突出显示,而只与财产损失有关的注意事项则没有安全警告符号。这些注意事项根项根 等级显示如下表示若不采取适当的预防措施,将导 表示若不采取适当的预防措施,将导 或严重的人 表示若不采取适当的预防措施,将可能导 或严重的人 表示若不采取适当的预防措施,将可能导 或严重的人 带安全警告符号时,表示若不采取适当的预防措施,将导致轻微的人 不带安全警告符号时,表示若不采取适当的预防措施,将造成财产损失

当出现多个安全等级时,应该采用高等级的安全提示。安全告符号的人员警告也可能会导致财产损失。只有合格人员才允许对设备/系统进行调试和操作。合格人员规定为根据既定的安全惯例和标准,被对设备、系统和电路进行调试、接地和加装的人员。请注意如下事项该装置及其组件只能用于产品 技术说明书中所阐述的应,并只能与由西门子公司认可或荐的第厂商提供的设备或组件起使用。本产品只有在正确的、、置和安装以及仔细地运行和情况下,才能正确而安全地运标有®的所有名称均为西门子公司的商标本文档中的其它一些标志也是标,如果任何第出于人目而使用,都会商标所有者我们会定期本手册中的内容,在后续版本中进行必要的正。迎提出改进意见。西门自动化与驱动

西门子公 本手册中还包含对描述STL语言元素的语法和功能的参考部分。除此之外,还需要具备计算机知识以及收悉操作系统MSWindows2000Profes-sional、MSWindowsServer2003或XPProfessional。STEP75.4

STL符合国际电工标准IEC1131-3中定义的“指令表”编程语言,但在STEP7NORM_TBL.WRI中为了有效地使用这本语句表手册,你要预先熟悉STEP7中S7编程理论。该编程软件包也使用STEP7标准软件,所以你要熟练使用这个软件并阅读本手册是“STEP7参考资料”整套资料的一部分。下表所示为STEP7的整套资料:资用STEP7基本信向技术人员解释关于使用STEP以及S7-300/400可编程控制器STEP7V5.3编配置硬件和通讯连接,STEP《从S5到S7转换手STEP7参考资介绍一些参考信息以及编程语《S7-300/400LAD、FBD和STL以及STEP(LA)功能块图(FB基本信息的扩展标准功能和系S7-300/400标准和系统功能 STEP7以的形式提供关于使STEP7编程和组态硬件的基本信STL/LAD/FBD参考系统功能块/系统功能(SFB/一个激活的窗口。你可以按动F1或使用中的“?”,通过菜单命令Help>Context-SensitiveHelp,打开文本相关的帮助。你可以使用菜单命令Help>Contents或文本相关帮助窗口中的“HelponSTEP7”按钮,调用STEP7中的一般帮助信息。你也可以通过“Glossary(术语)STEP7

西门子公司还提供有许多培训课程,介绍SIMATICS7自动化系统。与您所在地区的培训中心联系,或与德国纽伦堡(D90327)的总部培训中心联:+49(911)895- 北京:(0108459上海:(02162815933广州:(0203761武汉:(02785486688沈阳:(0242294重庆:(02363828919A&D一天24小时,一年365天全:+49(0)1805050-传真:+49(0)1805050- (城)当地时间:星期一到星期五08:00:00-:+1(0)770740传真:+1(0)770740 当地时间:星期一到星期五:星期一到08:00:00-:+49(0)1805050-:+8610647575传真:+49(0)1805050-传真:+8610647474 和 /automation/service&support(英文) .cn/service(中文)北京:(0106471大连:(0411)83699760上海:(0215879广州:(0208732成都:(0286820前 位逻辑指 1 1 “与 3 4 “或 5 6 7 8O先“与”后“或 9 ON(“或非”运算嵌套开 12X(“异或”运算嵌套开 12 13)嵌套结 14 赋 15 复 16S置 RLO取 18 RLO置位 18 RLO 19 把RLO存入BR寄存 20 21 上升 23比较指 1 1?I整数比较(16位 2?D双整数比较(32位 3?R浮点数比较(32位 4转换指 1 1BTIBCD转成整数(16位 2ITB整数(16位)转成 3 BCD转成整数(32位 4 整数(16位)转成双整数(32位 DTB双整数(32位)转成 6DTR双整数(32位)转成浮点数(32位,IEEE- 7 对整数(16位)求反 8 对双整数(32位)求反 9NEGI对整数(16位)求补 对双整数(32位)求补 NEGR对浮点数(32位,IEEE-FP)求 CAW交换累加器1低字(16位)中的字节顺 CAD交换累加器1(32位)中的字节顺 RND-向下取整为双整 计数器指 1 1 2 将当前计数器值装入累加器 3 将当前计数器值以BCD码形式装入累加器 4 5S设置计数器预设 6 7 8数据块指 1 1 2 3L 将共享数据块的长度装入累加器1 3L 将共享数据块的编号装入累加器1 4L 将背景数据块的长度装入累加器1 4L 将背景数据块的编号装入累加器1 5 1 1 3 4JC若RLO=1,则跳 5 若RLO=0,则跳 6JCB若RLO=1则跳转,同时对BR置 7JNB若RLO=0则跳转,同时对BR复 8JBI若BR=1,则跳 9JNBI若BR=0,则跳 JO若OV=1,则跳 若OS=1,则跳 JM若负,则跳 1 1 2 3 4 5 将累加器2的内容除以累加器1的内容(16位整数运算 6 加整型常数(16位,32位 7 9 /D累加器2的内容除以累加器1的内容(32位双整数运算 12MOD双整数除法的余数(32位 13 1 1 2 3 将累加器1和累加器2中的内容相加(32位浮点数,IEEE- 3 将累加器2中的内容减去累加器1中的内容(32位浮点数,IEEE- 4 将累加器1和累加器2中的内容相乘(32位浮点数,IEEE- 5/R累加器2的内容除以累加器1的内容(32位浮点数,IEEE- 6 取绝对值(32位浮点数,IEEE- 7 8SQR平方运算(32位 8 开方运算(32位 9EXP指数运算(32位 LN自然对数运算(32位 SIN正弦运算(32位 COS余弦运算(32位 TAN正切运算(32位 反正弦运算(32位 反余弦运算(32位 ATAN反正切运算(32位 1 装 2L 将状态字装入累加器 4 将累加器1中的内容装入地址寄存器 5LAR1 6LAR1 将地址寄存器2的内容装入地址寄存器 7 将累加器1中的内容装入地址寄存器 7LAR2 8 传 9T 将累加器1中的内容传送到状态 交换地址寄存器1和地址寄存器2的内 将地址寄存器1中的内容传送到累加器 TAR1<D>将地址寄存器1的内容传送到目的地(32位指针 TAR1 将地址寄存器2中的内容传送到累加器 TAR2<D>将地址寄存器2的内容传送到目的地(32位指针 1 1 2 3 4 块调 5 8调用功 13 14 14 15 16 使用MCR功能的重要注意事 19 将RLO存入MCR堆栈,开始 20)MCR结束 22 激活MCR程序 23 取消激活MCR程序 24 1移位指 1 1SSI移位有符号整数(16位 2SSD移位有符号双整数(32位 3SLW字(16位)左 SRW字(16位)右 6SLD双字(32位)左 7SRD双字(32位)右 8 RLD双字(32位)循环左 RRD双字(32位)循环右 12RLDA通过CC1(32位)对累加器1循环左 13RRDA通过CC1(32位)对累加器1循环右 14 1 1 2 5 将当前定时值作为整数装入累加器 7 将当前定时器值作为BCD码装入累加器 8 9 脉冲定时 13SS保持型延时接通定时 14 16 1 1AW字“与”(16位 2OW字“或”(16位 3XOW字“异或”(16位 4AD双字“与”(32位 6OD双字“或”(32位 7XOD双字“异或”(32位 8 1 1 累加器1与累加器2进行互 2 带有两个累加器的 3 带有四个累加器的 4 带有两个累加器的 5 带有四个累加器的 6 7 7 增加累加器1低字的低字节内 8 减少累加器1低字的低字节内 9 将累加器1加到地址寄存器 将累加器1加到地址寄存器 12NOP 13NOP 13所有语句表指令一览.................................................................................................A-按德文助记符分类的语句表指令...................................................................A-按英文助记符分类的语句表指令(国际).....................................................A-编程举例.................................................................................................B-编程举例概述................................................................................................B-例如:位逻辑指令 B-例如:定时器指令 B-例如:计数器和比较指令..............................................................................B-例如:整数算术运算指令.............................................................................B-例如:字逻辑指令........................................................................................B-参数传递.................................................................................................C-位逻辑指令础。“”和“”称为二进制数字或二进制位。对触点与线圈而言,“”表示10,并根据布尔逻辑对它们进行组合。这些组合产生结果1或0,称为“逻辑运算结果(RLO)”。 RLO RLO置位 RLO RLOBR A<位地区<位<=0、OV、OS、UO、BRCCCC-----xxx1Q4.0信号状AII1.0信号状AI “与非N<位地区<位<=0、OV、OS、UO、BRCCCC-----xxx1 II1.0信号状ANII1.1信号状 QQ4.0信号状态 O<位地区<位<=0、OV、OS、UO、BRCCCC-----0xx1 “或非ON<位地区<位<=0、OV、OS、UO、BRCCCC-----0xx1II “异或X<位地区<位<=0、OV、OS、UO、BRCCCC-----0xx1 “异或XN<位地区<位>=0、<=0、OV、OS、UO、BRCCCC-----0xx1 OCCCC-----x1-x “与”运算嵌套A((“与”运算嵌套开始)RLOOR位以及一个函数代码保存到嵌套堆栈中。最多可有7个嵌套堆栈输入项。CCCC-----01-0 “与非”运算嵌套AN((“与非”运算嵌套开始)RLOOR位以及一个函数代码保存到嵌套堆栈中。最多可有7个嵌套堆栈输入项。CCCC-----01-0 “或”运算嵌套O((“或”操作嵌套开始)RLOOR位以及一个函数代码保存到嵌套堆栈中。最多可有7个嵌套堆栈输入项。CCCC-----01-0 “或非”运算嵌套ON((“或非”运算嵌套开始)RLOOR位以及一个函数代码保存到嵌套堆栈中。最多可有7个嵌套堆栈输入项。CCCC-----01-0 “异或”运算嵌套X((“异或”运算嵌套开始)RLOOR位以及一个函数代码保存到嵌套堆栈中。最多可有7个嵌套堆栈输入项。CCCC-----01-0 “异或非”运算嵌套XN((“异或非”运算嵌套开始)RLOOR位以及一个函数代码保存到嵌套堆栈中。最多可有7个嵌套堆栈输入项。CCCC-----01-0 嵌套))(嵌套结束)OR位,根如果函数代码为“AND(与)”或“ANDNOT(与非)”,则也包括OR位。 CCCC-----x1x1 赋地区<位I、Q、M、L、MCR1,使用赋值指令(位>),RLO写入寻址位,以接通主控继电器。如果MCR=0,则将数值“0”而不是RLO写入寻址位。CCCC-----0x-0 复R<位地区<位I、Q、M、L、RLO1MCR1,则复位指令(R)可以将寻址位复位为“0”。如果MCR=0,则寻址位不变。CCCC-----0x-0 置

S位地区<位I、Q、M、L、RLO1MCR1,则置位指令(S)可以将寻址位置位为“1”。如果MCR=0,则寻址位不变。CCCC-----0x-0 RLO取反使用取反(NOT)指令,可以对RLOCCCC------1x- RLO置位使用RLO置位(SET)指令,可以将RLO的信号状态置为“1CCCC-----0110逻辑运算结果 RLO使用RLO(CLR)指令,可以将RLO的信号状态置为“0”CCCC-----0000 RLOBR寄存

SAVERLOBR/FCBR位的状态包括在下一程序段的“与”(AND)BAVEBAVEEN输出B位设置为CCCCx-------- 下降FN<位区说<位I、Q、M、L、沿标志,RLO的上一信号状态RLO下降沿检测指令(FN<位>)RLO从“1”变为“0”时检测到下降沿,并以RLO=1显示。在每一个程序扫描周期内,RLO位的信号状态将与上一个周期中获得的RLO位信号状态进行比较,看是否有变化。上一个周期的RLO信号状态必须保存在沿标志位地址(<位>)中,以便进行比较。如果在当前和先前的RLO“1”状态之间发生变化(检测到下降沿),则在该指令执行后,RLO位将为“1”。CCCC-----0xx1I1.0OB1扫描周期内使Q4.0线圈得电。OB1扫描周期编号 上升FP<位区说<位I、Q、M、L、沿标志,RLO的上一信号状态RLO上升沿检测指令(FP<位>)RLO从“0”变为“1”时检测到一个上升沿,并以RLO=1显示。在每一个程序扫描周期内,RLO位的信号状态将与上一个周期中获得的RLO位信号状态进行比较,看是否有变化。上一个周期的RLO信号状态必须保存在沿标志位地址(<位>)中,以便进行比较。如果在当前和先前的RLO“0”状态之间发生变化(检测到上升沿),则在该指令执行后,RLO位将为“1”。CCCC-----0xx1I1.0OB1扫描周期内使Q4.0线圈得电。OB1扫描周期编号比较指令根据所选择的比较类型,对累加器1(ACCU1)和累加器2(ACCU2)进行比 1等于累加器 1 1大于累加器 1小于累加器 1 1RLO为“1CC1CC0表示“小? ? ? ? 整数比较(16位

使用整数(16位)21字的内容进行比较。累加器21低字的内容都作为16位整数。比较的结果以RLO以及相关状态字位的设置来表示。RLO=1表示比较的结果为“真”;RLO0表示比较的结果为“假”。状态字位CC1和CC0表示“小CCCC-xx0-0xx1RLO执行的比ACCU2>ACCU时的RLOACCU2=ACCU时的RLOACCU2<ACCU时的RLO010<>101100001110011解L//MW10的内容(16位整数)L=M//IW24的内容(16位整数)////如果MW10>IW24,则RLO=1? 双整数比较(32位

使整数(32位)比较指令,可以将累加器2中的内容与累加器1中的内容进行比较。累加器2和累加器1的内容都作为32位整数。比较的结果以RLO以及相关状态字位的设置来表示。RLO10CC1CC0表示“小于”、“等于”CCCC-xx0-0xx1RLOACCU2>ACCU时的RLOACCU2=ACCU时的RLOACCU2<ACCU时的RLO010101100001110011解L//MD10的内容(32位双整数)L//ID24的内容(32位双整数)=M//比较累加器2中的内容(MD10)是否1中的内容(ID24)//如果MD10>ID24,则RLO=1? 浮点数比较(32位

中的内容进行比较。累加器1和累加器2的内容都作为32位浮点数示比较的结果为“真”;RLO0表示比较的结果为“假”。状态字位CC1和CC0表示“小于”、“等于”或“大于”关系。CCCC-xxxx0xx1RLO执行的比较ACCU2>ACCU时的RLOACCU2=ACCU时的RLOACCU2<ACCU时的RLO010101100001110011解L//装载MD10的内容(浮点数)L装载常1.359E+02=M////如果MD10>1.359E+02,则RLO=1转换指令 BCD转成整数(16位 整数(16位) BCD转成双整数(32位 整数(16位)转成双整数(32位 双整数(32位) 双整数(32位)转成浮点数(32位,IEEE- 对整数求反码(16位 对双整数求反码(32位 对整数求补码(16位 对双整数求补码(32位 对浮点数求反(32位,IEEE-11低字中或整 1低字中的字节顺序(16位 1中的字节顺序(32位132IEEE32位 BCD转成整数(16位使用BTI指令(3BCD数十进制–二进制转换),可以将累加器1低字中3位二进制编码的十进制数(BCD)112的累加器1低字中的BCD数:BCD数的允许范围为-999至+999。位0到位11BCD15BCD数的符号位(0=正数,1=负数)。位12到位14在转换时不使用。如果是转换一个4位BCD数,并占用了无效的位10至位15,则转换时会出现BCDF错误。通常,CPU会进入“STOP(停机)OB121出错响应程序,来处理该同步编CCCC---------解解//BCD1将结果(整数)MW20BCDBCD码转换为整"+915"整 整数(16位)转成使用ITB指令(16位整数的二进制–十进制转换),可以将累加器1低字中的内容解释为一个16位整数,并将其转换为一个3位二进制编码的十进制数(BCD)1011BCD数的数值部1215BCD数的符号状态(0000正数,1111=负数)。累加器1的高字和累加器2的内容保持不变。BCD数的范围在–999和+999之间。如果超出允许范围,则状态位OV(溢出位)和OS(溢出位)被置位为“1”。指令的执行与RLO无关,也不会影响RLOCCCC---xx----T解将整数装入1低字中//将整数转换为BCD数(16位);结1低字中//将结果(BCD数)传送到MW20"-413"整整数转换为BCD BCD转成整数(32位使用BTD指令(7位BCD数十进制–二进制转换),可以将累加器1中的7位二进制编码的十进制数(BCD)32121BCD数:BCD-9,999,999+9,999,999。位027BCD31BCD数的符号位(0正数,1=负数)。位28到位30在转换时不使用。BCD数的任何一位十进制数(BCD编码,4位一组)1015BCDF错误。通常,CPU(停机)OB121出错响应程序,来处理该同步编CCCC---------解L//BCD数装入累加1//BCD数转换为双整数;结果保存到累加器1中T//将结果(双整数)MD20BCDBCD码转换为双整 整数(16位)转成双整数(32位使用ITD指令(1632位整数),可以将累加器1低字中的163212CCCC---------T解//1//将整数(16位)转换为双整数(32位);1//将结果(双整数)MD20例如:MW12=“-10”(整数,16位内1高1低位ITD执行ITD执行(X0或1,这些位不用于转换 双整数(32位)转成使用DTB指令(32位整数的二进制–十进制转换),可以将累加器1中的内容解释为一个32位双整数,并将其转换为一个7位二进制编码的十进制数(BCD)1027BCD数的数值部分。位2831BCD数的符号状态(0000正数,1111=负数)2保持BCD数的范围在-9,999,999和+9,999,999之间。如果超出允许范围,则状态位OV(溢出位)和OS(溢出位)被置位为“1”。CCCC---xx----解解321//将整数(32位)BCD1整整数转换为BCD"-701"整 双整数(32位)转成浮点数(32位,IEEE-DTR指令(3232IEEE浮点数)1中3232位IEEE浮点数。如果必要的话,该指令会对结果进行取整。(一个3232位浮点数精度高)1CCCC---------解L//32位整数装入累加1//将双整数转换为浮点数(32位,IEEEFP);结果保存到累加器1中T//将结果(BCD数)传送到MD20整数(整数(32位)转换成IEEE浮点数(32位"+500"整8位指 对整数(16位)求反使用对整数求反码指令(INVI)116位数值求反码。加器1的低字中。CCCC---------解L将数值装入1低字中16位数求反码T//MW10内1低位INVIINVI 对双整数(32位)求反使用对双整数求反码指令(INVD),可以对累加器1中的32位数值求反码。加器1中。CCCC---------解L将数值装入1中32位数求反码T//将结果传送到MD10内1高1低位INVD执行INVD执行 对整数(16位)求补使用对整数求补码指令(NEGI),116位数值求补码。的内容加“1”。转换结果保存在累加器1的低字中。求补码指令相当于该数乘以“-1”。状态位CC1、CC0、OS和OV将根据运算的结果进行设置。CCCC-xxxx----CCCC结果=000--32768结果=0111解L将数值装入1低字中16位数求补码T//MW10内1低位NEGI执行NEGI执行 对双整数(32位)求补使用对双整数(NEGD)求补码指令,可以对累加器1中的32位数值求补码。指令的执行与RLO无关,也不影响RLO。状态位CC1、CC0、OS和OV将CCCC-xxxx----CCCC结果=000-2,147,483,648-010-2,147,483,647100-结果0111解解132//MD10内1高1低位NEGD执行NEGD执行 对浮点数(32位,IEEE-FP)求

使用NEGR(对32位IEEE浮点数求反)1(32位,IEEE-FP)1中位31(尾数的符号位)1CCCC---------解解//1中(例如:ID81.5E+02)//将浮点数(32位,IEEEFP)1//将结果传送到MD10(例如:结果=-1.5E+02) 交换累1低字(16位)中使用CAW112CCCC---------解L//MW10的数值装入累加器1T//MW20内累加器1累加器1累加器1累加器1CAW执行数值CAW执行数值 交换累1(32位)中的字节CAD11中。累加器2保持不变。CCCC---------解L//MD10的数值装入1T//将结果传送到MD20内累加器1累加器1累加器1累加器1CAD执行数值CAD执行数值 取RND指令(32位IEEE浮点数转换成为32位整数)将累加器1中的内容解释为一个32位IEEE浮点数(32位,IEEE-FP)。该指令将32位IEEE浮点数转换成为一个32位整数(双整数),并将结果取整为最近的整数。如果被转允许范围,则状态位OV(溢出位)和OS(溢出位)被置位为“1”。结果保存在累加器1中。CCCC---xx----解L将浮点数装入累加1中//将浮点数(32位,IEEEFP)转换为整数,并将结果取整T//将结果(双整数)MD20MD10==>RNDMD20=MD10="-=>RNDMD20="- 截尾TRUNC指令(32位IEEE浮点数转换成为32位整数)将累加器1中的内容32IEEE32IEEE32位整数(双整数)。结果为所转换浮点数的整数部分(IEEE取整方式“截尾取整”)。如果数值超出允许范围,则状态位OV(溢出位)和OS(溢出位)被置位为“1”。结果保存在累加器1中。CCCC---xx----解解1//将浮点数(32位,IEEE-FP)转换为整数(32位)并对结果取整。结果保存在累加器1中。//将结果(双整数)MD20MD10==>TRUNCMD20=MD10="-=>TRUNCMD20="- 向上取整为双RND+指令(32位IEEE浮点数转换成为32位整数)将累加器1中的内容解32IEEE32IEEE32位整数(双整数),并将结果取整为大于或等于该浮点数的最小整数(IEEE取整方式“向上取整”)。如果数值超出允许范围,则状态位OV(溢出位)和OS(溢出位)被置位为“1”。结果保存在累加器1中CCCC---xx----解解//将浮点数(32位,IEEE-FP)1//将浮点数(32位,IEEEFP)转换为整数(32位),并将结果取整。结果保存在累加器1中。//将结果(双整数)MD20MD10==>RND+MD20=MD10="-=>RND+MD20="- 向下取整为双RND-指令(32位IEEE32位整数)将累加器1中的内容解释为一个32位IEEE浮点数。该指令将32位IEEE浮点数转换成为一个32式“向下取整”)。如果数值超出允许范围,则状态位OV(溢出位)和OS(溢出位)被置位为“1”。结果保存在累加器1中CCCC---xx----解L将浮点数装入累加1中//将浮点数(32位,IEEEFP)转换为整数(32位),并将结果取整。结果T1中//将结果(双整数)MD20MD10==>RND-MD20=MD10="-=>RND-MD20="-计数器指令计数器是STEP7编程语言的功能单元之一,用来计数。在CPU区中留有一块计数器区域。该区为每一计数器保留一个16位的字。语句表指令集提供了256个计数器。你所使用的CPU能提供多少个计数器,请参见相应CPU BCD码装入累加器 使能计数器(任意FR<计数器地区说<计数器C当RLO从“0”变为“1”时,该指令将清出沿检测标志,该标志用于设置和选RLO是否为“1”,CCCC-----0--0 I 解I2.0//RLO从“0”变为“1C3 将当前计数器值装入累加器L<计数器地区说<计数器C121CCCC---------解解C31器C3的计二进制编码计数数值(0装载指令LC3执行后累加器1低字二进制编码计数数值(0 将当前计数器BCD码形式装入累加器LC<计数器地区说<计数器C12中之后,将所寻址计数器的当前计数值以BCD形式装入累加器1中。CCCC---------解解//C3的计数值以二进制编码的十进制格式(BCD)1低器器中计数器C3的计数二进制编码计数数值(0装载指令LCC3执行后累加器1低字中的 计数器R<计数器地区说<计数器C如果RLO=1CCCC-----0--0解AI检查输I2.3的信号状态R//RLO从“0”变为“1C3复位为“0 设置计数器预S计数器地区说<计数器CRLO从“0”变为“11低字中装入计数器。累加器1中的计数值必须是0–999之间的BCD数。CCCC-----0--0 解释AI检查输I2.3的信号状态L将计数数值“3”装入1低字中S//RLO从“0”变为“1”时,设置计数器C1的计数 加计数CU<计数器地区说<计数器CRLO从“0”变为“1”时,该指令将使所寻址计数器的计数值加“1”,并且计数小于“999”。当计数到达其上限“999”时,停止加计数。其它RLO状态CCCC-----0--0 I解//RLO从“0”变为“1C3加“1 减计数CD<计数器地区说<计数器CRLO从“0”变为“1”时,该指令将使所寻址计数器的计数值减“1”,并且计数大于“0”。当计数到达其下限“0”时,停止计数。其它RLO状态跳变对CCCC-----0--0解L//装载计AI0检测I0.1的上升沿后预置计S//AII0.0的上升沿进行一次减计数//C1位检测是否为“0=Q//如果计数器1为“0Q0.01数据块指令 L 1L 1L 1L 1 打开数

OPN数据块地<数据块DB、1-CCCC---------解//打开DB10作为共享数据块L//将所打开数据块的数据35装入累加1低字中T//1MW22//打开DB20作为背景数据块L//将所打开背景数据块的数12装入累加1低字T//将累加1低字中的内容传送到已打开共享数据块的数据字节37中 交换共享数据块和背景

CCCC---------L 将共享数据块的长度装入累1L

1CCCC---------解//打开DB10作为共享数据块L//装入共享数据块的长度(DB10的长度)L//比较数据块的长度是否足够长//如果长度小于MD10中的数值,则跳转至ERRO跳转标号L 将共享数据块的编号装入累1L

1CCCC---------L 将背景数据块的长度装入累1L

1CCCC---------解//打开DB20作为背景数据块L//装载背景数据块的长度(DB20的长度)L//比较数据块的长度是否足够//如果长度小于MW10中的数值,则跳转至ERRO跳转标号L 将背景数据块的编号装入累1L

1CCCC---------逻辑控制指令4个字符,第S7-300CPU程序,跳转目的地总是从(318-2)跳转指 RLO1 RLO0 RLO1BR RLO0BR BR1 BR0 OV1 OS1 无条件JU<跳转标号地说-32768或个程序代码字。实际跳转的最大长度取决于程序中所使CCCC---------解AIAI//如果RLO=1,则跳转到跳转标号DELEL1T//无条件跳转到跳FORWL0TAI//在跳转到跳FORW之后继续进行程序扫描 跳转到

JL<跳转标号地说使用该指令(通过跳转到列表进行跳转),可以进行多级跳转。最多有255个跳跳转目标包含一条无条件跳转指令(JU)。跳转目标的数量(0–255)在累加器1低字的低字节中。JL指令和跳转标号之间跳转目标的数量,JL指令就跳转JU1低字的低字节为“0JU1低字的低字节为“1JU指令,依此类推。如果跳转目标的数量太大,则JL指令跳转到目标列表中最后一个JU指令之后JUJL指令的地址区内进行相应的CCCC---------解L//*允许的*允许的*允许的* 若RLO=1,则JC<跳转标号地说RLO=1,则该指令可以中断当前线性程序扫描,并跳转到一个跳转目标,在个程序块内。跳转目标在该块内必须是唯一的。最大跳转距离为-32768或如果CCCC-----0110解AIAI//如果RLO=1,则跳转到JOVRL//如果没有执行跳转,则继TAI//在跳转JOVR之后继续进行程序扫描 若RLO=0,则JCN<跳转标号地说RLO=0,则该指令可以中断当前线性程序扫描,并跳转到一个跳转目标,在一个程序块内。跳转目标在该块内必须是唯一的。最大跳转距离为-32768或RLO=1CCCC-----0110解AIAI//如果RLO0L//如果没有执行跳转TAI//在跳转JOVR之后继续进行程序扫 若RLO=1则跳转,同时对BRJCB<跳转标号地说RLO=1,该指令将中断当前线性程序扫描,并跳转到一个跳转目标。在跳转一个程序块内。跳转目标在该块内必须是唯一的。最大跳转距离为-32768或RLOBR中,而与RLOCCCCx----0110解释AIAILTJOVR:I在跳转JOVR之继续进行程序扫 RLO0则跳转,同时BRJNB<跳转标号地说RLO=0,该指令将中断当前线性程序扫描,并跳转到一个跳转目标。在跳转一个程序块内。跳转目标在该块内必须是唯一的。最大跳转距离为-32768或RLOBR中,而与RLOCCCCx----0110解解TJOVRII1.2I 到BR//如果没有执行跳转//在跳转JOVR之后继续进行程序扫 若BR=1,则JBI<跳转标号地说如果状态位BR=1,该指令将中断当前线性程序扫描,并跳转到一个跳转目标。CCCC-----01-0 若BR=0,则JNBI<跳转标号地说如果状态位BR=0,该指令将中断当前线性程序扫描,并跳转到一个跳转目标。 CCCC-----01-0 若OV=1,则JO<跳转标号地说如果状态位OV=1,该指令将中断当前线性程序扫描,并跳转到一个跳转目标。 CCCC---------解释LL3//MW10的内容乘//T//如果没有跳转,则继续执行程AMRMOVER: M //在跳转OVER之后继续进行程序扫 MNEXT:NOP //在跳转NEXT之后继续进行程序扫 OS1,则JOS<跳转标号地说如果状态位OS=1,该指令将中断当前线性程序扫描,并跳转到一个跳转目标。 解释LL-//T//如果没有执行跳转AMRMOVER: M //在跳转OVER之后继续进行程序扫 MNEXT:NOP //在跳转NEXT之后继续进行程序扫

CCCC----0---- 若零,则JZ<跳转标号地说如果状态位CC1=0并且CC00,该指令将中断当前线性程序扫描,并跳转-32768或个程序代码字。实际跳转的最大长度取决于程序中CCCC--------- 解释 ZERO:L NEXT:NOP

//如果已移出位0,则跳转到ZERO//如果没有执行跳转,则继//在跳转到ZERO之后继续进行程序扫描//在跳转NEXT之后继续进行程序扫描 若非零,则JN<跳转标号地说如果由状态位CC1和CC0指示的结果大于或小于零(CC1=0/CC0=1或CC1=1/CC0=0),该指令将中断当前线性程序扫描,并跳转到一个跳转目标。在跳同一个程序块内。跳转目标在该块内必须是唯一的。最大跳转距离为-32768或CCCC--------- 解释 M M NOZE: M MNEXT:NOP

//如果1低字的内容不等于“0”,则跳转NOZE//如果没有执行跳转,则继//在跳转NOZE之后继续进行程序扫描//在跳转NEXT之后继续进行程序扫描 若正,则JP<跳转标号地说如果状态位CC1=1并且CC00,该指令将中断当前线性程序扫描,并跳转-32768或个程序代码字。实际跳转的最大长度取决于程序中CCCC---------解LL-//IW8的内容减MW12的内容。//如果结果>0(即,累加1中的内容大于“0”),则M//如果没有执行跳转,则继SMM//在跳POS之后继续进行程序SNOPM//在跳转NEXT之后继续进行程序扫描 若负,则JM跳转标号地说如果状态位CC1=0并且CC01,该指令将中断当前线性程序扫描,并跳转-32768或个程序代码字。实际跳转的最大长度取决于程序中CCCC---------解LL-//IW8的内容减MW12的内容。//如果结0(即,累加1中的内容小于“0”),//如果没有执行跳转,则继SNEG: //在跳转NEG之后继续进行程序扫描 NEXT:NOP //在跳转NEXT之后继续进行程序扫描 若大于或等于零,则JPZ<跳转标号地说如果由状态位CC1和CC0指示的结果大于或等于零(CC1=0/CC0=0或CC1=1/CC0=0),该指令将中断当前线性程序扫描,并跳转到一个跳转目标。在跳同一个程序块内。跳转目标在该块内必须是唯一的。最大跳转距离为-32768或CCCC---------解REG0:NEXT:NOP0MM4.0MM//将IW8的内容减去MW12//0(10”),//REG0NEXT 若小于或等于零,则JMZ跳转标号地说如果由状态位CC1和CC0指示的结果小于或等于零(CC1=0/CC0=0或CC1=0/CC0=1),该指令将中断当前线性程序扫描,并跳转到一个跳转目标。在跳同一个程序块内。跳转目标在该块内必须是唯一的。最大跳转距离为-32768或CCCC--------- 解释 - M M RGE0: M MNEXT:NOP

//IW8的内容减MW12的内容。//如果结0(即,累加1中的内0”),则跳转//如果没有执行跳转,则继//在跳转RGE0之后继续进行程序//在跳转NEXT之后继续进行程序扫描 若运算无效,则JUO<跳转标号地说如果状态位CC1=1并且CC01,该指令将中断当前线性程序扫描,并跳转-32768或个程序代码字。实际跳转的最大长度取决于程序中CC11CC0除数为0CCCC---------解LL//MD10的内ID2的内//T//如果没有执行跳转,则继AMRMERRO:M//在跳转ERRO之后继续进行程序扫描SNEXT:NOPM//在跳转NEXT之后继续进行程序扫描 循环LOOP<跳转标号地说使用循环控制指令(累加器1低字中的值减“11该指令可以跳转到指定跳转目标。只要累加器1低字中的值不为“0”就跳转,目标在该块内必须是唯一的。最大跳转距离为-32768或 CCCC---------解L//将整数常数(32位)装入累加1T//1MD20(初始化)L5//T跳转标号=/将累加1低字中的内容传送到循环计数器L*TD//MD20的当前内容乘以MB10的当前内容。//将相乘结果传送到MD20L将循环计数器的内容装入累加1中并跳转到NEXT跳转标号L//循环结束之后重新进行L整数算术运算指令12的内容。对于两个累加器的CPU2的如果CPU具有4个累加器,将累加器3的内容到累加器2中,将累加器4的内容到累加器3中。而累加器4中原有的内容保持不变。使用整数算术运算指令,可以进行以下两个整数(1632位) 将累加器1和累加器2中的内容相加(16位整数运算- 将累加器1和累加器2中的内容相乘(16位整数运算 加整型常数(16位,32位 将累加器1和累加器2中的内容相加(32位双整数运算 将累加器2中的内容减去累加器1中的内容(32位双整数运 将累加器1和累加器2中的内容相乘(32位双整数运算 将累加器2中的内容除以累加器1中的内容(32位双整数运 判断整数算术运算指令后状态字整数算术运算指令可以影响以下状态字中的位:CC1和CC0,OV和OS。下表所示整数(1632位)运算指令结果的状态字中各位的信号状态:CCCC0000*16位:-32768≤结果<0(负数32位:-2147483648≤结果<0(负数010*16位:32767≥结果>0(正数32位:2147483647≥结果>0(正数100**OSCCCC16位:结果32位:结果=-4294967001116位:结果<-32768(负数32位:结果<-2147483648(负数011116位:结果>32767(正数32位:结果>2147483647(正数011116位:结果>32767(正数32位:结果>2147483647(正数101116位:结果<-32768(负数32位:结果<-2147483648(负数1011被01111操CCCC+D:结果=-42949670011/D或MOD:被01111 将累加器1和累加器2中的内容相加(16位整数运算16位整数加法指令(+I)12112低字中16RLORLO没有影响。CC1、CC0、OSOV根据运算结果进行设置。在出现上溢/下溢时,指令产生一个16位整数,而不是32位整数。CPU2对于具有4个累加器的CPU,将累加器3的内容到累加器2中,将累器4的内容到累加器3中。而累加器4的内容保持不变。CCCC-xxxx----CCC32767≥和>100-001165534≥和>0111-65535≤和1011解L//IW10的数值装入1L//将累加器1低字中的内容装入累加器2低字中。将字MW14的值入累加器1低字 //将累加2低字和累加1低字中的内容相加;结果保存到累加1低 //累加器1低字的内容(结果)被传DB1的DBW25 将累加器2的内容减累加器1的内容(16位整数运算16位整数减法指令(-I)21字中的内容,结果保存在累加器1低字中。累加器1和累加器2低字中的内容解释为16位整数。指令的执行与RLO无关,而且对RLO没有影响。状态字位CC1、CC0、OS和OV根据运算结果进行设置。在出现上溢/下溢时,指令产生一个16位整数,而不是32位整数。CPU2对于具有4个累加器的CPU,将累加器3的内容到累加器2中,将累器4的内容到累加器3中。而累加器4的内容保持不变。CCCC-xxxx----CCC32767≥差>100-65535≥差>0111-65535≤差1011解L//IW10的数值装入1低字节L//将累加器1低字中的内容装入累加器2MW14的值装入累1低字- //将累加2低字中的内容减去累加1低字中的内容;结果保存到1低字中 //累加器1低字的内容(结果)被传DB1的DBW25 将累加器1和累加器2中的内容相乘(16位整数运算12低字中的内容解释为16位整数。结果作为一个32位整数保存在累加器1中。如果状态字位OV1=1且OS=1,则结果超出16位整数的范围。指令的执行与RLO无关,而且对RLO没有影响。状态字位CC1、CC0、OVCPU2对于具有4个累加器的CPU,将累加器3的内容到累加器2中,将累器4的内容到累加器3中CCCC-xxxx----CCC32767≥积>100-1011 0111

//IW10的数值装入1低字节//1低字中的内容装入累加2低字MW14的内容装入累加器1低字。//将累加2低字和累加器1低字中的内容相乘;结果保存到累加1中//1的内容(结果)被传DB1的DBD25 将累加器2的内容除以累加器1的内容(16位整数运算

1216影响。状态字位CC1、CC0、OS和OV根据运算结果进行设置。CPU24个累加器的CPU,将累加器3的内容到累加器2中,将累加器4的内容到累加器3中。而累加器4的内容保持不变。CCCC-xxxx----CCCC000-32768≤商010-32767≥商>100-10111111解L//IW10的数值装入1低字节L//12低字中。MW14的值装入累1低字//将累加2低字中的内容除以1低字中的内容;结果保存到T1中:商数到累加器1低字中,余数到累加器1高字中//累加器1的内容(结果)被传送MD20例如:13被42低字中的内容1低字中的内容/I(累加2低字中的内容/累加1低字中的内容1低字中的内容(商1高字中的内容(余数 加整型常数(16位,32位+<整型常数地说(16位或32位整数使用加整型常数指令(+<整型常数>),可以对累加器1中的内容加上一个整1中。指令的执行与状态字位无关,而且对状态字位16位整型常数>116位整型常数(–32768 )1+<32位整型常数>:对累加器132位整型常数(CCCC--------- 解//IW10的数值装入1低字节//1低字中的内容装入累加2低字中。MW14的值装入累加器1低字。//将累加2低字和累加1低字中的内容相结果保存到累加1+//将累加1低字的内容加“25”;结果保存到累加1低字中T//将累加器1低字的内容(结果)传DB1的DBW25中2解LL+//将累加1低字的内容加“100”;结果保存到累加1低字中//如果累加器2中的内容大于累加器1中的内IW12IW14100)//3解LL+L#-//将累加1和累加2中的内容相加;结果保存到累加1中//将累加1中的内容和“-200”相加;结果保存到累加1中T 将累加器1和累加器2的内容相加(32位双整数运算32位双整数加法指令(+D)12RLORLOCC1CC0、OS和OV根据运算结果进行设置。CPU2对于具有4个累加器的CPU,将累加器3的内容到累加器2中,将累器4的内容到累加器3中。而累加器4的内容保持不变。CCCC-xxxx----CCCC000- 010-100-001≥和0111 1011解L//ID10的数值装入累加1LT//将累1中的内容装入累加2中。将MD14的值装入累加器1//将累加2中的内容和累加1中的内容相加;结果保存到累加1中//1的内容(结果)被传DB1的DBD25 累加器2的内容减累加器1的内容(32位双整数运算-32位双整数减法指令(-D)21OS和OV根据运算结果设置。CPU2对于具有4个累加器的CPU,将累加器3的内容到累加器2中,将累器4的内容到累加器3中。而累加器4的内容保持不变。CCCC-xxxx----CCCC000- 010-100-≥差0111 1011解L//ID10的数值装入累加1LT//将累1中的内容装入累加2中。将MD14的值装入累加器1//将累加2中的内容减去累加器1中的内容;结果保存到1中//1的内容(结果)被传DB1的DBD25 将累加器1和累加器2的内容相乘(32位双整数运算32位双整数乘法指令(*D)211232321OV11OS132执行指令与RLO无关,而且对RLO没有影响。状态字位CC1、CC0、OSOVCPU2对于具有4个累加器的CPU,将累加器3的内容到累加器2中,将累器4的内容到累加器3中。而累加器4的内容保持不变。CCCC-xxxx----CCCC000- 010-100-10110111解L//ID10的数值装入累加1LT//将累1中的内容装入累加2中。将MD14的值装入累加器1//将累加2中的内容和累加1中的内容相乘;结果保存到累加1中//1的内容(结果)被传DB1的DBD25 累加器2的内容除以累加器1的内容(32位双整数运算

32位双整数除法指令(/D)2112321中。结果只给出了商,没有余数。(使用指令MOD,可以获得余数)执行指令与RLO无关,而且对RLO没有影响。状态字位C

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论