编程指令
顺序输入指令
顺序输出指令
顺序输出指令
定时器和计数器指令
比较指令
数据传送指令
指令助记符
装载LD
装载非LD NOT
与AND
与非AND NOT
或OR
或非OR NOT
与装载AND LD
或装载OR LD
非NOT
条件ON UP
条件OFF DOWN
指令助记符
输出OUT
输出非OUT NOT
保持KEEP
上升沿微分DIFU
下降沿微分DIFD
置位SET
复位RSET
多位置位SETA
多位复位RSTA
单一位置位SETB
单一位复位RSTB
指令助记符
结束END
空操作NOP
联锁IL
联锁解除ILC
多联锁区别保持MILH
多联锁区别释放MILR
多联锁解除MILC
跳转JMP
跳转结束JME
条件跳转CJP
FOR循环FOR
循环终止BREAK
下一个循环NEXT
指令助记符
定时器
TIM
编辑指令
数据移位指令
递增/递减指令
四则运算指令
转换指令
逻辑指令
特殊算术指令
特殊算术指令
表格数据处理指令
数据控制指令
指令助记符
移位寄存器SFT
可逆移位寄存器SFTR
字移位WSFT
算术左移ASL
算术右移ASR
循环左移ROL
循环右移ROR
一个数字左移SLD
一个数字右移SRD
左移N位NASL
双字左移N位NSLL
右移N位NASR
双字右移N位NSRL
指令助记符
二进制递增++
双字二进制递增++L
二进制递减--
双字二进制递减--L
BCD递增++B
双字BCD递增++BL
BCD递减--B
双字BCD递减--BL
指令助记符
无进位带符号二进制加法+
无进位带符号双字二进制加法+L
有进位带符号二进制加法+C
有进位带符号双字二进制加法+CL
无进位BCD加法+B
无进位双字BCD加法+BL
有进位BCD加法+BC
有进位双字BCD加法+BCL
无进位带符号二进制减法-
无进位带符号双字二进制减法-L
有进位带符号二进制减法-C
有进位带符号双字二进制减法-CL
无进位BCD减法-B
无进位双字BCD减法-BL
有进位BCD减法-BC
有进位双字BCD减法-BCL
带符号二进制乘法*
带符号双字二进制乘法*L
BCD乘法*B
双字BCD乘法*BL
带符号二进制除法/
带符号双字二进制除法/L
BCD除法/B
双字BCD除法/BL
指令助记符
BCD→二进制BIN
双字BCD→双字二进制BINL
二进制→BCD BCD
双字二进制→双字BCD BCDL
二进制求补NEG
数据译码MLPX
数据编码DMPX
ASCⅡ转换码ASC
ASCⅡ→HEX HEX
指令助记符
逻辑与ANDW
双字逻辑与ANDL
逻辑或ORW
双字逻辑或ORWL
异或XORW
双字异或XORL
求补COM
双字求补COML
指令助记符
算术处理APR
位计数器BCNT
指令助记符
浮点数→16位FIX
浮点数→32位FIXL
16位→浮点数FLT
32位→浮点数FLTL
浮点数加法+F
浮点数减法-F
浮点数除法/F
浮点数乘法*F
浮点符号比较
LD, AND, OR+=F
LD, AND, OR+<>F
LD, AND, OR+
LD, AND, OR+>F
LD, AND, OR+>=F
浮点数→ASCⅡ FSTR
ASCⅡ→浮点数FVAL
指令助记符
交换字节SWAP
帧校验和FCS
指令助记符
带自调整的PID控制PIDAT
时间比例输出TPO
标度SCL
标度2 SCL2
标度3 SCL3
平均值AVG
子程序指令
中断控制指令
高速计数器和脉冲输出指令
步指令
I/O单元指令
串行通信指令
时钟指令
故障诊断指令
其他指令
指令助记符
子程序调用SBS
子程序进入SBN
子程序返回RET
指令助记符
设置中断屏蔽MSKS
清除中断CLI
禁止中断DI
允许中断EI
指令助记符
模式控制INI
高速计数器当前值读取PRV
比较表载入CTBL
速度输出SPED
设置脉冲PULS
脉冲输出PLS2
加速度模式ACC
原点搜索ORG
可变占空比系数脉冲PWM
指令助记符
步定义STEP
步启动SNXT
指令助记符
I/O刷新IORF
7段译码SDEC
数字开关输入DSW
矩阵输入MTR
7段显示输出7SEG
指令助记符
发送TXD
接收RXD
指令助记符
日历加法CADD
日历减法CSUB
时钟调整DATE
指令助记符
故障报警FAL
严重故障报警FALS
指令助记符
设置进位STC
清除进位CLC
延长最大循环时间WDT
TIMX
计数器
CNT
CNTX
高速定时器
TIMH
TIMHX
1MS定时器
TMHH
TMHHX
累计定时器
TTIM
TTIMX
长时间定时器
TIML
TIMLX
可逆计数器
CNTR
CNTRX
定时器/计数器复位
CNR
CNRX
指令助记符
输入比较指令
(无符号)
LD,AND,OR+=
LD,AND,OR+<>
LD,AND,OR+<
LD,AND,OR+<=
LD,AND,OR+>
LD,AND,OR+>=
输入比较指令
(双字长,无符号)
LD,AND,OR+=+L
LD,AND,OR+<>+L
LD,AND,OR+<+L
LD,AND,OR+<=+L
LD,AND,OR+>+L
LD,AND,OR+>=+L
输入比较指令
(带符号)
LD,AND,OR+=+S
LD,AND,OR+<>+S
LD,AND,OR+<+S
LD,AND,OR+<=+S
LD,AND,OR+>+S
LD,AND,OR+>=+S
输入比较指令
(双字长,带符号)
LD,AND,OR+=+SL
LD,AND,OR+<>+SL
LD,AND,OR+<+SL
LD,AND,OR+<=+SL
LD,AND,OR+>+SL
LD,AND,OR+>=+SL
时间比较指令
=DT
<>DT
>DT
>=DT
比较CMP
双字比较CMPL
带符号二进制比较CPS
双字长带符号二进制比较CPSL
表格比较TCMP
无符号块比较BCMP
区域范围比较ZCP
双区域范围比较ZCPL
指令助记符
传送MOV
双字长传送MOVL
传送非MVN
传送位MOVB
数字传送MOVD
多位传送XFRB
块传送XFER
块置位BSET
数据交换XCHG
单字分配DIST
数据收集COLL
欧姆龙CPM1A系列PLC基本指令
CPM1A系列PLC的基本逻辑指令与FX系列PLC较为相似,梯形图表达方式也大致相同,这里列表表示CPM1A系列PLC的基本逻辑指令(见表4-8)表4-8 CPM1A系列PLC的基本逻辑指令指令名称 指令符 功能 操作数
取 LD 读入逻辑行或电路块的第一个常开接点 00000~0191520000~25507HR0000~1915AR0000~1515LR0000~1515TIM/CNT000~127TR0~7*TR仅用于LD指令
取反 LD NOT 读入逻辑行或电路块的第一个常闭接点
与 AND 串联一个常开接点
与非 AND NOT 串联一个常闭接点
或 OR 并联一个常开接点
或非 OR NOT 并联一个常闭接点
电路块与 AND LD 串联一个电路块 无
电路块或 OR LD 并联一个电路块
输出 OUT 输出逻辑行的运算结果 00000~0191520000~25507HR0000~1915AR0000~1515LR0000~1515TIM/CNT000~127TR0~7*TR仅用于OUT指令
输出求反 OUT NOT 求反输出逻辑行的运算结果
置位 SET 置继电器状态为接通
复位 RSET 使继电器复位为断开
定时 TIM 接通延时定时器(减算)设定时间0~999.9S TIM/CNT000~127设定值0~9999定时单位为0.1S计数单位为1次
计数 CNT 减法计数器 设定值0~9999次
欧姆龙CPM1A系列PLC功能指令
功能指令又称专用指令,CPM1A系列PLC提供的功能指令主要用来实现程序控制,数据处理和算术运算等。这类指令在简易编程器上一般没有对应的指令键,只是为每个指令规定了一个功能代码,用两位数字表示。在输入这类指令时先按下“FUN”键,再按下相应的代码。下面将介绍部分常用的功能指令。1.空操作指令NOP(0 0)本指令不作任何的逻辑操作,故称空操作,也不使用继电器,无须操作数。该指令应用在程序中留出一个地址,以便调试程序时插入指令,还可用于微调扫描时间。 2.结束指令END(01)本指令单独使用,无须操作数,是程序的最后一条指令,表示程序到此结束。PLC在执行用户程序时,当执行到END指令时就停止执行程序阶段,转入执行输出刷新阶段。如果程序中遗漏END指令,编程器执行时则会显示出错信号:“NO END INSET”:当加上END指令后,PLC才能正常运行。本指令也可用来分段调试程序。3.互锁指令IL(02)和互锁清除指令ILC(0 3)这两条指令不带操作数,IL指令为互锁条件,形成分支电路,即新母线以便与LD指令连用,表示互锁程序段的开始;ILC指令表示互锁程序段结束。互锁指令IL和互锁清除指令ILC用来在梯形图的分支处形成新的母线,使某一部分梯形图受到某些条件的控制。IL和ILC指令应当成对配合使用,否则出错。IL/ILC指令的功能是:如果控制IL的条件成立(即ON),则执行互锁指令。若控制IL的条件不成立(即OFF),则IL与ILC之间的互锁程序段不执行,即位于IL/ILC之间的所有继电器均为OFF,此时所有定时器将复位,但所有的计数器,移位寄存器及保持继电器均保持当前值。4.跳转开始指令JMP(0 4)和跳转结束指令JME(0 5)这两条指令不带操作数,JMP指令表示程序转移的开始,JME指令表示程序转移的结束。JMP/JME指令组用于控制程序分支。当JMP条件为OFF时,程序转去执行JME后面的第一条指令;当JMP的条件为ON,则整个梯形图按顺序执行,如同JMP/JME指令不存在一样。 在使用JMP/JME指令时要注意,若JMP的条件为OFF,则JMP/JME之间的继电器状态为:输出继电器保持目前状态;定时器/计数器及移位寄存器均保持当前值。另外JMP/JME指令应配对使用,否则PLC显示出错。5.逐位移位指令 SFT(10) 又称移位寄存器指令,本指令带两个操作数,以通道为单位,第一个操作数为首通道号D1,第二个操作数为末通道号D2。所使用的继电器有:000CH~019CH, 200CH~252CH, HR00~HR19。其功能相当于一个串行输入移位寄存器。移位寄存器有数据输入端(IN)、移位时钟端(CP)及复位端(R),必须按照输入(IN)、时钟(CP)、复位(R)和SFT指令的顺序进行编程。当移位时钟由OFF→ON时,将(D1~D2)通道的内容,按照从低位到高位的顺序移动一位,最高位溢出丢失,最低位由输入数据填充。当复位端输入ON时,参与移位的所有通道数据均复位,即都为OFF。如果需要多于16位的数据进行移位,可以将几个通道级连起来。移位指令在使用时须注意:起始通道和结束通道,必须在同一种继电器中且起始通道号≤结束通道号。6.锁存指令KEEP(11)本指令使用的操作数有:01000~01915、20000~25515、HR0000~HR1915,其功能相当于锁存器,当置位端(S端)条件为ON时,KEEP继电器一直保持ON状态,即使S端条件变为OFF,KEEP继电器也还保持ON,,直到复位端(R端)条件为ON时,才使之变OFF ,KEEP 指令主要用于线圈的保持,即继电器的自锁电路可用KEEP指令实现。若SET端和RES端同时为ON,则KEEP继电器优先变为OFF。锁存继电器指令编写必须按置位行(S端),复位行(R端)和KEEP继电器的顺序来编写。7.前沿微分脉冲指令DIFU(13)和后沿微分脉冲指令DIFD(14)本指令使用操作数有:01000~01915、20000~25515、HR0000~HR1915,DIFU的功能是在输入脉冲的前(上升)沿使指定的继电器接通一个扫描周期之后释放,而DIFD的功能是在输入脉冲的后(下降)沿使指定的继电器接通一个扫描周期之后释放。8.快速定时器指令 TIMH(15)本指令操作数占二行,一行为定时器号000~127(不得与TIM或CNT重复使用同号),另一行为设定时间。设定的定时时间,可以是常数,也可以由通道000CH~019CH,20000CH~25515CH,HR0000~HR1915中的内容决定,但必须为四位BCD码。其功能与基本指令中的普通定时器作用相似,唯一区别是TIMH定时精度为0. 01s,定时范围为0~99.99s。9.通道移位指令WSFT(16)又称字移位指令,本指令是以字(通道)为单位的串行移位。操作数为首通道号D1,末通道号D2。可取000CH~019CH, 200CH~252CH, HR00~HR19。通道移位指令执行时,当移位条件为ON,WSFT从首通道向末通道依此移动一个字,原首通道16位内容全部复位,原末通道中的16位内容全部移出丢失。WSFT指令在使用时须注意:首通道和末通道必须是同一类型的继电器;首通道号≤末通道号。当移位条件为ON时,CPU每扫描一次程序就执行一次WSFT指令。如只要程序执行一次,则应该用微分指令。10.可逆计数器指令 CNTR(12)本指令的功能是对外部信号进行加1或减1的环形计数。带两个操作数:计数器号000~127,设定值范围0000~9999,设定值可以用常数,也可以用通道号,用通道号时,设定值为通道中的内容。11.比较指令CMP(20)本指令的功能是将S(源通道)中的内容与D(目标通道)的内容进行比较,其比较结果送到PLC的内部专用继电器25505、05506、25507中进行处理后输出,输出状态见表4-9。表4-9 比较结果输出专用继电器状态表SMR 25505 25506 25507
S>D ON OFF OFF
S=D OFF ON OFF
S,D OFF OFF ON
比较指令CMP用于将通道数据S与另一通道数据D中的十六进制数或四位常数进行比较,S和D中至少有一个是通道数据。12.数据传送指令 MOV(21)和数据求反传送指令MOVN(22)这两条指令都是用于数据的传送。当MOV前面的状态为0N时,执行MOV指令,在每个扫描周期中把S中的源数据传送到目标D所指定的通道中去。当MOV前面的状态为0FF时,执行MOVN指令,在每个扫描周期中把S中的源数据求反后传送到目标D所指定的通道中去。执行传送指令后,如果目标通道D中的内容全为零时,则标志位25506为ON。13.进位置位指令STC(40)和进位复位位指令CLC(41)这两条指令的功能是将进位标志继电器25504置位(即置ON)或强制将进位标志继电器25504复位(即置OFF)。当这两条指令前面状态为ON时,执行指令,否则不执行。通常在执行加、减运算操作之前,先执行CLC指令来清进位位,以确保运算结果的正确。14.加法指令ADD(30) 本指令是将两个通道的内容或一个通道的内容与一个常数相加(带进位位),再把结果送至目标通道D。操作数中被加数S1、加数S2、运算结果D的内容见表4-10。表4-10 加法指令的操作数内容S1/S2 000~019CH 200~231CH HR00~HR19 TIM/CNT000~127 DM0000~1023DM6144~6655 四位常数
D 010~019CH 200~231CH HR00~HR19 — DM0000~1023 —
注:DM6144~6655不能用程序写入(只能用外围设备设定)说明:执行加法运算前必须加一条清进位标志指令CLC(41)参加运算;被加数和加数必须是BCD数,否则25503置ON,不执行ADD指令;若相加后结果有进位,则进位标志继电器25504为ON;若和为零,则专用继电器25506变为ON。15.减法指令SUB(31)本指令与ADD指令相似,是把两个四位BCD数作带借位减法,差值送入指定通道,其操作数同ADD指令。在编写SUB指令语言时,必须指定被减数,减数和差值的存放通道三个数说明:执行减法运算前必须加一条清进位位指令CLC(41);被减数和减数必须是BCD数,否则25503置ON,不执行SUB指令;若运算结果有借位,则进位标志继电器25504为ON;若运算结果为零,则专用继电器25506变为ON。以上介绍是CPM1A系列PLC一些常用的专用指令,还有一些未作介绍,C200H系列PLC除了基本指令和CPM1A系列PLC相同外,很多功能指令也相同,另外又增加了一些功能指令,读者可以根据不同型号的PLC按其使用功能的不同参阅使用手册加以学习和掌握。