罗克韦尔(AB)PLC,基础指令集讲解(3)比较指令
CMP 是一条输入指令。
操作数:
操作数
数据类型
格式
说明
表达式
SINT INT DINT
REAL
立即数 标签
表达式由被运算符分 隔的标签与/或立即 数组成
说明: CMP 指令执行表达式中指定的算术运算比较。用户要执行的运算由表达式定义。用 运算符, 标签和立即数定义表达式。表达式中的复杂部分用圆括号() 定义。
有效运算符
运算符
说明
最优数据类型
+
加
DINT , REAL
-
减/非
DINT , REAL
*
乘
DINT , REAL
/
除
DINT , REAL
=
等于
DINT , REAL
<
小于
DINT , REAL
<=
小于或等于
DINT , REAL
>
大于
DINT , REAL
>=
大于或等于
DINT , REAL
<>
不等于
DINT , REAL
**
指数
DINT , REAL
ACS
反余弦
REAL
AND
按位与
DINT
ASN
反正弦
REAL
ATN
反正切
REAL
COS
余弦
REAL
DEG
弧度转换成角度
DINT , REAL
FRD
BCD码转换成整数
DINT
LN
自然对数
REAL
L0G
以10为底的对数
REAL
N0T
位补码
DINT
0R
按位0R
DINT
RAD
角度转换成弧度
DINT, REAL
sIN
正弦
REAL
sQR
平方根
DINT, REAL
TAN
正切
REAL
T0D
整数转换成BCD
DINT
X0R
按位异或
DINT
确定运算顺序 指令按预先规定的顺序, 而不必按用户列出的顺序, 执行写入表达式的 运算。可以通过把分组项组合到圆括号内来改变运算顺序, 强制指令在执行其他运算之前执 行圆括号内的运算, 来改变运算顺序。同级运算顺序从左向右执行。
顺序
运算符
1
ACS , ASN , ATN , COS , DEG , FRD , LN , LOG , RAD , SIN , SQR , TAN , TOD
2
**
3
- (取反) , NOT
4
* , /
5
<,<=,>,>=,=
6
-(减) , +
7
AND
8
XOR
9
OR
与专用比较指令相比, 执行一条 CMP 指令速度稍慢而且占用更多的内存。CMP 指令的
优点是用户可以在一条指令内写入复杂的表达式。
如果 CMP 指令判断表达式为真, 则梯级输出条件被设 置为真。
如果输入一个没有比较运算符
的表达时, 例如, Ivalue_ 1+ value_2,则指令计算表达式的数 值:
如果表达式的值是
梯级输出条件被设置为
非零值
真
零值
假
2. 等于指令 (EQU )
EQU指令是一条输入指令。
如果 value_ 1 与 value_2 相等, 则梯级输出条件被设置为真。
操作数:
操作数
数据类型
格式
说明
源A
SINT INT DINT
REAL
立即数 标签
与源B比较的数值
源B
SINT INT DINT
REAL
立即数 标签
与源A比较的数值
说明: EQU 指令测试源 A 的值与源 B 的值是否相等。REAL 数据类型的数值很少绝对相等。 如果必须确定两个 REAL 值是否相等, 可以使用 LIM 指令。
3. 大于或等于指令 (GEQ )
GEQ指令是一条输入指令。
如果 value_ 1 大于或等于 value_2 , 则梯级输出条件被设置为真。
操作数
操作数
数据类型
格式
说明
源A
SINT INT DINT REAL
立即数 标签
与源B比较的数值
源B
SINT INT DINT REAL
立即数 标签
与源A比较的数值
说明: GEQ 指令测试源 A 的值是否大于或等于源 B 的值。
4. 大于指令 (GRT )
GRT指令是一条输入指令。
如果 value_ 1 大于 value_2 , 则梯级输出条件被设置为真。
操作数:
操作数
数据类型
格式
说明
源A
SINT INT DINT
REAL
立即数 标签
与源B比较的数值
源B
SINT INT DINT
REAL
立即数 标签
与源A比较的数值
说明: GRT 指令测试源 A 的值是否大于源 B 的值。
5. 小于或等于指令 (LEQ )
GEQ指令是一条输入指令。
如果 value_ 1 小于或等于 value_2 , 则梯级输出条件被设置为真。
操作数:
操作数
数据类型
格式
说明
源A
SINT INT DINT
REAL
立即数 标签
与源B比较的数值
源B
SINT INT DINT
REAL
立即数 标签
与源A比较的数值
6. 小于指令 (LES )
LES指令是一条输入指令。
如果 value_小大于 value_2 , 则梯级输出条件被设置为真。
操作数:
操作数
数据类型
格式
说明
源A
SINT INT DINT
REAL
立即数 标签
与源B比较的数值
源B
SINT INT DINT
REAL
立即数 标签
与源A比较的数值
说明: LES 指令测试源 A 的值是否小于源 B 的值。
7. 极限比较指令 (LIM )
LIM 指令是一条输入指令。
操作数:
操作数
数据类型
格式
说明
下限
SINT INT DINT
REAL
立即数 标签
下限值
源B测试
SINT INT DINT
REAL
立即数 标签
测试值
上限
SINT INT DINT
REAL
立即数 标签
上限值
说明: LIM 指令比较测试值是否在下限和上限范围内。
LIM 指令举例: 例 1
LowLimit<=HighLimit: 当 0<=value<=100 时, 接通 light_ 1.
例 2
LowLimit>=HighLimit: 当 value>=0 或 value<=- 100 时, 接通 light_ 1.
8. 屏蔽等于指令 (MEQ )
MEQ 指令是一条输入指令。
操作数:
操作数
数据类型
格式
说明
源
SINT INT DINT
立即数 标签
与比较值比较的数值
屏蔽
SINT INT DINT
立即数 标签
阻止或通过的位
比较
SINT INT DINT
立即数 标签
与源值比较的数值
说明: MEQ 指令比较通过屏蔽的源值和比较值的结果。
MEQ 指令举例:
例 1 :
Value_ 1 :
0
1
0
1
0
1
0
1
1
1
1
1
1
1
1
1
Mask_ 1:
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
通过屏蔽的 value_ 1:
0
1
0
1
0
1
0
1
1
1
1
1
*
*
*
*
Value_2 :
0
1
0
1
0
1
0
1
1
1
1
1
0
0
0
0
Mask_ 1:
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
通过屏蔽的 value_2:
0
1
0
1
0
1
0
1
1
1
1
1
*
*
*
*
9. 不等于指令 (NEQ )
NEQ指令是一条输入指令。
如果 value_ 1不等于value_2 , 则梯级输出条件被设置为真。
操作数:
操作数
数据类型
格式
说明
源A
SINT INT DINT
REAL
立即数 标签
与源B比较的数值
说明: NEQ 指令测试源 A 的值与源 B 的值是否相等。
罗克韦尔PLC指令大全,网上不多的资料!建议收藏
小舒一直以来都是发西门子PLC为主,不是因为严重偏科哈。是因为接触的都是以西门子的比较多,而且目前市面上西门子的占比也是比较不错的。昨天有位小伙伴私信给我,说想要小舒发一点罗克韦尔的PLC指令资料。那小舒今天就整理一篇,供大家学习一下!有误的地方也请大家不吝赐教哦~~
罗克韦尔控制器指令大全
一、位指令
用于监视和控制位状态
XIC:检查是否闭合指令
XIO:检查是否断一开指令
OTE:输出激励指令
OTL:输出锁存指令
OTU:输出解锁指令
ONS:一次启动指令
OSR上升沿一次启动指令
OSF下升沿一次启动指令
二、计时器和计数器指令
TON延时导通计时器指令
TOF延时断开计时器指令
RTO保持导通计时器
CTU加计数指令
CTD减计数指令
RES复位指令
三、比较指令
CMP比较指令
EQU等于指令
GEQ大于或等于指令
GRT大于指令
LEQ小于或等于指令
LES小于指令
LIM极限比较指令
MEQ屏蔽等于指令
NEQ不等于指令
四、计算/算术指令
CPT计算指令
ADD加法指令
SUB减法指令
MUL乘法指令
DIV除法指令
SQR平方根指令
NEG取反指令
五、传送/逻辑指令
MOV传送指令
MVM屏蔽传送指令
BTD位域分配
CLR清零指令
AND按位与指令
OR按位或指令
XOR按位异或指令
NOT按位非指令
六、其它
FAL对数组内的数进行算术、逻辑、移位、函数运算:执行存储在数组内数据的算术、逻辑、移位、和函数运算。用位置值(POS)提供整个数组的顺序级数。
EN:使能位,表FAL被使能
DN:当指令处理完最后一个元素时(POS=LIN)完成位被置位
ER:在计算表达式时发生溢出(SV被置位)则错误位被置位
LEN:指定FAL指令操作的数组内元素的数量
POS:位置值包含指令正访问的当前元素的位置。CONTROL:运算的控制结构体
LENGTH:要处理的数组元素的数量
POSITION:数组内当前元素的位置,(一般为0)
MODE:对数组内元素的操作模式,选择增量(INC)、整体(ALL)、或输入一个数值
DEST:目的单元
EXPRESSION:表达式
FSC 搜索并比较数组内数值:一个元素一个元素的比较数组内的值,对于逻辑运算,用户必须在表达式内说明。若FSC指令被使能,且比较结果为真,则指令置发现位(FD)及其位置位(POS),表明指令发现的比较为真的数组位置。
COP 复制一个数组的内容到另一个数组:复制源操作数的数值到目的单元,源操作数不变。字节数量=长度*(目的单元数据类型的字节数),COP指令为不写出数组的未尾。对存储器内的相邻的数据进行操作,且执行存储器内字节到字节的直接复制。
FLL 用指定的数据填充数组:用源值填充一个数组内的元素。源保持不变。填充字节的数量是:字节数=长度*(目的单元数据类型的字节数),对存储器内的相邻的数据进行操作AVE计算数值内的一组数值的平均值:
SRT 按上升顺序排序数组内的一维数据:以上升的顺序对数值内的一维数组进行排序。
STD 计算数值内的一组数值的标准偏差:计算数组中一维数组内一组值的标准偏差,存储结果于目的单元数组(文件)/移位指令:用数组(文件)/移位指令修改数组内数据的位置
BSL/R 每次完成对位数组中一位的装载、移动或卸载操作:使数组内的指定位向左(右)移动一个位置,当指令被使能时,把指定位的最高位卸载到卸载位UL),其余的位向左(右)移动一个位置,并且装截位地址于数组的位0内。对连续存储单元单元进行操作。
FFL/U 按相同的顺序装截或卸载数据:FFL指令复制源值到FIFO内,用FFL和FFU指令存储数据,并且可按先进/先出的顺序取回数据。当使用该指令对时,FFL和FFU指令建立了一个异步移位寄存器。当指令被使能时,FFL指令把源值装入由位置值(POS)确定的FIFO内的位置,每次指令被使能装载一个数值,直到FIFO满为止。源操作数和FIFO用相同的数据类型。FFL指令对连续存储单元进行操作。FFU指令卸载FIFO的位置0(第一位置)的数值并存放该值于目的单元。FIFO内的其余数据向下移动一个位置。FFU指令一起按选进/先出的顺序存储和返回数据。当指令被使能时,FFU指令从FIFO的第一个元素卸载数据并存放该值于目的单元,指令每次被使能时卸载一个数值,直到FIFO栈空为止。如果FIFO为空,则FFU指令向目的单元返回0值。
LFL/U 按相反的顺序装截或卸载数据:LFL指令复制源值到LIFO内,用LFL和LFU指令存储数据,并且可按后进/先出的顺序取回数据。当使用该指令对时,LFL和LFU指令建立了一个异步移位寄存器。当指令被使能时,LFL指令把源值装入由位置值(POS)确定的LIFO内的位置内,每次指令被使能装载一个数值,直到LIFO栈满为止。源操作数和LIFO用相同的数据类型。LFL指令对连续存储单元进行操作。LFU指令卸载LIFO的位置值(POS)内的0值于该位置,LFU和LFL指令一起按后进/先出的顺序存储和返回数据。
LIFO 必须和目的单元数据类型一致。当指令被使能时,LFO指令从LIFO的位置值(POS)内的数值并存该值于目的单元,指令每次被使能时都卸载一个数值并用0值替换该值,直到LIFO栈空为止。如果LIFO为空,则LFU指令返回0值到目的单元。
顺序器指令: 监控一致性且重复性操作
SQI
顺序器输入指令:检测SQO/SQI顺序器指令对何时完成一步。当指令被使能时,SQI指令通过屏蔽使源
元素与一个数组元素作相等的比较SQI指令对连续存储器单元进行操作。输入立即数作为屏蔽值。
SQO
顺序器输出指令:SQO指令设置SQO/SQI顺序器指令对下一步输出条件。当指令被使能时,SQO指令增加位置值,通过屏蔽传送该位置内的数据,并把结果存入目的单元,若位置值(POS)〈长度值(LEN),则指令返回到顺序器数组的开始处,并从位置值(POS)处继续执行。SQO指令对连续存储器单元进行操作。输入立即数作为屏蔽值。
SQL
顺序器半装载指令:把参考条件装入顺序器数组内,当指令使能时,SQL指令增加位置值到顺序器数组的下一个位置,并装载源数值到该位置。若完成位被置位或位置值(POS)〈长度值(LEN),则指令设置位置值(POS)=1
程序控制指令: 用程序控制指令改变程序的流程
JMP/ LBL
跳转到标号指令(JMP):当指令被使能时,JMP跳到其引用的LBL指令,控制器从该处继续继续执行:
当指令被禁止时,JMP不影响梯形图程序的执行。JMP可向前或向后跳转执行梯形图程序,向前跳转到标号可通过略过部分梯形图逻辑直到需要的程序,从机时节省程序扫描时间。向后跳使控制器重复执行梯形图逻辑。向后跳次数不要太多,否则看门狗定时器可能超时,因控制器不能到达程序的未尾,而导致控制器故障。
LBL 是具有同一标号名称的JMP指令的跳转目标,要确保LBL是其所在梯级的第一条指令。在一个程序内标号名称必须是唯一的,标号名称可是:最多有40个字符,可包含字母、数字、和下划线。
JSR
跳转到子程序指令JSR:JSR、SBR和RET指令使逻辑执行转到程序中的独立的子程序,对子程序进行一次扫描,然后返回到程序的转移点。
当指令被使能时,若有输入参数,JSR传递它的输入参数,并使执行转到子程序的第一梯级。SBR指令接收输入参数并复制这些到指定的标签。JSR输入参数的数量和类型需与SBR指令相匹配。JSR输入参数的数量比相应的SBR指令输入参数少,控制器出现主要错误,JSR输入参数的数量多没关系。
用户可使用SBR指令而不输入参数,表明其驻留的程序是子程序,不能把SBR放入主程序内。要返回参数到JSR指令,必须使用RET指令结束子程序,一个子程序可有多条RET指令。子程序指令SBR、返回指令RET。
JSR、SBR和RET 指令通过数值把参数传入或传出子程序。需使用额外的执行时间和存储器来复制数值。
TND
暂停指令: 当指令被使能,TND指令担当程序的未尾,若控制器扫描到一条TND指令,则控制器转移到当前程序的结束处。若TND在一个子程序内,则控制返回到调用它的程序。若TND在一个主程序内,则控制返回到当前程序的下一个程序。可在调试或故障诊断时使用TND指令使程序执行到一确定点。然后在程序内进一步移动TND指令到需调试程序的新部分。
MCR
主控复位指令: 成对使用,当MCR区域被使能时,在MCR区域内的梯级的为真或为假条件被正常扫描。
必须成对使用,不能在MCR区域内嵌套另一个MCR区域,不要跳转到MCR区域,若MCR区域持续到程序的未尾,则不必在区域的结束处编制一条MCR指令。
UID
禁止用户中断指令: 被使能时则继续执行当前任务,需不能被高优先级的任务中断,除非执行UIE指令或到程序的未尾,UID指令不能能禁止一个故障子程序或故障任务。当指令被使能时,UID指令增加内部计数器的数值,只要计数器的值不为零,当前执行的任务就不会被中断。
UIE
用户中断使能指令:被使能且内部计数器的值大于零,则计数器的值减少,当计数器的值等于零时,当前执行的任务可再次被中断,此时执行任何先前被禁止中断的高优先级任务。
AFI
恒假指令:设置它的梯级输出条件为假
NOP
空操作指令:NOP的功能相当于占符位,编程时可放置NOP于梯级的任何地方,当指令被使能时NOP执行空操作,当指令被禁止时,NOP指令也执行空操作。
循环/禁止循环指令:用FOR重复调用子程序,用BPK指令中断一个子程序的执行。
FOR
重复执行子程序:当指令被使能时,FOR重复执行子程序,直到索引值超过终止值。该指令不向子程序传递参数。每次FOR执行子程序时,它都把每步大小加到索引值。不要在单次扫描循环太多次,重复次数太多可引起控制器的看门狗超时,这会导致主要故障。
BRK
终止循环指令:中断被FOR指令调用的子程序的执行。当指令被使能时,BRK指令离开当前子程序并使控制器返回到FOR指令的下一条指令。若存在嵌套的FOR指令,则BRK指令使控制返回到FOR指令的最内层。
RET
返回指令:返回到调用的FOR指令,FOR不使用操作数,FOR忽略用户输入到RET指令的任何参数。当使能时,RET返回到FOR指令,FOR指令以每步大小为单位增加索引值,并再次执行子程序,若索引值超过终止值,则FOR指令完成,而且程序执行转移到FOR指令的下一条指令。用户可用TND指令结束子程序的执行。
专用指令: 执行特殊应用操作
FBC
文件位比较:当指令使能时,比较源数组内的位与参考数组内的位,并且记录每个不匹配的位号于结果数组内。与DDT区别:每次DDT发现一个不匹配位,该指令改变参考位的值使之与原数组内的位匹配,而FBC不改变参考位的值。
DDT
诊断检测:当指令使能时,比较源数组内的位与参考数组内的位,并且记录每个不匹配的位号于结果数组内,而且改变参考数组内位的值,使其与相应的源数组内的位的数值相配。
DTR
数据传送指令:通过屏蔽传递源值并使其结果与参考值比较,同时也用屏蔽的源值覆盖参考值,用于下一次比较,源值保持不变。
屏蔽操作数内的一个1意味着通过位数据,一个0意味着位数据被阻止。当通过屏蔽后的源值与参考值不一致时,梯级输出条件为真一个扫描周期,若屏蔽的源值与参考值相同,则梯级输出条件为假。输入立即数为作为屏蔽值。
PID
比例、积分、微分指令:接收来自模拟量输入模块的过程变量(PV),并通过模拟量输出模块调节控制变量输出(CV),使能位(EN)表指令在执行状态PID通过防止CV输出达到其由MAXO和MINO设定的最大或最小值时,积分项继续累加来自动避免积分饱和。累加的积分项保持不变,直到CV输出降到其最大上限值以下,或升到其最小下限值以上,然后正常的积分累加值自动从新开始。
PID自动提供由软件手动模式到自动模式,或手动模式到自动模式的无冲击转换。要禁止微分平滑作用,可在配置制表栏中选择“禁止微分平滑(no derivative smoothing)”选项或在PID结构体中置位NDF位。
三角函数指令: 用三角函数来进行算术运算
SIN
正弦指令:计算源操作数的正弦值(以弧度表示),存结果于目的单元内。源值必须大于或等于-205887.4且小于205887.4,目的单元内的结果数值总大于或等于-1且小于或等于1
COS
余弦指令:计算源操作数的余弦值(以弧度表示),存结果于目的单元内,同上
TAN
正切指令:计算源操作数的正切值(以弧度表示),存结果于目的单元内。 源值必须大于或等于-102943.7且小于102943.7
ASN
反正弦指令:计算源操作数的反正弦值,存结果于目的单元内(以弧度表示)。源值必须大于或等于-1且小于或等于1,目的单元内的结果数值总大于或等于-2π且小于或等于2π。
ACS
反余弦指令:计算源操作数的反余弦值,存结果于目的单元内(以弧度表示)。源值必须大于或等于-1且小于或等于1,目的单元内的结果数值总大于或等于0且小于或等于π。
ATN
反正切指令:计算源操作数的反正切值,存结果于目的单元内(以弧度表示),源值必须大于或等于-1且小于或等于1,目的单元内的结果数值总大于或等于-π/2且小于或等于π/2。
高级算术指令:
LN
自然对数指令:计算源操作数的自然对数并存结果于目的单元内。源数值必须大于零,否则S:V被置位。目的单元结果值大于或等于-87.33655且小于或等于88.72284.
LOG
以10为底的对数指令: 计算源操作数的以10为底的对数并存结果于目的单元内。源数值必须大于零,否则S:V被置位。目的单元结果值大于或等于-37.92978且小于或等于38.53184.
XPY
X的Y次幂指令:计算源A(X)的源B(Y)次幂并存结果于目的单元。若源A是负数,则源B必须是一个整数值,否则将发生次要错误.
数学转换指令:
DEG
转换弧度为角度:转换源值(以弧度表示)为角度并存结果于目的单元内。
RAD
转换角度为弧度:转换源值(以角度表示)为弧度并存结果于目的单元内。
TOD
转换整数值为BCD码:转换一个十进制的值(0≤源操作数≤99999999)为BCD码并存结果于目的单元内。
若输入源操作数为一个负数,则发生次要错误并清零目的单元。
FRD
转换BCD码为整数值:转换一个BCD码值为十进制值并存结果于目的单元内。
相关问答
喷涂设备的组成部分
[回答]涂装生产线全线工件输送系统采用空中悬挂和地面滑橇相结合的机械化输送方式,运行平稳、快速便捷,采用PLC可控编程,根据生产工艺的实际要求编程控制...