施耐德PLC Twido PLC 可编程控制器 第六章指令.docx
《施耐德PLC Twido PLC 可编程控制器 第六章指令.docx》由会员分享,可在线阅读,更多相关《施耐德PLC Twido PLC 可编程控制器 第六章指令.docx(76页珍藏版)》请在冰豆网上搜索。
![施耐德PLC Twido PLC 可编程控制器 第六章指令.docx](https://file1.bdocx.com/fileroot1/2023-2/24/5298f56d-cc8f-45a5-89e6-bd025b8814d5/5298f56d-cc8f-45a5-89e6-bd025b8814d51.gif)
施耐德PLCTwidoPLC可编程控制器第六章指令
第六章、指令
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定时器功能块
掌握要点:
定时器功能块的使用,配置.
定时器功能块%TMi
TWIDOPLC可提供128个定时器(0到63:
TWDLCAA10DRF和TWDLCAA16DRF,0到127对所有其它控制器)。
定时器有三种类型,可在配置时设定:
TON(定时器导通-延时):
这种定时器用于控制导通-延时动作。
TOF(定时器关断-延时):
这种定时器用于控制关断-延时动作。
TP(定时器-脉冲):
这种定时器用于产生精确宽度的脉冲。
延时或脉冲周期可编程并可使用TwidoSoft进行修改。
下面是定时器功能模块图例。
定时器功能块使用的参数:
参数
标识
值
定时器编号
%TMi
0到63:
TWDLCAA10DRF和TWDLCAA16DRF
0到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%TM0
LDN%TM1.Q
IN
OUT_BLK
LDQ
ST%Q0.2
END_BLK
BLK%TM1
LD%TM0.Q
IN
END_BLK
6-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%C0
LD%C0.D
R
LD%S6
CU
END_BLK
BLK%C1
LD%C0.D
CU
OUT_BLK
LDD
ST%Q0.0
END_BLK
6-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.15
ST%SBR0.0
BLK%SBR0
LD%S6
CU
END_BLK
6-2-4步进计数器功能模块(%SCi)
步进计数器功能模块(%SCi)提供了一系列的步,动作可赋值给这些步。
从一个步移动到另一个步取决于外部或内部事件。
每当一个步处于激活状态时,相关位被置为1。
步进计数器在一个时刻只能有一个步被激活。
下面是一个步进计数器功能模块示例。
步进计数器功能模块具有下列参数
参数
标识
值
步进计数器编号
%SCi
I=0-7
步进计数器位
%SCi.j
步进计数器的位0到255(j=0到255)可被装载逻辑测试,且由赋值指令写。
输入(或指令)复位
R
WhenfunctionparameterRis1,thisresetsthestepcounter.
输入(或指令)增加
CU
其上升沿将步进计数器增加一步。
输入(或指令)减少
CD
其上升沿将步进计数器减少一步。
操作说明:
CU上升沿时步计数器前进一步,相应的步计数器位被置ON
CD上升沿时步计数器后退一步,相应的步计数器位被置ON
R上升沿时步计数器被复位.
时序图
下面是步进计数器功能模块操作时序图。
编程
下面是一个步进计数器功能模块示例。
步进计数器0由输入%I0.2增加。
步进计数器0由输入%I0.3或当它到达步3时复位到0。
步0控制输出%Q0.1,步1控制输出%Q0.2,步2控制输出%Q0.3。
BLK%SC0
LD%SC0.3
OR%I0.3
R
LD%I0.2
CU
END_BLK
LD%SC0.0
ST%Q0.1
LD%SC0.1
ST%Q0.2
LD%SC0.2
ST%Q0.3
6-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]
赋值操作可用于:
位串
字
双字
浮点字
字表
双字表
浮点字表
程序例:
6-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位字。
语法取决于使用的运算符,如下表所示: