首页 施耐德PLC Twido PLC 可编程控制器 第六章、指令

施耐德PLC Twido PLC 可编程控制器 第六章、指令

举报
开通vip

施耐德PLC Twido PLC 可编程控制器 第六章、指令第六章、指令6-1布尔指令6-2标准功能块6-2-1定时器功能块6-2-2计数器功能块6-2-3移位寄存器功能模块(%SBRi)6-2-4步进计数器功能模块(%SCi)6-3数字处理指令6-3-1赋值指令6-3-2比较指令6-3-3算术指令6-3-4逻辑指令6-3-5移位指令6-3-6转换指令6-3-7单/双字转换指令6-3-8浮点算术指令6-3-9三角指令6-3-10转换指令6-3-11整数转换指<->浮点6-3-12表求和功能6-3-13表比较指令6-3-14表查找指令6-3-15表最大值和最小值查...

施耐德PLC Twido PLC 可编程控制器 第六章、指令
第六章、指令6-1布尔指令6-2标准功能块6-2-1定时器功能块6-2-2计数器功能块6-2-3移位寄存器功能模块(%SBRi)6-2-4步进计数器功能模块(%SCi)6-3数字处理指令6-3-1赋值指令6-3-2比较指令6-3-3算术指令6-3-4逻辑指令6-3-5移位指令6-3-6转换指令6-3-7单/双字转换指令6-3-8浮点算术指令6-3-9三角指令6-3-10转换指令6-3-11整数转换指<->浮点6-3-12表求和功能6-3-13表比较指令6-3-14表查找指令6-3-15表最大值和最小值查找功能6-3-16表中某个值的出现次数6-3-17表循环移动功能6-3-18表排序功能6-4程序控制指令6-4-1END指令6-4-2跳转指令6-4-3子程序指令6-5专用功能块6-5-1LIFO/FIFO寄存器功能模块(%Ri)6-5-2脉宽调制功能模块(%PWM)6-5-3脉冲发生器输出功能模块(%PLS)6-5-4磁鼓控制器功能模块(%DR)6-5-5高速计数6-5-6超高速计数器功能模块(%VFC)6-5-7调度模块6-6通讯指令6-6-1信息发送/接收6-6-2数据交换控制6-1布尔指令 掌握要点:   布尔指令:用语所有位元件Load指令(装入):LD,LDN,LDR,LDF分别对应常开,常闭,上升沿,和下降沿其中:N代表“非”R代表“上升沿”F代表“下降沿”程序例:逻辑AND指令:AND,ANDN,ANDR,ANDF。逻辑与指令执行操作数(或它的反转数,或上升沿,或下降沿)和前面指令的布尔运算结果间的逻辑与操作。程序例:逻辑OR指令:OR,ORN,ORR,ORF,逻辑或指令执行操作数(或它的反转数,或上升沿,或下降沿)和前面指令的布尔运算结果间的逻辑或操作。程序例:赋值指令ST,STN,S,和R分别对应直接,反转,置位,和复位线圈,其中:N表示输出的非S表示强制置位R表示强制复位程序例:异或指令(XOR,XORN,XORR,XORF)异或指令执行操作数(或它的反转数,或上升沿,或下降沿)和前面指令的布尔运算结果间的异或操作。下图是异或指令示例。特殊情况下面是对梯形图中使用异或指令的特别警告:不要在梯级的第一个位置插入异或触点。不要将异或触点与其它梯形图元素并行放置(见下面示例)。如下图所示,加入一个与异或触点相并行的元素将会产生确认错误。取反指令(N)取反(N)指令将前面指令的布尔运算结果取反。下图是取反指令使用示例。注意:取反指令不可逆,下图显示了取反指令的时序图。6-2标准功能块   6-2-1定时器功能块掌握要点:定时器功能块的使用,配置. 定时器功能块%TMiTWIDOPLC可提供128个定时器(0到63:TWDLCAA10DRF和TWDLCAA16DRF,0到127对所有其它控制器)。定时器有三种类型,可在配置时设定:TON(定时器导通-延时):这种定时器用于控制导通-延时动作。TOF(定时器关断-延时):这种定时器用于控制关断-延时动作。TP(定时器-脉冲):这种定时器用于产生精确宽度的脉冲。延时或脉冲周期可编程并可使用TwidoSoft进行修改。下面是定时器功能模块图例。定时器功能块使用的 参数 转速和进给参数表a氧化沟运行参数高温蒸汽处理医疗废物pid参数自整定算法口腔医院集中消毒供应 : 参数 标识 值 定时器编号 %TMi 0到63:TWDLCAA10DRF和TWDLCAA16DRF0到127对所有其它控制器。 类型 TON •定时器导通-延时(默认) TOF •定时器关断-延时 TP •脉冲(单稳态) 时基 TB 1min(默认),1s,100ms,10ms,1ms 当前值 %TMi.V 当定时器工作时,该字从0增加到%TMi.P。可被程序读和测试,但不可写。%TMi.V可以通过活动表编辑器修改。 预置值 %TMi.P 0?9999。该字可由程序读取,测试和写入。默认值是9999。周期或产生的延时为%TMi.PxTB。 活动表编辑器 Y/N Y:Yes,预置%TMi.P值可以通过活动表编辑器修改。N:No,预置%TMi.P值不能被修改。 输入使能(或指令) IN 定时器以上升沿(TON或TP类型)或下降沿(TOF类型)开始。 定时器输出 Q 根据实现的功能相关位%TMi.Q置为1:TON,TOF,或TP操作说明:TON:当输入IN上升沿时定时器启动,定时器当前值(%TMi.V)以时基TB为单位增加,当定时器当前值(%TMi.V)=预设值(%TMi.P)时Q(%TMi.Q)输出为"1"当输入IN的下降沿来临时定时器停止,%TMi.V=0,即使计数器当前值(%TMi.V)没有到达预设置(%TMi.P),Q(%TMi.Q)输出为"0".下面是TON类型定时器操作时序图。下表描述了TON类型定时器的操作。 阶段 描述 1 定时器在输入IN的上升沿开始工作。 2 当前值%TMi.V以时基TB的脉冲的一个单位为每次增加量从0增加到%TMi.P。 3 当当前值到达%TMi.P时%TMi.Q输出位置为1。 4 当输入IN为1时%TMi.Q输出位保持为1。 5 当检测到输入IN的下降沿,定时器停止,即使定时器没有到达%TMi.P,且%TMi.V置为0。 TOF:当输入IN上升沿时定时器停止%TMi.V=0,Q(%TMi.Q)输出为"1"定时器在输入IN的下降沿来临时启动,定时器当前值(%TMi.V)以时基TB为单位增加,当定时器当前值(%TMi.V)=预设置(%TMi.P)时Q(%TMi.Q)输出为"0"下面是TOF类型定时器操作时序图。下表描述了TOF类型定时器的操作 阶段 描述 1 当前值%TMi.V在输入IN的上升沿置为0,即使定时器处于工作状态。 2 检测到输入N的下降沿时%TMi.Q输出位置为1。 3 定时器在输入N的下降沿开始工作。 4 当前值%TMi.V以时基TB的脉冲的一个单位为每次增加量增加到%TMi.P。 5 当当前值到达%TMi.P时%TMi.Q输出位置为0。 TP:当输入IN上升沿时定时器启动,Q(%TMi.Q)输出为"1"定时器当前值(%TMi.V)以时基TB为单位增加,当定时器当前值(%TMi.V)=预置值(%TMi.P)时Q(%TMi.Q)输出为"0"当输入IN的下降沿来临时定时器停止,%TMi.V=0,在计数器当前值(%TMi.V)没有到达预设置(%TMi.P)时定时器不会停止.下面是TP类型定时器操作时序图。下表描述了TP类型定时器的操作。 阶段 描述 1 定时器在输入IN的上升沿开始工作。如果定时器还没开始则当前值%TMi.V置为0。 2 当定时器开始时%TMi.Q输出位置为1。 3 当前值%Tmi.V以时基TB的脉冲的一个单位为每次增加量从0增加到%Tmi.P。 4 当当前值到达%Tmi.P时%Tmi.Q输出位置为0。 5 当%TMi.V等于%TMi.P且输入IN回到0时当前值%Tmi.V置为0。 6 定时器不能被复位。一旦%TMi.V等于%TMi.P且输入IN为0,则%Tmi.V置为0。 配置:在编程软件配置菜单下:<定时器>编程:程序例:BLK%TM0LDN%TM1.QINOUT_BLKLDQST%Q0.2END_BLKBLK%TM1LD%TM0.QINEND_BLK6-2-2计数器功能块掌握要点:计数器功能块的使用,配置. 功能说明:       使用UP/DOWN计数器功能块可用来双向计录事件数,加计数和减计数可同时进行。下面是加/减计数器功能模块图例。计数器功能模块具有如下参数 参数 标识 值 计数器编号 %Ci 0到127 当前值 %Ci.V 字根据输入(或指令)CU和CD被增加或减少。可被程序读和测试,但不可写。使用数据编辑器修改%Ci.V。 预置值 %Ci.P 0%Ci.P9999.Wordcanberead,tested,andwritten(defaultvalue:9999). 用活动表编辑器编辑 ADJ Y:Yes,预置值可以通过活动表编辑器修改。N:No,预置值不能使用活动表编辑器修改。 输入(或指令)复位 R 状态为1:%Ci.V=0. 输入(或指令)复位 S 状态为1:%Ci.V=%Ci.P. 加运算输入(或指令) CU 在上升沿增加%Ci.V。 减运算输入(或指令) CD 在上升沿减少%Ci.V。 减运算溢出输出 E(Empty) 当减计数器%Ci.V从0变到9999时,相关位%Ci.E=1(当%Ci.V到达9999时置为1,如果计数器继续减少则复位为0)。 预置输出达到 D(完成) 当%Ci.V=%Ci.P时,相关位%Ci.D=1。 加运算溢出输出 F(Full) 当%Ci.V从9999变到0时,相关位%Ci.F=1(当%Ci.V到达0时置为1,如果计数器继续增加则复位为0)。操作说明:向上计数:当从CU输入一个上升沿时,%Ci.V加1,当%Ci.V=%Ci.P时输出位%Ci.D=1,当%Ci.V从9999变为0时,相关位%Ci.F=1,计数器继续向上计数,%Ci.F=0向下计数:当从CD输入一个上升沿时,%Ci.V减1,当%Ci.V从0变为9999时,相关位%Ci.E=1,计数器继续向下计数,%Ci.E=0双向计数:当同时使用向上计数和向下计数时,CU和CD必须用软件加以控制,如果CU和CD同时为1,则%Ci.V保持不变复位:当R被置为1时,%Ci.V强制为0,并且输出位%Ci.E,%Ci.D,%Ci.F均为0预置:当S=1且R=0时,%Ci.V=%Ci.P,输出位%Ci.D=1下表描述了加/减计数器操作的主要过程。 操作 动作 结果 计数 加计数输入CU出现上升沿(或指令CU被激活)。 当前值%Ci.V加1。 当前值%Ci.V等于预置值%Ci.P。 “预置达到”输出位%Ci.D变为1。 当前值%Ci.V从9999变为0。 输出位%Ci.F(加计数溢出)变为1。 如果计数器继续增加。 输出位%Ci.F(加计数溢出)复位到0。 减计数 减计数输入CD出现上升沿(或指令CD被激活)。 当前值%Ci.V减1。 当前值%Ci.V从0变为9999。 输出位%Ci.E(减计数溢出)变为1。 如果计数器继续减少。 输出位%Ci.E(减计数溢出)复位到0。 加/减计数 要同时使用加计数和减计数功能(或同时激活指令CD和CU),必须对同时控制两个对应的输入CD和CU。这两个输入被连续扫描。如果它们都为1,则当前值保持不变。 复位 输入R置为状态1(或者指令R被激活)。 当前值%Ci.V被强制为0。输出%Ci.E,%Ci.D和%Ci.F置为0。复位输入优先。 置位 如果输入S置为1(或指令S被激活)且复位输入为0(或指令R未被激活)。 当前值%Ci.V取%Ci.P值且输出%Ci.D置为1。配置:在编程软件配置菜单下:<计数器>编程:程序例:BLK%C0LD%C0.DRLD%S6CUEND_BLKBLK%C1LD%C0.DCUOUT_BLKLDDST%Q0.0END_BLK6-2-3移位寄存器功能模块(%SBRi)移位寄存器功能模块(%SBRi)提供了二进制数据位(0或1)的左移或右移。下面是一个移位寄存器功能模块示例。移位寄存器功能模块具有下列参数。 参数 标识 值 寄存器编号 %SBRi 0到7 寄存器位 %SBRi.j 移位寄存器的位0到15(j=0到15)可被测试指令测试,且由赋值指令写。 输入(或指令)复位 R WhenfunctionparameterRis1,thissetsregisterbits0to15%SBRi.jto0. 左移输入(或指令) CU 其上升沿将寄存器位左移一位。 右移输入(或指令) CD 其上升沿将寄存器位右移一位。操作说明:CD上升沿时寄存器位0~15依次向右移一位,最低位第0位丢失CU上升沿时寄存器位0~15依次向左移一位,最高位第15位丢失R上升沿时将寄存器位0~15置位0程序例:LDN%SBR0.15ST%SBR0.0BLK%SBR0LD%S6CUEND_BLK6-2-4步进计数器功能模块(%SCi)步进计数器功能模块(%SCi)提供了一系列的步,动作可赋值给这些步。从一个步移动到另一个步取决于外部或内部事件。每当一个步处于激活状态时,相关位被置为1。步进计数器在一个时刻只能有一个步被激活。下面是一个步进计数器功能模块示例。步进计数器功能模块具有下列参数 参数 标识 值 步进计数器编号 %SCi I=0-7 步进计数器位 %SCi.j 步进计数器的位0到255(j=0到255)可被装载逻辑测试,且由赋值指令写。 输入(或指令)复位 R WhenfunctionparameterRis1,thisresetsthestepcounter. 输入(或指令)增加 CU 其上升沿将步进计数器增加一步。 输入(或指令)减少 CD 其上升沿将步进计数器减少一步。操作说明:CU上升沿时步计数器前进一步,相应的步计数器位被置ONCD上升沿时步计数器后退一步,相应的步计数器位被置ONR上升沿时步计数器被复位.时序图下面是步进计数器功能模块操作时序图。编程下面是一个步进计数器功能模块示例。步进计数器0由输入%I0.2增加。步进计数器0由输入%I0.3或当它到达步3时复位到0。步0控制输出%Q0.1,步1控制输出%Q0.2,步2控制输出%Q0.3。BLK%SC0LD%SC0.3OR%I0.3RLD%I0.2CUEND_BLKLD%SC0.0ST%Q0.1LD%SC0.1ST%Q0.2LD%SC0.2ST%Q0.36-3数字运算指令、浮点数指令、查表指令6-3-1赋值指令赋值指令用于把操作数Op2装入操作数Op1。赋值指令语法 运算符 语法 操作数1(Op1) 操作数2(Op2) := [Op1:=Op2}把操作数2(Op2)的值赋给操作数1(Op1) %MWi,%QWi,%QWAi,%SWi%MWi[%MWi],%MDi,%MDi[%MWi]%Mi:L,%Qi:L,%Si:L,%Xi:L%MFi,%MFi[%MWj] Immediatevalue,%MWi,%KWi,%IW,%IWAi,%INWi,%QWi,%QWAi%QNWi,%SWi,%BLK.x,%MWi[%MWi],%KWi[%MWi],%MDi[%MWi],%KDi[%MWi],%Mi:L,%Qi:L,%Si:L,%Xi:L,%Ii:L立即浮点值,%MFi,%MFi[%MWj],%KFi,%KFi[%MWj]赋值操作可用于:位串字双字浮点字字表双字表浮点字表程序例:EMBEDPBrush6-3-2比较指令:用来比较两个操作数,包括:大于(>),大于等于(>=),小于(<),小于等于(<=),不等于(<>),等于(=).语法及操作数类型: 运算符 语法 >,>=,<,<=,=,<> LD[Op1运算符Op2]AND[Op1运算符Op2]OR[Op1运算符Op2]操作数: 类型 操作数1(Op1) 操作数2(Op2) 字 %MWi,%KWi,%INWi,%IW,%IWAi,%QNWi,%QWi,%QWAi,%QNWi,%SWi,%BLK.x 立即值,%MWi,%KWi,%INWi,%IW,%IWAi,%QNWi,%QW,%QWAi,%SWi,%BLK.x,%MWi[%MWi],%KWi[%MWi] 双字 %MDi,%KDi 立即值,%MDi,%KDi,%MDi[%MWi],%KD[%MWi] 浮点字 %MFi,%KFi 立即浮点值,%MFi,%KFi,%MFi[%MWi],%KFi[%MWi]程序例6-3-3整数算术指令算术指令用于执行两个整数操作数之间或一个整数操作数上的算术运算。下表列出了算术指令类型。 指令 功能 + 两个操作数相加 - 两个操作数相减 * 两个操作数相乘 / 两个操作数相除 REM 两个操作数相除的余数 SQRT 一个操作数的平方根 INC 一个操作数递增 DEC 一个操作数递减 ABS 一个操作数的绝对值语法取决于使用的运算符,如下表所示。 运算符 语法 +,-,*,/,REM [Op1:=Op2运算符Op3] INC,DEC [运算符Op1] SQRT(1) [Op1:=SQRT(Op2)] ABS(1) [Op1:=ABS(Op2)]操作数: 类型 操作数1(Op1) 操作数2和3(Op2&3)(1) 字 %MWi,%QWi,%QWAi,%SWi 立即值,%MWi,%KWi,%INW,%IW,%IAi,%QNW,%QW,%QWAi,%SWi,%BLK.x 双字 %MDi 立即值,%MDi,%KDi溢出和出错条件加法字运算中溢出如果结果超出-32768和+32767范围,位%S18(溢出)被置为1。且所得结果不正确(见下页例1)。用户程序管理位%S18。注意:对双字,其范围是-2147483648和21474836487。乘法运算时溢出如果结果超出字的范围,位%S18(溢出)被置为1,且结果没有意义。除法/取余被0除如果除数是0,则不能进行除法运算且系统位%S18被置为1。结果不正确。运算时溢出如果商超出字的范围,位%S18被置为1。平方根开方运算时溢出平方根开方只适用正值。这样,其结果总为正。如果平方根操作数为负,系统位%S18被置为1且结果不正确。程序例:6-3-4逻辑指令逻辑指令用于执行两个字操作数之间或一个字操作数的逻辑运算。下表列出了逻辑指令类型。 指令 功能 AND 与(位方式),用于两个操作数之间 OR 逻辑或(位方式),用于两个操作数之间 XOR 异或(位方式),用于两个操作数之间 NOT 逻辑反(位方式),用于一个操作数语法取决于使用的运算符: 运算符 语法 操作数1(Op1) 操作数2和3(Op2&3) AND,OR,XOR [Op1:=Op2运算符Op3] %MWi,%QWi,%QWAi,%SWi 立即值(1),%MWi,%KWi,%IW,%IWAi,%QW,%QWAi,%SWi,%BLK.x NOT [Op1:=NOT(Op2)] 程序例6-3-5移位指令移位指令将操作数向右或向左移动若干位。下表列出了移位指令类型。语法取决于使用的运算符,如下表所示。 运算符 语法 SHL,SHR [Op1:=运算符(Op2,i)] ROL,ROR 操作数: 类型 操作数1(Op1) 操作数2(Op2) 字 %MWi,%QWi,%QWAi,%SWi %MWi,%KWi,%IW,%IWAi,%QW,%QWAi,%SWi,%BLK.x 双字 %MDi %MDi,%KDi程序例6-3-6转换指令转换指令执行数字不同类型间的转换。下表列出了转换指令类型。 指令 功能 BTI BCD-->二进制转换 ITB 二进制-->BCD转换语法取决于使用的运算符,如下表所示。 运算符 语法 BTI,ITB [Op1:=运算符(Op2)]操作数: 类型 操作数1(Op1) 操作数2(Op2) 字 %MWi,%QWi,%QWAi,%SWi %MWi,%KWi,%IW,%IWAi,%QW,%QWAi,%SWi,%BLK.x 双字 %MDi %MDi,%KDi程序例6-3-7单/双字转换指令下表描述了用于执行单字和双字之间转换的指令: 指令 功能 LW 抽取双字的LSB到一个字。 HW 抽取双字的MSB到一个字。 CONCATW 连接两个字到一个双字。 DWORD 转换一个16位字到一个32位字。语法取决于使用的运算符,如下表所示:l 运算符 语法 操作数1(Op1) 操作数2(Op2) 操作数3(Op3) LW,HW Op1=运算符(Op2) %MWi %MDi,%KDi [-] CONCATW Op1=运算符(Op2,Op3)) %MDi %MWi,%KWi,立即值 %MWi,%KWi,立即值 DWORD Op1=运算符(Op2) %MDi %MWi,%KWi [-]程序例           6-3-8浮点算术指令这些指令用于执行两个操作数或一个操作数底算术运算。+两个操作数相加SQRT一个操作数的平方根-两个操作数相减ABS一个操作数的绝对值*两个操作数相乘TRUNC浮点值的整数部分/两个操作数相除EXP自然指数LOG以10为底的对数EXPT实数的实求幂LN自然对数程序例:指令列表语言LD%M0[%MF0:=%MF10+129.7]LD%I3.2[%MF1:=SQRT(%MF10)]LDR%I3.3[%MF2:=ABS(%MF20)]6-3-9三角指令这些指令使得用户可以执行三角运算。 SIN 一个角度(弧度)的正弦, ASIN 反正弦 COS 一个角度(弧度)的余弦, ACOS 反余弦 TAN 一个角度(弧度)的正切, ATAN 反正切三角运算指令的运算符,操作数和语法 运算符 语法 操作数1(Op1) 操作数2(Op2) SIN,COS,TAN,ASIN,ACOS,ATAN Op1:=运算符(Op2) %MFi %MFi,%KFi程序例:指令列表语言LD%M0[%MF0:=SIN(%MF10)]LD%I3.2[%MF2:=TAN(%MF10)]LDR%I3.3[%MF4:=ATAN(%MF20)]6-3-10转换指令这些指令用于执行转换操作。DEG_TO_RAD将角度转换为弧度,结果值介于0和之间RAD_TO_DEG将弧度转换为角度,结果值介于0和360度之间程序例指令列表语言LD%M0[%MF0:=DEG_TO_RAD(%MF10)]LD%M2[%MF2:=RAD_TO_DEG(%MF20)]6-3-11整数转换指<->浮点提供了四个转换指令。整数转换指令列表<->浮点: INT_TO_REAL 转换一个整数字-->浮点 DINT_TO_REAL 转换双整数字-->浮点 REAL_TO_INT 浮点转换-->整数字(结果为最接近的代数值) REAL_TO_DINT 浮点转换-->双整数字(结果为最接近的代数值)程序例6-3-12表求和功能SUM_ARR功能将一个对象表的所有元素加在一起:如果表由双字组成,则结果以双字格式给出如果表由浮点字组成,则结果以浮点字格式给出表求和指令语法: Res:=SUM_ARR(Tab)表求和指令参数 类型 结果(res) 表(Tab) 双字表 %MDi %MDi:L,%KDi:L 浮点字表 %MFi %MFi:L,%KFi:L程序例6-3-13表比较指令EQUAL_ARR功能对两个表的元素逐个进行比较。如果找到不同,则第一个不同元素的序列号以一个字的形式返回,否则返回值等于-1。对整个表执行比较操作。程序例%MW5:=EQUAL_ARR(%MD30:4,%KD0:4)2个表的比较: 序列号 字表 常字表 区别 0 %MD30=10 %KD0=10 = 1 %MD31=20 %KD1=20 = 2 %MD32=30 %KD2=60 区别 3 %MD33=40 %KD3=40 =字%MW5的值是2(第一个不同元素的序列号)6-3-14表查找指令表查找指令有3个查找函数:FIND_EQR:在双字或浮点字表中查找与给定值相等的第一个元素的位置FIND_GTR:在双字或浮点字表中查找比给定值大的第一个元素的位置FIND_LTR:在双字或浮点字表中查找比给定值小的第一个元素的位置如果找到符合条件的第一个元素,则指令的结果等于它的序列号,否则等于-1。表查找指令语法: 功能 语法 FIND_EQR Res:=函数(Tab,Val) FIND_GTR FIND_LTR 浮点字和双字表查找指令参数: 类型 结果(Res) 表(Tab) 值(val) 浮点字表 %MWi %MFi:L,%KFi:L %MFi,%KFi 双字表 %MWi %MDi:L,%KDi:L %MDi,%KDi程序例:梯形图语言%MW5:=FIND_EQR(%MD30:4,%KD0)查找表中=%KD0=30的第一个双字的位置: 序列号 字表 结果 0 %MD30=10 - 1 %MD31=20 - 2 %MD32=30 值(val),序列号 3 %MD33=40 -6-3-15表最大值和最小值查找功能有2个查找函数:MAX_ARR:查找双字或浮点字表中的最大值MIN_ARR:查找双字或浮点字表中的最小值这些指令的结果等于表中发现的最大值(或最小值)。最大值最小值表查找指令语法: 功能 语法 MAX_ARR Res:=函数(Tab) MIN_ARR 最大值最小值表查找指令参数: 类型 结果(Res) 表(Tab) 双字表 %MDi %MDi:L,%KDi:L 浮点字表 %MFi %MFi:L,%KFi:L程序例:梯形图语言6-3-16表中某个值的出现次数这个查找函数:OCCUR_ARR:查找双字或浮点字表中与给定值相等的元素的个数。最大值最小值表查找指令语法: 功能 语法 OCCUR_ARR Res:=函数(Tab,Val)最大值最小值表查找指令参数: 类型 结果(Res) 表(Tab) 值(Val) 双字表 %MWi %MDi:L,%KDi:L %MDi,%KDi 浮点字表 %MFi %MFi:L,%KFi:L %MFi,%KFi程序例梯形图语言6-3-17表循环移动功能有2个移动函数:ROL_ARR:在浮点字表中从上到下循环移动n个位置ROL_ARR函数图例ROR_ARR:在浮点字表中从下到上循环移动n个位置ROR_ARR函数图例循环移动指令语法有关浮点字或双字表ROL_ARRandROR_ARR 功能 语法 ROL_ARR 功能(n,Tab) ROR_ARR 循环移动指令参数有关浮点字表ROL_ARRandROR_ARR: 类型 位置数(n) 表(Tab) 浮点字表 %MWi,立即值 %MFi:L 双字表 %MWi,立即值 %MDi:L程序例:梯形图语言6-3-18表排序功能有下面的排序函数可用:SORT_ARR:对一个双字或浮点字表的元素按照升序或降序进行排序并将结果存储在相同的表中。 表排序函数语法:功能语法SORT_ARR函数(direction,Tab)"direction"参数给出排序顺序:direction>0表示升序;direction<0,表示降序,direction=0表示不进行排序。结果(已排序表)返回到Tab参数(要排序的表)。表排序函数参数:类型排序顺序表(Tab)双字表%MWi,立即值%MDi:L浮点字表%MWi,立即值%MFi:L梯形图语言6-4程序指令6-4-1END指令END指令定义一个程序扫描执行的结束。END,ENDC,和ENDCN有三个不同的结束指令可用:END:程序无条件结束ENDC:如果前面测试指令布尔运算结果是1,则程序结束。ENDCN:如果前面测试指令布尔运算结果是0,则程序结束。默认(正常模式)情况下,当程序结束被激活时,输出被更新且开始下一次扫描。如果是周期扫描,则当周期结束时输出被更新且开始下一次扫描。6-4-2跳转指令跳转指令使程序执行立即中断并转入执行标号为%Li(i=1到16对于一体型控制器,1到63对于其它控制器)的程序行。JMP,JMPC和JMPCN有三个不同的跳转指令可用:JMP:程序无条件跳转JMPC:如果前面逻辑布尔运算结果为1,则程序跳转JMPCN:如果前面逻辑布尔运算结果为0,则程序跳转跳转指令示例。指导跳转指令不允许用于圆括号内,且不能位于指令AND(,OR(和右括号指令")"之间。标号只能位于指令LD,LDN,LDR,LDF或BLK之前。标号%Li的编号在程序中只能被定义一次。程序可以向下或向上跳转当向上跳转时,必须注意程序扫描时间。延长扫描时间可能导致看门狗的触发。6-4-3子程序指令子程序指令导致程序执行一个子程序,然后返回到主程序。SRn,SRn:和RET.子程序由三步组成:此SRn指令调用标号为SRn的子程序,如果前面布尔指令结果为1。子程序用标号SRn:表示,n=0到15对于TWDLCAA10DRF,TWDLCAA16DRF,0到63对于其它控制器。此RET指令位于子程序的最后,返回程序流到主程序。指导一个子程序不能调用另一个子程序。子程序指令不允许用于圆括号内,且不能位于指令AND(,OR(和右括号指令")"之间。标号只能位于指令LD或BLK之前,用于标识一个布尔等式(或梯级)的开始。赋值指令不能跟随在子程序调用之后。这是因为子程序可能改变布尔运算累加器的内容。这样返回时,它的值可能与调用前不同。6-5专用功能块6-5-1LIFO/FIFO寄存器功能模块(%Ri)寄存器是一个存储器块,可以存储最多16个16位的字。有两种不同的存储方式:队列方式(先入先出)即FIFO。堆栈方式(后进先出)即LIFO。下面是一个寄存器功能模块图例。 寄存器功能模块具有如下参数:参数标识值寄存器编号%Ri0到3.类型FIFO或LIFO队列方式或堆栈方式。输入字%Ri.I寄存器输入字。可读取,测试,和写入。输出字%Ri.O寄存器输出字。可读取,测试,和写入。存储输入(或指令)I(In)上升沿处将字%Ri.I的内容存入寄存器。取回输入(或指令)O(Out)上升沿处将一个数据字装入字%Ri.O内。输入(或指令)复位R(Reset)状态为1时,初始化寄存器。空输出E(Empty)对应位%Ri.E表示寄存器空。可调试。满输出F(Full)对应位表%Ri.F示寄存器满。可调试。LIFO操作LIFO操作(后进先出)中,最后进入的数据项最先被取出。下表是LIFO操作描述。FIFO操作(先进先出)中,最先进入的数据项最先被取出。下表是FIFO操作描述程序例:6-5-2脉宽调制功能模块(%PWM)脉宽调制(%PWM)功能模块在专用输出通道%Q0.0.0或%Q0.0.1生成一个方波信号,宽度可变,因此占空比也可变。由于频率限制,带有继电器输出的控制器的这两个通道不支持这个功能。有两个%PWM模块可用。%PWM0使用专用输出%Q0.0.0,%PMW1使用专用输出%Q0.0.1。%PLS功能模块也使用这两个输出,因此您必须在这两个功能之间做出选择。PWM模块和时序图:下表列出了PWM功能模块参数。 参数 标识 描述 时基 TB 0.142ms,0.57ms,10ms,1s(默认值) 预置周期 %PWMi.P 0<%PWMi.P<=32767如果时基为10ms或1s0<%PWMi.P<=255如果时基为0.57ms或0.142s0=Functionnotinuse 占空比 %PWMi.R T该值表示状态为1的信号在周期中的百分比。宽度Tp等于:Tp=T*(%PWMi.R/100).用户应用程序写%PWMi.R值。这个字控制周期的占空比。对于T定义,见下面“周期范围”。默认值为0,当值大于100时视为等于100。 脉冲发生器输入 IN 状态为1时,脉宽调制信号在输出通道发生。状态为0时,输出通道被置为0。周期范围预置值和时基可在配置中修改。它们用于确定信号周期T=%PWMi.P*TB。获得的比率越小,则选择的%PWMi.P越大。可用的周期范围:时基0.142ms时,0.142ms到36.5ms(27.4Hz到7kHz)时基0.57ms时,0.57ms到146ms(27.4Hz到7kHz)2时基10ms时,20ms到5.45mins时基1sec时,2sec到9.1hours编程和配置在这个示例中,信号宽度由程序根据控制器输入%I0.0.0和%I0.0.1的状态来修改。如果%I0.0.1和%I0.0.2置为0,%PWM0.R比率置为20%,则信号在状态1的持续时间为:20%x500ms=100ms.如果%I0.0.0置为0,%I0.0.1置为1,%PWM0.R比率置为50%(持续时间为250ms)。如果%I0.0.0和%I0.0.1置为1,%PWM0.R比率置为80%(持续时间为400ms)。编程示例:6-5-3脉冲发生器输出功能模块(%PLS)%PLS功能模块用于生成方波信号。有两个%PLS功能模块可用专用输出通道%Q0.0.0或%Q0.0.1。%PLS功能模块只允许一个信号宽度,或50%的占空比。当脉冲序列执行时,您可以选择限制脉冲的数目或周期。这可由配置的时间决定,和/或被用户应用程序更新。注意:若控制器的这两个通道为继电器输出,则不支持%PLS功能。PLS模块和时序图下表为PLS功能模块特性: 功能 对象 描述 时基 TB 0.142ms,0.57ms,10ms,1sec 预置周期 %PLSi.P 对于时基0.412ms和0.57ms,脉冲发生当达到%PLS1.N时%PLS1输出不停止。1<%PLSi.P<=32767对于时基10ms或1s0<%PLSi.P<=255对于时基0.57ms或0.142ms0=功能未被使用。如果要从时基为10ms或1m的占空比获得好的精确级别,则推荐使%PLSi>=100如果P是奇数。 脉冲数目 %PLSi.N%PLSi.ND* ThenumberofpulsestobegeneratedinperiodTcanbelimitedtotherange0<%PLSi.N<32767instandardmodeor0<%PLSi.ND<2147483647indoublewordmode.Thedefaultvalueissetto0.若要生成无限数目的脉冲,将%PLSi.N置为0。脉冲数目可以被改变而不论调节的设置情况。 可调节 Y/N 如果置为Y,则可以通过HMI或活动表编辑器修改预置值%PLSi.P。如果置为N则不能访问这个预置值。 脉冲发生器输入 IN 状态为1时,脉冲生成发生在专用输出通道。状态为0时,输出通道被置为0。 输入重置 R 状态为1时,输出%PLSi.Q和%PLSi.D被置为0。周期T内生成的脉冲数目被置为0。 当前脉冲生成输出 %PLSi.Q 状态为1时,表示脉冲信号在配置的专用输出通道生成。 脉冲生成完成输出 %PLSi.D 状态为1时,信号生成完成。达到期望的脉冲数目。周期范围预置值和时基可在配置中修改。它们用于确定信号周期T=%PWMi.P*TB。可用的周期范围:时基0.142ms时,0.142ms到36.5ms(27.4Hz到7kHz)时基0.57ms时,0.57ms到146ms(6.84Hz到1.75kHz)2时基10ms时,20ms到5.45mins时基1sec时,2sec到9.1hours6-5-4磁鼓控制器功能模块(%DR)磁鼓控制器的工作原理与机电类凸轮控制器类似,即根据外部事件改变步序。在每一步,凸轮的高点给出一个命令让控制器执行。磁鼓控制器中,每一步的高点用状态1来表示,且作为控制位被赋给输出位%Qi.j或内部位%Mi。下面是磁鼓控制器功能模块图例。         磁鼓控制器功能模块具有如下参数:参数标识值编号%DRi0到3对一体型控制器,0到7对模块型控制器当前步号%DRi.S0<%DRi.S<7.Wordwhichcanbereadandwritten.被写值必须是十进制立即值。被写后,在功能模块下次执行时生效。步数1到8(默认值)回到0步输入(或指令)R(Reset)状态为1时,将磁鼓控制器置为步0。前进输入(或指令)U(Upper)上升沿使磁鼓控制器前进一步并更新控制位。输出F(Full)表示当前步等于定义的最后一步。相关位可被测试(例如,如果%DRi.S=配置的步数-1,则%DRi.F=1)。控制位与步(16位控制位)相关的输出或内部位,在配置编辑器中被定义。操作说明:当前进控制位U上升沿来临时,凸轮前进一步,上一步的控制位被刷新,控制位的状态根据当前步所配置的而定.当复位位R为ON时,凸轮控制器复位,步数置为"0".当凸轮进至最后一步时,输出位F为ON.再遇U的上升沿时重新从第0步开始.配置:在编程软件配置菜单下:<鼓形控制器>下面是一个磁鼓控制器编程示例6-5-5高速计数高速计数器功能模块(%FC)高速计数器功能模块(%FC)可用作加计数器或减计数器。Itcancounttherisingedgeofdigitalinputsuptofrequenciesof5kHzinsinglewordordoublewordcomputationalmode.因为高速计数器由特殊硬件中断管理,所以保持的最高频率采样率可根据您的特殊应用和硬件配置来改变。TheTWDLCA•40DRFCompactcontrollerscanaccomodateuptofourfastcounters,whileallotherseriesofCompactcontrollerscanbeconfiguredtouseamaximumofthreefastcounters.Modularcontrollerscanonlyuseamaximumoftwo.高速计数器功能模块%FC0,%FC1,和%FC2分别使用专用输入%I0.0.2,%I0.0.3,和%I0.0.4。这些位不保留为专用。其它功能模块使用这些专用资源时必须考虑它们的分配。图例下表列出了高速计数器功能模块的参数。 参数 标识 描述 功能 TYPE 配置中设置,可设置为加计数或减计数。 预置值 %FCi.P%FCi.PD Initialvaluemaybeset:->between1and65635instandardmode,->between1and4294967295indoublewordmode, 可调节 Y/N IfsettoY,itispossibletomodifythepresetvalue%FCi.Por%FCi.PDandthecurrentvalue%FCi.Vor%FCi.VDwiththeOperatorDisplayorAnimationTablesEditor.如果设为N,则不能访问预置值。 当前值 %FCi.V%FCi.VD 当前值根据选择的加或减计数功能增加或减少。Forup-counting,thecurrentcountingvalueisupdatedandcanreach65535instandardmode(%FCi.V)and4294967295indoublewordmode(%FCi.VD).Fordown-counting,thecurrentvalueisthepresetvalue%FCi.Por%FCi.PDandcancountdowntozero. 输入使能 IN 状态为1时,当前值根据应用到物理输入的脉冲更新。状态为0时,当前值保持上次值不变。 复位 %FCi.R 用于初始化模块。状态为1时,如果配置为加计数器则将当前值复位到0,如果配置为减计数器则当前值被置为%FCi.P。完成位%FCi.D被置回到它的默认值。 完成 %FCi.D Thisbitissetto1when%FCi.Vor%FCi.VDreachesthe%FCi.Por%FCi.PDconfiguredasanup-counter,orwhen%FCi.Vor%FCi.VDreacheszerowhenconfiguredasadown-counter.该位只读,只能通过置%FCi.R为1将其复位。程序例6-5-6超高速计数器功能模块(%VFC)超高速计数器功能模块(%VFC)可由TwidoSoft配置成执行下面功能之一:加/减计数器加/减2相计数器只加计数器只减计数器频率计The%VFCsupportscountingofdigitalinputuptofrequenciesof20kHzinsinglewordordoublewordcomputationalmode.TheTWDLCA•40DRFCompactcontrollerscanaccomodateuptotwoveryfastcounters,whileallotherseriesofCompactcontrollerscanconfigureoneveryfastcounter(%VFC).Modularcontrollerscanconfigureuptotwoveryfastcounters(%VFC).下面表格列出了超高速计数器功能模块的特性。 功能 描述 值 %VFC使用 实时访问 CurrentValue(%VFCi.V)(%VFCi.VD*) 当前值根据物理输入和选择的功能增加或减少。该值可使用预置输入(%VFCi.S)预置或复位。 %VFCi.V:0->65535%VFCi.VD:0->4294967295 CM 读 Presetvalue(%VFCi.P)(%VFCi.PD*) 仅为加/减计数功能和只加或只减计数使用。 %VFCi.P:0->65535%VFCi.PD:0->4294967295 CM或FM 读和写(1) CaptureValue(%VFCi.C)(%VFCi.CD*) 仅为加/减计数功能和只加或只减计数使用。 %VFCi.C:0->65535%VFCi.CD:0->4294967295 CM 读 计数方向(%VFCi.U) 被系统设置,该位用于加/减计数功能表示计数方向:对于单相加或减计数器,%I0.0.0决定%VFC0的方向,%I0.0.6决定%VFC1。对于两相加/减计数器,两个信号的相的不同决定方向。对%VFC0,%I0.0为IB专用,%I0.1为IA专用。对%VFC1,%I0.6为IB专用,%I0.7为IA专用。 0(减计数)1(加计数) CM 读 映像输出0使能(%VFCi.R) 使映像输出0有效 0(不能)1(使能) CM 读和写(2) 映像输出1使能(%VFCi.S) 使映像输出1有效 0(不能)1(使能) CM 读和写(2) 阈值S0(%VFCi.S0) 该字包含阈值0的值。其意义在功能模块的配置中定义。注意:该值必须小于%VFCi.S1。 %VFCi.S0:0->65535%VFCi.S0D:0->4294967295 CM 读和写(1) 阈值S1(%VFCi.S1) 该字包含阈值0的值。其意义在功能模块的配置中定义。注意:该值必须大于%VFCi.S0。 %VFCi.S1:0->65535%VFCi.S1D:0->4294967295 CM 读和写(1) 频率测量时基(%VFCi.T) 配置项为100或1000毫秒时基。 1000或1 FM 读和写(1) 可调节(Y/N) 配置项,当被选时,允许用户在运行时修改预置值,阈值,和频率测量时基值。 N(不可以)Y(可以) CM或FM 不可以 输入使能(IN) 用于使当前功能有效或失效。 0(不可以) CM或FM 读和写(3) 预置输入(S) 根据配置,状态为1时:加/减或减减计数:用预置值复位当前值。只加计数:将当前值复位到0。另外,它也初始化阈值输出的操作,及使用户通过操作显示或用户程序对阈值所作的任何修改生效。 0或1 CM或FM 读和写 输出溢出(F) 0to65535orfrom65535to0instandardmode0to4294967295orfrom4294967295to0indoublewordmode 0或1 CM 读 阈值位0(%VFCi.TH0) 当当前值大于或等于阈值%VFCi.S0时置为1。建议在程序中对该位只测试一次,因为它将被实时更新。用户应用程序对该值使用时的有效性负责。 0或1 CM 读 阈值位1(%VFCi.TH1) 当当前值大于或等于阈值%VFCi.S1时置为1。建议在程序中对该位只测试一次,因为它将被实时更新。用户应用程序对该值使用时的有效性负责。 0或1 CM 读6-5-7调度模块调度模块用于控制在预定的月,日,时间执行的动作。最多可使用16个调度模块且不需要任何程序输入。注意:检查系统位%S51确认日历时钟(RTC)选件已安装,见系统位(%S)。使用调度模块需要RTC选件。下表列出了调度模块的参数: 参数 格式 功能/范围 调度模块编号 n n=0到15 Configured 确认框 选择这个框配置所选的调度模块编号。 输出位 %Qx.y.z 输出赋值的激活由调度模块%Mi或%Qj.k。当当前日期和时间介于活动周期的开始设置和结束设置之间时,输出被置为1。 开始月 一月到十二月 调度模块的开始月。 结束月 一月到十二月 调度模块的结束月。 开始日期 1-31 调度模块的开始日期。 结束日期 1-31 调度模块的结束日期。 开始时间 hh:mm 调度模块的开始时间,小时(0到23)和分(0到23)。 结束时间 hh:mm 调度模块的结束时间,小时(0到23)和分(0到23)。 星期 星期一到星期日 确认框识别激活的调度模块处于星期几。6-6通讯指令6-6-1发送/接收消息-交换指令(EXCH)一个Twido控制器配置后可与Modbus从设备通信,或以字符模式(ASCII)发送和/或接收消息。TwidoSoft为这些通信提供了下列功能:EXCH指令用于发送/接收消息交换控制功能模块(%MSG)用于控制数据交换Twido控制器在处理EXCH指令时使用指定端口的配置协议。每个通信端口可被分配一个不同的协议。通过添加端口号到EXCH或%MSG功能(EXCH1,EXCH2,%MSG1,%MSG2)可以访问通信端口。TWDLCAE40DRF可用EXCH3和%MSG3来进行TCP/IP通讯。EXCH指令EXCH指令允许Twido控制器发送和/或接收信息到/从ASCII设备。用户定义一个字表(%MWi:L或%KWi:L)包含被发送和/或接收的数据(发送和/或接收最多128个数据字节)。字表的格式在与每个协议有关的段落被定义。消息交换通过EXCH指令完成。语法下面是EXCH指令的格式:[EXCHx%MWi:L]Where:x=serialportnumber(1or2);x=Ethernetport(3);L=totalnumberofwordsofthewordtable(maximum121).内部字表%MWi:L的值为i+L<=255.Twido控制器必须在第二个交换指令开始之前通过第一个EXCHx指令完成交换。发送几个消息时必须使用%MSG功能模块。6-6-2交换控制模块(%MSGx)功能说明:       数据交换控制功能块用于发送/接收信息时数据交换的控制.主要完成一下三个功能:1.通讯错误检测,校验已发送数据长度是否与EXCH指令要求的长度一至.2.协调多条信息发送.3.发送优先信息,%MSG功能块可使当前信息停止发送,直接发送紧急信息.下面是一个%MSGx功能模块示例        下表列出了%MSGx功能模块的参数。 参数 标识 值 输入(或指令)复位 R 置为1时,通信重新初始化:%MSGx.E=0和%MSGx.D=1. 通信完成输出 %MSGx.D 状态1表示通信在下列情况完成:发送结束(如果是发送)接收结束(收到结束字符)错误模块重启状态0表示请求在处理过程中。 故障(出错)输出 %MSGx.E 状态1表示通信在下列情况完成:命令错误表配置错误收到不正确的字符(速率,奇偶,等等)接收表满(未更新)状态0表示消息长度和连接都正确。如果使用一个EXCH指令时出错,则%MSGx.D和%MSGx.E被置为1,且系统字%SW63包含端口1的错误代码,%SW64包含端口2的错误代码。见系统字(%SW).输入复位(R)当输入复位置为1时:处于发送状态的消息被停止。故障(出错)输出被置为0。完成位被置为1。现在可以发送一条新的消息。故障(出错)输出(%MSGx.E)因为通信编程出错,或者是因为消息传送出错时出错输出被置为1。如果与EXCH指令相关的数据模块定义的字节数(字1的低位字节)大于128(十六进制80),出错输出被置为1。如果发送一个Modbus消息到一个Modbus设备中存在问题也将使出错输出被置为1。这种情况下,用户应该检查连线和目的设备对Modbus通信的支持问题。通信完成输出(%MSGx.D)当完成输出被置为1时,Twido控制器准备发送另一个消息。当发送多消息时推荐使用%MSGx.D位。如果不使用,消息可能被丢失。多条连续消息的发送EXCH指令的执行激活应用程序中的消息模块。消息模块未被激活(%MSGx.D=1)时消息被发送。如果统一循环中发送多条消息,则只有第一条消息被发送。用户需要使用程序来管理多消息的发送。在端口2上连续发送两条消息的示例:%C0.D%C0.D%S6%Q0.0%Q0.2%TM0.Q%TM1.Q�EMBEDMS_ClipArt_Gallery���注意:�使用定时器功能块时必须进行配置,否则所有参数都将是缺省值.PEXCH%MW8:3EXCH%MW2:4%MSG.D%I0.0%M0%M0%M0%MSG.D�EMBEDMS_ClipArt_Gallery���注意:�与支持ASCII通讯的设备通讯时,发送的数据需是该设备可识别的ASCII命令,不同的设备命令可能不同.
本文档为【施耐德PLC Twido PLC 可编程控制器 第六章、指令】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: ¥12.0 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
xxj7584
暂无简介~
格式:doc
大小:10MB
软件:Word
页数:0
分类:
上传时间:2020-07-08
浏览量:45