欧姆龙PLC功能指令

除基本逻辑指令外,omron公司c系列plc还有若干条功能指令,或称专用指令。因机型不同所使用的功能指令数量也不同,如c20p~c60p有功能指令25条,c500有功能指令56条,c200h有功能指令133条,c1000h、c2000h有功能指令162条。档次越高,功能指令数越多,因而控制功能越强。
与基本指令不同,功能指令在编程器上没有与其对应的专用键,输入功能指令时,先按下fun键,然后输入功能代码。不同的功能代码有不同的助记符,以实现不同的功能。
1、程序结束指令end(fun 01)
end指令在梯形图中的符号如图1所示。
图1 end指令在梯形图中的符号
在程序结束时,必须使用end指令。一般p型机对用户程序的扫描范围为:从0000到1193步循环扫描,加入end指令可使程序只在0000~end之间循环扫描,缩短了循环周期。另外,在程序调试时利用end指令分段调试,使调试程序变得简单方便。
2、分支开始指令il(fun 02)和分支结束指令ilc(fun 03)
il和ilc指令在梯形图中的符号如图2所示。
图2 il和ilc指令在梯形图中的符号
如果梯形图中出现具有分支的多路输出程序,且分支电路后的每个输出支路至少有一个串联触点时,可用分支开始指令il编程,分支结束时用ilc指令使il指令复位,回到前一级逻辑母线。il指令和ilc指令在程序中要求配合使用,但也允许在不会引起程序混乱的前提下用一个ilc和多个il配合使用,此时在执行程序检查时会在编程器上显示出错提示“il-ilc err”,但这个错误不会影响程序的正常执行。
当il的条件为off时,il和ilc之间的各继电器状态为:输出继电器、 辅助继电器断开,定时器复位,计数器、保持继电器、锁存继电器保持原状态不变。当il的条件为on时,il和ilc之间的各继电器正常工作。
在梯形图程序中,允许出现多重分支程序,即分支嵌套。在小型plc中,允许进行分支嵌套的次数不应超过8次。图3所示是一个含有三重分支的程序。
图3中,在分支处形成一个新的逻辑母线,因此从这个新逻辑母线开始的指令都要用ld或ld not指令。如0000为off,0501、0502、0503和0504均为off,cnt02正常工作……如0000为on,且0001或0004为on、0002或0005为on时,程序正常执行。当0000为off时,不满足执行条件,il~ilc间的程序不被执行,由此可以看出来采用il~ilc编程比采用暂存继电器tr可以使程序更加简练。
图3 il和ilc指令
3、跳转开始指令jmp(fun 04)和跳转结束指令jme(fun05)
jmp和jme指令在梯形图中的符号如图4所示。
如果jmp的条件为on时,程序正常执行,即相当于没有jmp和jme指令。如果jmp的条件为off,则执行跳转,即不执行jmp~jme间的程序。
图5中,如1001为on,程序执行顺序为a→b→c,否则为a→c。
图4 jmp和jme指令在梯形图中的符号
图5 跳转指令
如果jmp的条件为off,jmp~jme间的各继电器状态为:输出继电器、辅助继电器、保持继电器、锁存继电器保持跳转前的状态不变。定时器复位,停止计时。计数器中断计数,保持跳转前的计数值不变。
图6中,当1000为on时,程序正常执行。当1000为off时,开始跳转,直接执行jme之后的程序。在此期间,无论1001是on或off,0500均保持跳转前的on/off状态不变;定时器tim00复位停止工作,即使1002为on,tim00也不会工作;计数器cnt03则中断计数,保持跳转前的计数值不变。
图6 jmp和jme指令
与分支指令一样,jmp和jme一般也要求配合使用,也允许不超过8次的嵌套。也允许多个jmp和一个jme配合使用(此时程序检查时会在编程器上出现“jmpjmp err”,但不影响程序正常运行)。
4、锁存器指令keep(fun 11)
keep指令在梯形图中的符号如图7所示。
图7 keep指令在梯形图中的符号
xxxx为继电器号,可使用的继电器有输出继电器、 内部辅助继电器和保持继电器。s端为置“1”输入端,如果s端为on,则继电器xxxx得电并自锁。r端为置“0”输入端(即复位端),如果r端为on,则继电器xxxx解除自锁(失电)。当r端和s端同时出现信号时,复位优先。
keep指令可以使一个普通的继电器具有锁存功能,称之为锁存继电器。利用keep指令很容易实现类似继电器控制线路中的自锁(或自保持)功能,如图8中0002为on时,0500变为on并自保持,即使0002由on变为off,只要0003为off,0500始终为on。如果0003为on,0500就变为off。图8(b)的作用与图8(a)相同。
图8 keep指令
keep指令具有自锁功能,但必须注意的是keep指令本身并无掉电保持功能,图8(a)中如程序运行中电源掉电时,0500将变为off,如欲在电源发生故障后又恢复送电时电路的状态保持不变,可用保持继电器作为锁存器。图9所示的报警电路中,0002、0003和0004为报警条件,0005为报警解除,输出端子0500接报警设备。
图9 keep指令的应用
5、前沿微分指令difu(fun 13)和后沿微分指令difd(fun 14)
difu和difd指令在梯形图中的符号如图10所示。
图10 difu和difd指令在梯形图中的符号
xxxx为继电器号,difu和difd指令可使用的继电器为输出继电器、内部辅助继电器和保持继电器。
difu指令的功能是在满足条件的输入信号前沿,使指定的继电器on一个扫描周期。difd指令的功能是在满足条件的输入信号后沿,使指定的继电器on一个扫描周期。difu和difd指令在一个程序中最多可使用的数量都是48个。
图11说明了difu和difd的工作情况。
图11 difu和difd
6、移位寄存指令sft(fun 10)
sft指令在梯形图中的符号如图12所示。
in端为数据输入端,cp端为脉冲输入端,r端为复位输入端。
sft指令的功能相当于一个串行输入移位寄存器,其功能是将从首通道到末通道的n个通道的n×16 位数据按位移位。
图12 sft指令在梯形图中的符号
sft指令可使用的通道可以是输出继电器、内部辅助继电器和保持继电器通道。首通道和末通道可以是同一个通道,也可以不是同一通道(此时要求首通道号小于末通道号,且要保证首通道和末通道是同一类通道)。
用sft指令编程时必须按数据输入、移位脉冲输入、复位输入、sft、首通道号、末通道号的顺序进行编程。数据移位是由脉冲输入cp端控制,cp端每由off→on一次(即在移位脉冲输入的上升沿),从首通道至末通道的所有“位”均将自己的数据(0或1)传给下一“位”,首通道的第一位(即首通道的第00位)的状态取决于移位脉冲的上升沿所对应的数据输入in端的状态,即在移位脉冲输入的上升沿所对应的时刻,如果in端为on,则首通道的第00位也为on,否则为off。当复位输入r端变为on时,所有被移位通道中的数据同时被置“0”。如果移位通道是保持继电器通道,则电源掉电时通道中的内容保持不变。
图13中,在复位输入0503为off时,0500(即首通道的第一位)的状态取决于数据输入in(即1000),其它各位在每个时钟脉冲cp的上升沿依次移位。在复位输入0503为on时,所有位均被置“0”。
图13 sft指令
7、通道移位指令wsft(fun 16)
wsft指令在梯形图中的符号如图14所示。
图14 wsft指令在梯形图中的指令
wsft是通道移位指令,也称为并行移位指令,它以通道(16位)为单位进行移位,所以必须设置两个数据:开始通道号d1和结束通道号d2。wsft可使用的通道为输出继电器通道、 内部辅助继电器通道、保持继电器通道及数据存储通道。开始通道和结束通道必须是同一类通道,并要保证开始通道号小于结束通道号。当移位条件变为on时,cpu每扫描一次程序就执行一次wsft指令,进行一次通道移位,执行wsft时,开始通道的内容移到其下一通道(同时开始通道的内容变为0),下一通道的内容又移到其下一通道……结束通道的内容被其上一通道覆盖。如果只想执行一次通道移位操作,应该使用difu或difd命令。 如图15所示。
图15 wsft指令
图15中,设在执行wsft指令之前10、11和12通道的内容分别为:
8、十进制→二进制转换指令bin(fun 23)和二进制→十进制转换指令bcd(fun 24)
bin和bcd指令在梯形图中的符号如图16所示。
图16 bin和bcd指令在梯形图中的符号
bin指令的功能是将源通道s中的4位十进制数(bcd码)转换成16位二进制数,再存放到目的通道d中。
bcd指令的功能是将源通道s中的16位二进制数转换成4位十进制数(bcd码),存放到目的通道d中去。
bin和bcd指令可使用的源通道为:输入继电器通道、输出继电器通道、定时器/计数器通道、