版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、s7-200 smart的功能指令,4.1 功能指令概述 4.1.1 怎样学习功能指令 功能指令分为较常用的指令、与数据的基本操作有关的指令、与plc的高级应用有关的指令和用得较少的指令。 初学功能指令时,首先可以按指令的分类浏览所有的指令。初学者没有必要花大量的时间去熟悉功能指令使用中的细节,应重点了解指令的基本功能和有关的基本概念。应通过读程序、编程序和调试程序来学习功能指令。 4.1.2 s7-200 的指令规约,1使能输入与使能输出 使能输入端en流入方框指令时,指令才能被执行。 en输入端有能流且指令执行时无错误,则使能输出eno将能流传递给下一个方框指令或线圈。 语句表用aeno指
2、令来产生与方框指令的eno相同的效果。删除aeno指令后,方框指令将由串联变为并联,2梯形图中的指令 条件输入指令必须通过触点电路连接到左侧母线上。不需要条件的指令必须直接连接在左侧母线上。键入语句表指令时,必须使用英文的标点符号。 3能流指示器 双箭头是开路能流指示器,必须解决开路问题,程序段才能成功编译。可将其他梯形图元件附加到eno端的可选能流指示器。没有在该位置添加元件,程序段也能成功编译,4.2 数据处理指令 4.2.1 比较指令与数据传送指令 1字节、整数、双整数和实数比较指令 比较触点中间的b、i、d、r、s分别表示无符号字节、有符号整数、有符号双整数、有符号实数和字符串比较。满
3、足比较关系式给出的条件时,比较指令对应的触点接通。字符串比较指令的比较条件“x”只有=和。 整数和双整数比较指令比较两个有符号数。in1在触点的上面,in2在触点下面,例4-1】 用接通延时定时器和比较指令组成占空比可调的脉冲发生器。 t37的常闭触点控制它的in输入端,使t37的当前值按锯齿波变化。比较指令用来产生方波,q0.0为off的时间取决于比较指令第2个操作数的值,2字符串比较指令 字符串比较指令比较ascii码字符串相等或不相等。常数字符串应是比较触点上面的参数,或比较指令中的第一个参数。 3字节、字、双字和实数的传送 传送指令助记符中最后的b、w、dw(或d)和r分别表示操作数为
4、字节、字、双字和实数。 4字节立即读写指令 字节立即读取指令mov_bir读取in指定的一个字节的物理输入,但是并不更新对应的过程映像输入寄存器。字节立即写入指令mov_biw将一个字节的数值写入out指定的物理输出,同时更新对应的过程映像输出字节,5字节、字、双字的块传送指令 块传送指令将起始地址为in的n个连续的存储单元中的数据,传送到从地址out开始的n个存储单元,字节变量n = 1255。 6字节交换指令 字节交换指令swap用来交换输入字in的高字节与低字节。应采用脉冲执行方式,4.2.2 移位与循环移位指令 移位位数n的数据类型为byte。 1右移位和左移位指令 移位指令将输入in
5、中的数各位的值向右或向左移动n位后,送给输出out指定的地址。移位指令对移出位自动补0,有符号的字和双字的符号位也被移位。 如果移位次数非0,“溢出”标志位sm1.1保存最后一次被移出的位的值,2循环右移位和循环左移位指令 循环移位指令将输入in中各位的值向右或向左循环移动n位后,送给输出out指定的地址。被移出来的位将返回到另一端空出来的位置。移出的最后一位的数值存放在溢出标志位sm1.1。 如果移动的位数n大于允许值,执行循环移位之前先对n进行求模运算。例如字循环移位时,将n除以16后取余数,得到的有效移位次数为015。如果为0则不移位。符号位也被移位,3移位寄存器指令 下图中的14位移位
6、寄存器由v30.0v31.5组成,在i0.3的上升沿,i0.4的值从移位寄存器的最低位v30.0移入,寄存器中的各位左移一位,最高位v31.5的值被移到溢出标志位sm1.1。 n为14时,i0.4的值从最高位v31.5移入,寄存器中的各位右移一位,从最低位v30.0移到溢出标志位sm1.1,4.2.3 数据转换指令 1标准转换指令 除了解码、编码指令之外的10条指令属于标准转换指令。输入参数in指定的数据转换后保存到输出参数out指定的地址。bcd码与整数相互转换的指令中,整数的有效范围为09999。 如果转换后的数值超出输出的允许范围,溢出标志位sm1.1被置为on,2段码指令 七段显示器的
7、d0d6段分别对应于段码指令输出字节的第0位第6位,某段应亮时输出字节中对应的位为1,反之为0。段码指令很少使用。 3计算程序中的数据转换 压力变送器的量程为010mpa,输出信号为010v,ai模块的量程为010v,转换后的数字量为027648,设转换后的数字为n,压力值转换公式为p =(10000 n)/ 27648 = 0.36169n (kpa,4解码指令与编码指令 解码指令deco根据输入字节in的最低4位表示的位号,将输出字out对应的位置为1,输出字的其他位均为0。16#0008=2#0000 0000 0000 1000。 编码指令enco将输入字in中的最低有效位(为1的位)
8、的位编号写入输出字节out的最低4位。16#0210=2#0000 0010 0001 0000。 存储器填充指令fill用输入参数in指定的字值填充从地址out开始的n个连续的字,4.2.5 实时时钟指令 1用编程软件读取与设置实时时钟的日期和时间 单击“plc”菜单功能区的“设置时钟”按钮,打开“cpu时钟操作”对话框。可以读取pc、plc的时钟,修改和下载日期时间。 2读取实时时钟指令read_rtc 从cpu的实时时钟读取当前日期和时间,8字节时间缓冲区依次存放年的低2位、月、日、时、分、秒、0和星期的代码,星期日为1。日期和时间的数据类型为字节型bcd码。 3设置实时时钟指令set_
9、rtc将8字节时间日期值写入cpu的实时时钟,例4-2】用实时时钟定时控制设备。 ldsm0.0 todrvb70/小时分钟值在vw73 ldw= vw73, vw78/vw78中是起始时、分值 awvw73, vw80/vw80中是结束时、分值 =q0.2/在设置的时间范围内, q0.2为1状态,4.3 数学运算指令 4.3.1四则运算指令与递增递减指令 1加减乘除指令 梯形图in1 + in2 = out,in1in2 = out,in1 * in2 = out,in1 / in2 = out 语句表in1+out = out,outin1 = out,in1*out = out,out/
10、in1=out 指令影响sm1.0(零标志)、sm1.1(溢出标志)、sm1.2(负数标志)和sm1.3(除数为0)。mul将两个16位整数相乘,产生一个32位乘积。div指令将两个16位整数相除,运算结果的高16位为余数,低16位为商,例4-3】压力变送器的压力计算公式为p = 10000(n 5530) / 22118(kpa),n为整数。mul指令得到的乘积为双整数。用右键菜单命令强制aiw16,2递增与递减指令 梯形图中in + 1 = out,语句表中out+1=out,4.3.2 浮点数函数运算指令 浮点数函数运算指令的输入参数in与输出参数out均为实数。 1三角函数指令 输入值
11、是以弧度为单位的浮点数,角度值乘以/180转换为弧度值。 2自然对数和自然指数指令 3平方根指令将正实数开平方,4.3.3 逻辑运算指令 1取反指令 取反指令将多位二进制数逐位取反,各位由0变为1,由1变为0,2逻辑运算指令 字节、字、双字“与”运算时,如果两个操作数的同一位均为1,运算结果的对应位为1,否则为0。“或”运算时如果两个操作数的同一位均为0,运算结果的对应位为0,否则为1。“异或”(exclusive or)运算时如果两个操作数的同一位不同,运算结果的对应位为1,否则为0,3逻辑运算指令应用举例 用字节逻辑“或”运算将qb0的最低3位置为1,其余各位保持不变。 qb0的某一位与1
12、作“或”运算,运算结果为1,与0作“或”运算,运算结果不变。 iw4的低12位用来读取3位拨码开关的bcd码,iw4的高4位另作他用。 16#0fff的最高4位二进制数为0,低12位为1。与iw4作“与”运算后, vw12的低12位与iw4的低12位的值相同,vw12的高4位为0,4.4 程序控制指令 4.4.1 跳转指令 1跳转与标号指令 jmp线圈通电时,跳转条件满足,跳转指令使程序流程跳转到对应的标号处。jmp与lbl指令的操作数n为常数0255,只能在同一个程序块中跳转。 i0.3的常开触点断开时,跳转条件不满足,顺序执行下面的指令。 i0.3的常开触点接通时,跳转到标号lbl 2处,
13、不执行第二个程序段,2跳转指令对定时器的影响 在各定时器正在定时时跳转,100ms定时器停止定时,当前值保持不变。10ms和1ms定时器继续定时,定时时间到时跳转区外的触点也会动作。停止跳转时100ms定时器继续定时。 3跳转对功能指令的影响 未跳转时inc_b指令使vw2每秒加1。跳转条件满足时vw2的值保持不变,例4-6】 用跳转指令实现图4-28中的流程图的要求,4.4.2 循环指令 1单重循环 驱动for指令的逻辑条件满足时,反复执行for与next之间的指令。执行到next指令时,indx的值加1,如果indx的值小于等于结束值final,返回去执行for与next之间的指令。如果i
14、ndx的值大于结束值,循环终止。 【例4-7】在i0.5的上升沿,求vb130 vb133这4个字节的异或值,用vb134保存。首先将vb134清0,并设置地址指针ac1的初始值。 第一次循环将指针ac1所指的vb130与vb134异或,然后将指针值加1,指针指向vb131,为下一次循环的异或运算做好准备。 vb130vb133同一位中1的个数为奇数时,vb134对应位的值为1,反之为0,2多重循环 循环最多可以嵌套8层。 在i0.6的上升沿,执行10次外层循环,如果i0.7为on,每执行一次外层循环,将执行8次内层循环。执行完后,vw10的值增加80,4.4.3 其他指令 1条件结束指令与条
15、件停止指令 条件结束指令end的逻辑条件满足时终止当前的扫描周期。条件停止指令stop使cpu从run模式切换到stop模式。 2get_error(获取非致命错误代码)指令很少使用。 3监控定时器复位指令 t32等组成一个脉冲发生器,从i0.4的上升沿开始,m0.2输出一个宽度等于t32预设值的脉冲。在脉冲期间反复执行jmp指令,因此扫描时间略大于t32的预设值。扫描周期超过 500ms时,cpu自动切换到stop模式。 可用wdr指令重新触发监控定时器,以扩展允许使用的扫描时间,4.5 局部变量与子程序 4.5.1 局部变量 1局部变量与全局变量 每个程序组织单元(pou)均有由64字节局
16、部(l)存储器组成的局部变量。局部变量只在它被创建的pou中有效,全局符号在各pou中均有效。局部变量有以下优点: 1) 尽量使用局部变量的子程序易于移植到别的项目。 2) 同一级pou的局部变量使用公用的物理存储区。 3)局部变量用来在子程序和调用它的程序之间传递输入参数和输出参数。 2查看局部变量表 单击“视图”菜单的“组件”按钮,再单击打开的下拉式菜单中的“变量表”。 3局部变量的类型 临时变量(temp)是暂时保存在局部数据区中的变量。主程序或中断程序只有temp变量。 in (输入参数) 用来将调用它的pou提供的数据值传入子程序。 out(输出参数)用来将子程序的执行结果返回给调用
17、它的pou,in_out(输入_输出参数)的初始值由调用它的pou传送给子程序,并用同一参数将子程序的执行结果返回给调用它的pou。 每个子程序最多可以使用16个输入/输出参数。 4在局部变量表中增加和删除变量 子程序中变量名称前面的“#”表示局部变量,是软件自动添加的。 5局部变量的地址分配 由编程软件自动分配局部变量的地址。 6局部变量数据类型检查 局部变量表中指定的数据类型应与调用它的pou的变量的数据类型匹配。 4.5.2 子程序的编写与调用 1子程序的作用 子程序将程序分成容易管理的小块,使程序结构简单清晰,易于查错和维护。可以多次调用同一个子程序,使用子程序可以减少扫描时间,2子程
18、序中的定时器 停止调用子程序时,如果子程序中的定时器正在定时,100ms定时器将停止定时,当前值保持不变,重新调用时继续定时;1ms、10ms定时器继续定时,定时时间到时,其常开触点可以在子程序之外起作用,3子程序举例 子程序的重命名,生成局部变量,编写程序。 4子程序的调用:将指令树中的子程序“拖”到程序编辑器中需要的位置,如果用语句表编程,子程序调用指令的格式为 call 子程序名称,参数1,参数2,参数n n = 116。 在语句表中调用带参数的子程序时,输入参数在最前面,其次是输入/输出参数,最后是输出参数。梯形图中从上到下的同类参数,在语句表中按从左到右的顺序排列。 在调用子程序时,
19、cpu保存当前的逻辑堆栈,将栈顶值置为1,堆栈中的其他值清零,控制转移至被调用的子程序。该子程序执行完后,cpu将堆栈恢复为调用时保存的数值,并将控制权交还给调用子程序的pou。 子程序在同一个周期内被多次调用时,子程序内部不能使用上升沿、下降沿、定时器和计数器指令。 如果在使用子程序调用指令后修改了该子程序中的局部变量表,调用指令将变为无效。必须删除无效调用,重新调用修改后的子程序。 子程序调用最多可以嵌套8级,从中断程序调用子程序时嵌套深度是4级,5用地址指针作输入参数的子程序 【例4-8】 对vb30开始的4b数据作异或运算,并将运算结果存放在vb40中,6子程序的有条件返回 在子程序中
20、的ret(从子程序有条件返回)线圈通电时停止执行子程序,返回调用它的程序。 7有保持功能的电路的处理 如果参数“电机”的数据类型为输出(out),两次调用子程序sbr_0,因为保存参数“电机”(l0.2)的存储器是共用的,接通i0.0外接的小开关,q0.0和q0.1同时变为on。 将输出参数“电机”的变量类型改为in_out,参数“电机”返回的运算结果分别用q0.0和q0.1保存,解决了上述问题,4.6 中断程序与中断指令 4.6.1 中断的基本概念 在中断事件发生时由操作系统立即调用中断程序。中断程序是用户编写的。中断程序不能再被中断,中断程序越短越好。 中断事件号见表4-12。 4.6.2
21、 中断指令 1中断允许指令与中断禁止指令 中断允许指令eni允许处理所有被连接的中断事件。 禁止中断指令disi禁止处理所有中断事件。进入run模式时自动禁止中断,2中断连接指令与中断分离指令 中断连接指令atch建立中断事件evnt与对应的中断程序int的联系。中断事件由中断事件号指定,中断程序由中断程序号指定。 中断分离指令dtch断开中断事件与中断程序之间的联系。 3中断程序的执行 cpu自动调用中断程序需要满足下列条件: 1)执行了全局中断允许指令eni。 2)执行了中断事件对应的atch指令。 3)出现对应的中断事件。 4中断优先级与中断队列溢出 中断优先级分组:通信(最高优先级)、
22、i/o中断和定时中断。在优先级范围内,cpu按照先来先服务的原则处理中断。 4.6.3 中断程序举例 1通信端口中断 在自由端口模式,接收消息完成、发送消息完成和接收一个字符均可以产生中断事件。 2i/o中断 i/o中断包括i0.0i0.3的上升沿、下降沿中断;高速计数器的当前值等于设定值、计数方向改变和计数器外部复位中断,例4-9】在i0.0的上升沿通过中断使q0.0立即置位。在i0.1的下降沿通过中断使q0.0立即复位。 /主程序 ob1 ld sm0.1 / 第一次扫描时 atch int_0, 0 / i0.0上升沿时执行0号中断程序 atch int_1, 3 / i0.1下降沿时执
23、行1号中断程序 eni / 允许全局中断 ld sm5.0/如果检测到 i/o 错误 dtch0/禁用i0.0的上升沿中断 dtch3/禁用i0.1的下降沿中断 /中断程序0(int_0) ld sm0.0 /该位总是为on siq0.0, 1/使q0.0立即置位 todrvb10/读实时时钟 /中断程序1(int_1) ld sm0.0 /该位总是为on riq0.0, 1/使q0.0立即复位 todrvb18/读实时时钟,3定时中断 定时中断0、1的周期为1255ms,分别写入smb34和smb35。每当定时时间到时,执行相应的定时中断程序。 【例4-10】用定时中断0实现周期为2s的高精
24、度定时。 / 主程序 ob1 ld sm0.1 / 第一次扫描时 movb 0, vb10 / 将中断次数计数器清0 movb 250, smb34 / 设置定时中断0的中断时间间隔为250ms atch int_0, 10 / 指定产生定时中断0时执行0号中断程序 eni / 允许全局中断 / 中断程序int_0, 每隔250ms中断一次 ld sm0.0 / 该位总是为on incbvb10/ 中断次数计数器加1 ldb=8, vb10 / 如果中断了8次(2s) movb 0, vb10 / 将中断次数计数器清0 incb qb0 / 每2s将qb0加1,4. t32/t96中断 【例4
25、-11】使用t32中断控制8位节日彩灯,每3s循环左移一位。1ms定时器t32定时时间的中断事件号为21,最长定时时间为32.767s。 /主程序 ob1 ld sm0.1 /第一次扫描时 movb 16#f, qb0/设置彩灯的初始状态,最低4位的灯被点亮 atch int_0, 21 /指定t32定时时间到时执行中断程序int_0 eni /允许全局中断 ldnm0.0/t32和m0.0组成脉冲发生器 tont32, 3000/t32 的预设值为3000ms ld t32 =m0.0 /中断程序int_0 ld sm0.0 rlb qb0, 1/彩灯循环左移1位,4.7 高速计数器与高速脉
26、冲输出指令 4.7.1 高速计数器的工作模式与外部输入信号 1增量式编码器 高速计数器一般与增量式编码器配合使用,单通道增量式编码器只产生一个脉冲序列。双通道a、b相型编码器提供转速和转轴旋转方向的信息。三通道增量式编码器的z相零位脉冲用作系统清零信号,或作为坐标的原点。 2绝对式编码器 绝对式编码器输出多位二进制数,反映了运动物体所处的绝对位置。 3高速计数器的工作模式 hsc0和hsc2有8种计数模式: 1) 无外部方向控制信号的单相加/减计数器(模式0、1)。 2) 带外部方向控制信号的单相加/减计数器(模式3、4)。 3) 有加、减计数时钟脉冲输入的双相计数器(模式6、7)。 4) a
27、/b相正交计数器(模式9、10),两路计数脉冲的相位互差90。 根据有无复位输入和启动输入,上述4类工作模式又可以各分为两种,图4-38 1倍速a/b相正交计数器 a/b相正交计数器可以选择1倍速模式和4倍速模式,1倍速模式在时钟脉冲的每一个周期计1次数,4倍速模式在两个时钟脉冲的上升沿和下降沿都要计数。 hsc1和hsc3因为只有一个时钟脉冲输入,只支持模式0。 4高速计数器的外部输入信号见表4-15,4.7.2 高速计数器的程序设计 1高速计数器指令 hdef指令定义高速计数器的工作模式,hsc指令用来激活高速计数器。 【例4-12】要求高速计数器hsc0用模式0的计数来周期性地控制q0.
28、1和q0.2,计数脉冲的周期为1ms,第1页选中配置“hc0”,计数模式为默认的模式0。 第2页采用默认的计数器名称hsc0。 第3页(模式)设置计数模式为默认的模式0。 第4页采用默认的计数器初始化子程序的符号名hsc0_init。设置计数器的预设值pv为4000,当前值cv为默认的0,初始计数方向为加计数。 第5页(中断)设置当前值等于预设值时产生中断,使用默认的中断程序符号名count_eq。 第6页(步)设置步数为3步。 第7页(第1步)自动选中“连接此事件到一个新的中断程序”,采用默认的新的中断程序的名称hsc0_step1。设置“新pv”为7000,不更新计数当前值和计数方向。单击
29、上面的“下一步”按钮。 第8页(第2步)自动选中“连接此事件到一个新的中断程序”,采用默认的新的int的名称hsc0_step2。设置“新pv”为3000,不更新计数当前值,新的计数方向为减计数。 第9页(第3步)选中“连接此事件到一个新的中断程序”,设置新int的名称为count_eq。预设值更新为4000,当前值更新为0,计数方向改为加计数。实际上是开始下一周期的计数操作。单击下面的“下一步”按钮。 第10页(组件)显示将要生成的初始化子程序hsc_init和3个中断程序,在第11页(完成)单击“生成”按钮,自动生成上述的4个程序。 主程序在i0.1的上升沿时调用hsc_init。 程序中
30、对q0.1和q0.2置位和复位的指令是人工添加的,4.7.3 高速脉冲输出与开环位置控制 1pwm发生器 占空比是脉冲宽度与脉冲周期之比。 脉冲列(pto)功能提供周期与脉冲数目可以由用户控制的占空比为50%的方波脉冲输出。脉冲宽度调制 (pwm) 功能提供连续的、周期与脉冲宽度可以由用户控制的输出。 cpu st20有两个脉冲输出通道q0.0和q0.1,cpu st30/st40/st60有3个脉冲输出通道q0.0、q0.1和q0.3,支持的最大脉冲频率为100khz。 用脉冲输出向导生成pwm指令pwmx_run,时间基准为s。输入参数run为on时输出脉冲,4.8 数据块应用与字符串指令 4.8.1 数据块概述 1在数据块中对地址和数据赋值 数据块用来给v存储器的字节、字和
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《室内设计空间组织》课件
- 《电源系统的建模》课件
- 《病理心理学》课件
- 通史版2025届高考历史二轮总复习第二编考前突破突破一史学入门与史料研读课件
- 大学生网络安全教育
- 单位管理制度集合大合集人员管理十篇
- 单位管理制度合并选集【职员管理篇】十篇
- 单位管理制度分享汇编职员管理篇
- 单位管理制度分享大全职工管理
- 单位管理制度范例选集职工管理篇十篇
- 部编新人教版小学语文6六年级上册(全册)教案设计
- 山东省济南市2023-2024学年高二年级上册1月期末英语试题(解析版)
- 初中体育教案【完整版】七年级
- 2024-2030年中国城市供热行业市场前景预测及发展趋势预判报告
- 2024年计算机二级MS Office考试题库500题(含答案)
- 人教版七年级上册《生物》期末试卷(完整)
- 福建中考英语作文15分评分标准
- 智慧磐石工程建设方案
- 等保2完整版本.0介绍及建设流程
- 苏教版科学六年级上册期末测试卷含完整答案(各地真题)
- 市场法评估企业价值
评论
0/150
提交评论