09三菱fx系列plc及其指令系统

09三菱fx系列plc及其指令系统

ID:40236044

大小:3.02 MB

页数:172页

时间:2019-07-27

上传者:山楂树
09三菱fx系列plc及其指令系统_第1页
09三菱fx系列plc及其指令系统_第2页
09三菱fx系列plc及其指令系统_第3页
09三菱fx系列plc及其指令系统_第4页
09三菱fx系列plc及其指令系统_第5页
资源描述:

《09三菱fx系列plc及其指令系统》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

第9章三菱FX系列PLC及其指令系统返回总目录 日本三菱电机公司(MITSUBISHI)于1971年开始研制PLC,目前主要有F1、F2、FX、K、A等十几个系列几十种产品。三菱PLC在我国的工业控制领域具有一定的市场占有率,本章介绍其代表性产品FX系列超小型机。 本章内容●9.1FX系列PLC简介●9.2FX系列PLC的编程元件●9.3FX系列PLC的基本指令●9.4FX系列PLC功能指令●思考题与习题 9.1FX系列PLC简介9.1.1FX系列PLC的特点FX系列PLC由基本单元、扩展单元、扩展模块及特殊功能单元构成。FX系列PLC有多种型号产品供用户选择,以满足不同应用场合的需求。如FX0N、FX0S、FX1N、FX1S、FX2、FX2N等。20世纪90年代,三菱公司推出了FX2N系列产品,该系列产品具有小型化,速度快,性能好的特点。系统配置既固定又灵活,在基本单元上连接扩展单元或扩展模块,可进行16~256点的灵活输入/输出组合;程序容量大,内置800步RAM(可输入注释),可使用存储盒,最大可扩充至16K步;编程指令丰富,有27条基本指令、2条步进指令和128种功能指令,可完成诸如高速处理、数据检索、数据排列、三角函数运算、脉冲输出(20kHz/DC5V,10kHz/DC12V~24V)、脉宽调制、PID控制指令等功能。 9.1.2FX系列PLC型号名称的含义FX系列PLC型号的命名基本格式如图9.1所示。图9.1FX系列PLC型号命名格式系列序号0S,0N,1N,1S,2N,2NC等。I/O总点数14~256。单元类型M——基本单元;E——输入/输出混合扩展单元及扩展模块;9.1FX系列PLC简介 EX——输入专用扩展模块(无输出);EY——输出专用扩展模块(无输入);EYR——继电器输出专用扩展模块;EYT——晶体管输出专用扩展模块;输出形式R——继电器输出;T——晶体管输出;S——晶闸管输出;特殊品种区别D——DC电源,DC输入;A1——AC电源,AC输入;H——大电流输出扩展模块(1A/点);V——立式端子排的扩展模块;C——接插口输入输出方式;F——输入滤波器为1ms的扩展模块;L——TTL输入型扩展模块;S——独立端子(无公共端)扩展模块。9.1FX系列PLC简介 若特殊品种区别一项无标志,则是指AC电源,DC输入,横式端子排;继电器输出,2A/点;晶体管输出,0.5A/点;晶闸管输出,0.3A/点。对于混合扩展模块及某些特殊模块的命名与上述略有不同。9.1FX系列PLC简介 9.1.3FX系列PLC的技术指标FX系列PLC的技术指标包括一般技术指标、输入技术指标、输出技术指标、电源技术指标等。表9-1、表9-2、表9-3分别列出了其中一些指标。表9-1FX系列PLC的一般技术指标用噪声仿真器产生电压为1000Vp-p,噪声脉冲宽度为1环境温度0~55℃(使用时),-20~70℃(存放时)环境湿度35%~89%RH(不结露),(使用时)抗振JISC0911标准10Hz~55Hz,振幅0.5mm(最大ZG)3轴方向各2h抗冲击JISC0912标准10G3轴方向各3次抗噪声干扰,周期为3Hz~100Hz的噪声,在此噪声干扰下PLC工作正常9.1FX系列PLC简介 环境温度0~55℃(使用时),-20~70℃(存放时)5M耐压1500VAC1min各端子与接地之间绝缘电阻以上(DC500V兆欧表)接地第3种接地,不能接地时,亦可浮空使用环境禁止腐蚀性气体,严禁尘埃、导电微粒和金属碎屑9.1FX系列PLC简介 表9-2FX系列PLC的输入技术指标项目DC输入AC输入品种FX0、、FX0N、、FX2、、FX2CFX0N、、FX2CFX2输入电压DC24V±10%AC100~120±10%,50/60Hz输入电流7mA/DC24V5mA/DC24V6.2mA/AC110V,60Hz工作电流ON(mA)≥4.5≥3.5≥3.8OFF(mA)≤1.5≤1≤1.7响应时间约10ms,其中FX0的X0~X17和FX0N的X0~X7在0ms~15ms间变动约30ms,不可高速输入电路隔离电路隔离,光电隔离(FX0,FX0N)9.1FX系列PLC简介 表9-3FX系列PLC的输出技术指标项目继电器输出晶阐管输出晶体管输出外部电源250VAC,30VDC以下85V~242VAC5V~30VDC最大负载电阻负载2A/1点0.3A/1点0.8A/4点0.5A/1点0.8A/4点感性负载80V·A15V·A/AC100V30V·A/AC240V12WDC24V灯负载100W30W1.5WDC24V开路漏电流—1A/AC100V2.4A/AC240V0.1mA/30VDC最小负载①0.4V•A/AC100V2.3V•A/AC240V—9.1FX系列PLC简介 响应时间OFF到ON约10ms1ms以下0.2ms以下ON到OFF约10ms最大10ms0.2ms以下②回路隔离继电器隔离光电晶闸管隔离光电耦合器隔离动作显示继电器通电时LED灯亮光电晶闸管隔离驱动时LED灯亮光电耦合器隔离驱动时LED灯亮项目继电器输出晶阐管输出晶体管输出注:①当外接电源电压小于等于24V时,尽量保持5mA以上的电流。②响应时间0.2ms是在条件为24V、200mA时,实际所需时间为电路切断负载电流到电流为0的时间,可用并接续流二极管的方法改善响应时间。若希望响应时间短于0.5ms,应保证电流为24V、60mA。9.1FX系列PLC简介 9.2FX系列PLC的编程元件9.2.1FX系列PLC的用户数据结构1.位元件FX系列PLC有4种基本编程元件。X输入继电器,用于直接给PLC输入物理信号。特点是其状态不受PLC程序的控制,只由外部控制现场的信号驱动。Y输出继电器,用于从PLC直接输出物理信号。特点是其状态受PLC程序的控制,并对应于输出接口中的物理继电器或其他可驱动的器件。M辅助继电器,PLC内部的运算标志。实质上起着中间继电器的作用,它们不能直接驱动执行元件。S状态继电器,PLC内部的运算标志。是有特殊用途的专用内部继电器,在监控或诊断故障时用来表示PLC内部的某些状态或工作条件。也可以被用户程序引用以简化程序。上述元件称为位(bit)元件,它们只有两种不同的状态,即ON和OFF,可以分别用二进制数1和0表示。位元件用来表示开关量的状态,如触点的通、断;线圈的通电、断电。 2.字元件8个连续的位组成一个字节(byte),16个连续的位组成一个字(word),32个连续的位组成一个双字(doubleword)。定时器和计数器的当前值和设定值均为有符号字,最高位(第15位)为符号位,正数的符号位为0,负数的符号位为1。有符号字可以表示的最大正整数为32767。3.位元件的组合FX系列PLC用KnP的形式表示连续的位元件组。每组由4个连续的位元件组成,P为位元件的首地址,n为组数,32位操作数时n=1~8,16位操作数时n=1~4。例如K2M0表示由M0~M7组成的两个位元件组,M0为数据的最低位(首位)。还有一种是字与位结合的数据结构。例如定时器和计数器的触点为bit,而它们的设定值寄存器和当前值寄存器的内容均为字。9.2FX系列PLC的编程元件 9.2.2输入继电器和输出继电器PLC的存储器中有一个用来存储PLC信号输入/输出(I/O)状态的存储区,称为I/O状态表。该表上的输入部分表示现场的输入信号,称为输入继电器。该表上的输出部分表示所控制的执行单元的状态,称为输出继电器。某个I/O继电器实质上就是I/O存储区中的某一位。在I/O状态表中所表示的状态都是常开触点的状态。而对于常闭触点,只要将其相应的状态取反即可。输入继电器和输出继电器的触点可以在PLC程序中多次引用,次数不限。输入继电器和输出继电器对应于PLC的输入点和输出点。I/O点数是PLC的一个重要参数,直接影响到PLC的控制规模。FX系列PLC梯形图中的编程元件的名称由字母和数字组成,它们分别表示元件的类型和元件号,输入继电器名称用字母X表示,输出继电器名称用字母Y表示。如X24,Y12等。输入继电器和输出继电器的元件编号是用八进制数表示的。八进制数只有0~7这8个数字符号,遵循“逢八进一”的运算规则。例如八进制数X27和X30是两个相邻的整数。表9-4给出了FX2N系列PLC的输入/输出继电器元件编号。9.2FX系列PLC的编程元件 表9-4FX2N系列PLC的输入/输出继电器元件编号型号FX2N-16MFX2N-32MFX2N-48MFX2N-64MFX2N-80MFX2N-128M扩展输入X0~X78点X0~X1716点X0~X2724点X0~X3732点X0~X4740点X0~X7764点X0~X267184点输出Y0~Y78点Y0~Y1716点Y0~Y2724点Y0~Y3732点Y0~Y4740点Y0~Y7764点Y0~Y267184点9.2FX系列PLC的编程元件 1.输入继电器(X)输入继电器是PLC接收外部输入的开关量信号的窗口。PLC通过光电耦合器将外部信号的状态读入并存储在输入映像区中。输入端可以外接控制开关、按钮、限位开关、传感器、常开触点或常闭触点,也可以接多个触点组成的串并联电路。在梯形图中,可以无限次使用输入继电器的常开触点和常闭触点。图9.2是一个PLC控制系统示意图。X0端子外接的输入电路接通时,它对应的输入映像区的状态为1,断开时状态为0。输入继电器的状态唯一地取决于外部输入信号的状态,不受用户程序的控制,因此梯形图中只出现输入继电器的触点,不能出现输入继电器的线圈。应注意的是,因为PLC只是在每一扫描周期开始时读取输入信号,输入信号为ON和OFF的持续时间应大于其扫描周期。若不满足这一条件,没有脉冲捕捉功能的PLC会丢失此输入信号。9.2FX系列PLC的编程元件 图9.2输入继电器与输出继电器2.输出继电器(Y)输出继电器是PLC向外部负载发送信号的窗口。输出继电器用来将PLC的输出信号传送给输出模块,再由后者驱动外部负载。输出继电器的通断状态由程序执行结果决定,在PLC内部,它有一个线圈和许多对的常开触点、常闭触点,触点可以无限次使用。如图9.2梯形图中Y4的线圈“通电”,继电器型输出模块中对应的硬件继电器的常开触点闭合,使外部负载工作。9.2FX系列PLC的编程元件 9.2.3辅助继电器(M)PLC中设有许多辅助继电器,其名称用字母M表示。每一个辅助继电器的线圈也有许多常开触点和常闭触点,供用户编程时使用。一个辅助继电器实质上是PLC中的一个存储单元(位),在程序中起着类似于继电器控制系统中的中间继电器的作用。它们不能接收外部的输入信号,也不能直接驱动外部负载,是一种内部状态标志。由于这些继电器的存在,使PLC的功能大为加强,编程变得十分灵活。FX2N系列PLC的辅助继电器分为通用辅助继电器、电池后备/锁存辅助继电器、特殊辅助继电器3种。1.通用辅助继电器FX2N系列PLC的通用辅助继电器的元件编号为M0~M499,共500点。在用户程序中可做中间继电器使用。FX2N系列PLC的通用辅助继电器没有断电保持功能。在FX2N系列PLC中,除了输入继电器和输出继电器的元件号采用八进制外,通用辅助继电器和其他编程元件编号均采用十进制。如果在PLC运行时电源突然中断,输出继电器和通用辅助继电器将全部变为OFF。若电源再次接通,除了因外部输入信号而变为ON的以外,其余的仍将保持为OFF状态。9.2FX系列PLC的编程元件 2.电池后备/锁存辅助继电器FX2N系列PLC的电池后备/锁存辅助继电器的元件编号为M500~M3071,共2572点。电池后备/锁存辅助继电器在电源中断时用锂电池保持它们的映像区中的内容,或将它们保存在E2PROM中。PLC重新通电后的第一个扫描周期将保持其断电瞬间的状态。其中的M500~M1023可以用软件来设定使其成为非断电保持辅助继电器。某些控制系统要求记忆电源中断瞬间的状态,重新通电后再现其状态,电池后备/锁存辅助继电器可以用于这种场合。假设图9.3中X0和X1分别是启动按钮和停止按钮,则M600通过Y0控制外部的电动机,如果电源中断时M600为1状态,因为电路的记忆作用,PLC重新通电后,M600将保持为1状态,使Y0继续为ON,电动机重新开始运行。图9.3继电保持功能9.2FX系列PLC的编程元件 应注意的是,电池后备/锁存辅助继电器只是在PLC重新通电后的第一个扫描周期保持断电瞬间的状态。3.特殊辅助继电器FX2N系列PLC的特殊辅助继电器的元件编号为M8000~M8255,共256点。它们用来表示PLC的某些状态,起着有特殊用途的专用内部继电器的作用,提供时钟脉冲和标志(如进位、借位标志),设定PLC的运行方式,或者用于步进顺控、禁止中断、计数器的加、减计数设定等。特殊辅助继电器分为触点利用型和线圈驱动器型两类。1)触点利用型触点利用型特殊辅助继电器的线圈由PLC的系统程序驱动,用户程序直接使用其触点,用户程序中不出现它们的线圈,下面是几个例子。M8000运行监视继电器,当PLC执行用户程序时,M8000为ON;停止执行时,M8000为OFF。M8002初始化脉冲继电器,M8002仅在M8000由OFF变为ON状态时的一个扫描周期内为ON。可以用M8002的常开触点对有断电保持功能的元件进行初始化、复位或置初始值。9.2FX系列PLC的编程元件 M8005锂电池电压降低报警继电器,当锂电池电压下降至规定值时变为ON,可以用它的触点驱动输出继电器和外部指示灯提醒工作人员更换锂电池。M8011~M8014分别是10ms,100ms,1s和1min时钟脉冲继电器。以10ms时钟脉冲继电器为例说明它们的功能。10ms时钟脉冲继电器的功能是其触点以10ms为周期重复通/断动作,即ON:5ms,OFF:5ms。如图9.4所示。图9.4时序图9.2FX系列PLC的编程元件 2)线圈驱动器型线圈驱动器型特殊辅助继电器的线圈由用户程序驱动,使PLC执行特定操作,用户并不使用它们的触点。下面是几个例子。M8030的线圈“通电”后,“电池电压降低”发光二极管熄灭。M8033的线圈“通电”时,PLC进入STOP状态后,所有输出继电器的状态保持不变。M8034的线圈“通电”时,禁止所有的输出。M8039的线圈“通电”时,PLC以D8039中指定的扫描时间工作。9.2FX系列PLC的编程元件 9.2.4状态继电器(S)状态继电器是用于编制顺序控制程序的一种编程元件(状态标志),它与STL指令(步进梯形指令)一起使用。FX2N系列PLC的状态继电器的元件编号为S0~S999,共1000点。分为通用状态继电器、锁存状态继电器和报警器用状态继电器3种类型。在不对状态使用步进梯形指令时,也可以把它们作为通用的辅助继电器(M)使用。1.通用状态继电器通用状态继电器的元件编号为S0~S499,共500点。通用状态继电器没有断点保持功能。但可以通过程序设定。在使用IST(初始化状态功能)指令时,其中的S0~S9供初始状态使用;S10~S19供返回原点使用。2.锁存状态继电器锁存状态继电器的元件编号为S500~S899,共400点。具有断电保持功能。锁存状态继电器在PLC断电时用带锂电池的RAM或E2PROM保存其ON/OFF状态。3.报警器用状态继电器报警器用状态继电器的元件编号为S900~S999,共100点。在使用应用指令ANS(信号报警器置位)和ANR(信号报警器复位)时,状态继电器S900~S999可以用作外部故障诊断的输出,成为信号报警器。9.2FX系列PLC的编程元件 9.2.5定时器(T)PLC中的定时器相当于继电器控制系统中的时间继电器。它有一个设定值寄存器(一个字长)、一个当前值寄存器(一个字长)和一个用来存储其输出触点状态的映像区(占二进制的一位),这3个存储单元使用同一个元件号。FX2N系列PLC的定时器分为通用定时器和积算定时器。PLC的定时器都有时间基数,在编程时,应给出一个时间常数即初始设定值。实际的定时时间值为时间基数乘以时间常数的积。PLC的定时器内部结构实际上是一个时间寄存器,将时间寄存器预置一个设定值(时间常数)后,在时钟脉冲作用下,进行加一操作。当时间寄存器的内容等于设定值时,表示定时时间到,定时器则有输出。常数K和数据存储器(D)的内容都可以作为定时器的设定值。例如外部数字开关输入的数据可以存入数据寄存器,作为定时器的设定值。应注意的是,外部设定的时间常数必须是一个0~32767之间的BCD码值,否则将出错。1.通用定时器FX2N系列PLC各系列的定时器个数和元件编号见表9-5。9.2FX系列PLC的编程元件 表9-5FX2N系列PLC的定时器定时器时间基数元件编号元件个数100ms通用定时器100msT0~T19920010ms通用定时器10msT200~T245461ms积算定时器1msT246~T2494100ms积算定时器100msT250~T2556其中,T192~T199、T246~T249为子程序和中断服务程序专用的定时器。通过计算可知,100ms定时器的定时范围为0.1s~3276.7s。通用定时器没有保持功能,在控制条件为断开或停电时将复位。FX2N系列定时器只能提供其线圈“通电”后延迟动作的触点。图9.5所示为100ms定时器,控制触点X1接通时,T120的当前值寄存器从0开始,对100ms的时钟脉冲进行累加记数。当前值等于设定值268时,定时器的常开触点接通,常闭触点断开。即T120的输出触点在其线圈被驱动100ms×268=26.8s后动作。X1的常开触点断开后,定时器T120则复位,当前值恢复为0,它的常开触点断开。其逻辑功能是控制触点X1接通时,T120开始定时,26.8s后,Y5输出为1。9.2FX系列PLC的编程元件 图9.5100ms定时器9.2FX系列PLC的编程元件 2.积算定时器100ms积算定时器有T250~T255,具有保持功能。即其控制条件为逻辑1时开始定时,在定时过程中如果控制条件变为逻辑0或PLC断电,积算定时器停止定时且保持当前值,当控制条件再次为逻辑1或PLC上电,则继续定时,时间累计,直到定时时间到。通过计算可知,100ms积算定时器的定时范围为0.1s~3276.7s。图9.6是100ms积算定时器的梯形图。X1的常开触点接通时,T250的当前值寄存器对100ms时钟脉冲进行累加计数。X1的常开触点断开或停电时停止定时,当前值保持不变。X1的常开触点再次接通或重新上电时继续定时,累计时间为855×100ms=85.5s时,T250的触点动作。因为积算定时器的线圈断电时不复位,需要用X2的常开触点使T250强制复位。其逻辑功能是控制触点X1接通时,T250开始定时,85.5s到后,Y5输出为1。当控制触点X2接通时,复位指令RST使T250复位。3.定时器的定时精度定时器的精度与程序的安排有关,如果定时器的触点在线圈之前,精度将会降低。最小定时误差为输入滤波器时间减去定时器的分辨率,1ms、10ms和100ms定时器的分辨率分别1ms、10ms和100ms。9.2FX系列PLC的编程元件 图9.6100ms积算定时器梯形图9.2FX系列PLC的编程元件 9.2.6计数器(C)PLC设有用于内部计数的内部计数器C0~C234,共235点。还有用于外部输入端X0~X7计数的高速计数器C235~C255,共21点。内部计数器用来对PLC的内部映像区X,Y,M,S信号进行记数,记数脉冲为ON或OFF的持续时间,且持续时间应大于PLC的扫描周期,其响应速度通常小于几十赫兹。FX2N系列PLC的内部计数器有16位加计数器和32位双向计数器两种。此外,还有对外部高速脉冲计数的高速计数器(HSC)。1.16位加计数器16位计数器可以分为16位通用计数器和16位电池后备/锁存计数器。设定值为1~32767。16位通用计数器为C0~C99,共100点。16位电池后备/锁存计数器为C100~C199,共100点。电池后备锁存计数器可累计计数,它们在电源中断时可保持其状态信息,重新送电后能立即按断电时的状态恢复工作。即在电源中断时,计数器停止计数,并保持计数当前值不变,电源再次接通后在当前值的基础上继续计数。9.2FX系列PLC的编程元件 图9.716位加计数器的梯形图图9.7给出了16位加计数器的梯形图。图中X0的常开触点接通后,C8被复位,它对应的位存储单元被置0,它的常开触点断开,常闭触点接通,同时其计数当前值被置0。X1用来提供计数输入信号,当计数器的复位输入电路断开,计数输入电路由断开变为接通(即记数脉冲的上升沿)时,计数器的当前值加1。在5个记数脉冲之后,C8的当前值等于设定值5,它对应的位存储单元的内容被置1,其常开触点接通,常闭触点断开。再来记数脉冲时当前值不变,直到复位输入电路接通,计数器的当前值被置为0,其触点全部复位。计数器也可以通过数据寄存器来指定设定值。9.2FX系列PLC的编程元件 2.32位双向计数器32位双向计数器为C200~C234,共35点。设定值为-2147483648~+2147483647,其中C200~C219(共20点)为通用型,C220~C234(共15点)为断电保持型。32位双向计数器的加/减计数方式由特殊辅助继电器M8200~M8234设定,当对应的特殊辅助继电器为ON时,为减计数,反之则为加计数。计数器的当前值在最大值2147483647时加1,将变为最小值-2147483648,类似地,当前值-2147483648减1时,将变为最大值+2147483647,这种计数器称为“环形计数器”。32位计数器的设定值设定方法有2个,一是由常数K设定,二是通过指定数据寄存器设定。通过指定数据寄存器设定时,32位设定值存放在元件号相连的两个数据寄存器中。如指定的是D0,则设定值存放在D1和D0中。图9.8中C200的设定值为10,在加计数时,若计数器的当前值由9增加到10时,计数器的输出触点为ON,当前值大于10时,输出触点仍为ON。当前值由10减少到9时,输出触点OFF,当前值小于9时,输出触点仍为OFF。当复位输入X13的常开触点接通时,C200被复位,其常开触点断开,常闭触点接通,当前值被置为0。9.2FX系列PLC的编程元件 3.高速计数器(HSC)高速计数器为C235~C255,共21点,均为32位加/减计数器。分为一相高速计数器(C235~C240)、两相双向计数器(C246~C250)、A-B相型双计数输入高速计数器(C251~C255)3种。一相和双向计数器最高计数频率为10kHz,A-B相计数器最高计数频率为5kHz。不同类型的高速计数器可以同时使用,它们共用PLC的8个高速计数器输入端X0~X7,但是,某一输入端同时只能供一个高速计数器使用,因此应注意高速计数器输入不能有冲突。高速计数器的运行建立在中断的基础上,与扫描时间无关。在对外部高速脉冲计数时,梯形图中高速计数器的线圈应一直通电,表示与它有关的输入点正被使用,其他高速计数器的处理不能与它冲突。在图9.9中,当控制触点X14为ON时,选择了高速计数器C235,并且指定了C235的计数输入端是X0,但是它并不在程序中出现,计数信号并不是X14提供的。其中,C235为一相无启动/复位输入端的高速计数器,C244为一相带启动/复位端的高速计数器,M8244设置C244的计数方向,ON时为减计数,OFF时为计加数。C235只能用RST指令来复位。对C244,X1和X6分别为复位输入端和启动输入端,它们的复位和启动与扫描工作方式无关,其作用是立即的、直接的。如果X12为ON,一旦X6变为ON,立即开始计数,计数输入端为X0。X6变为9.2FX系列PLC的编程元件 OFF,立即停止计数。C244的设定值由D0和D1指定。除了用X1使之立即复位外,也可以在梯形图中用复位指令复位。有关高速计数器的用法详见FX2N系列PLC的技术手册。图9.832位双向计数器图9.9一相高速计数器9.2FX系列PLC的编程元件 9.2.7数据寄存器(D)1.通用数据寄存器通用数据寄存器在模拟量检测与控制、位置控制等场合用来存储数据和参数,与辅助继电器M不同,它是纯粹的寄存器,不带任何触点。通用数据寄存器可储存16位二进制数或一个字,两个数据寄存器合并起来可以存放32位数据(双字)。如在D0和D1组成的双字中,D0存放低16位,D1存放高16位。字或双字的最高位为符号位,该位为0时数据为正,为1时数据为负。将数据写入通用数据寄存器后,其值将保持不变,直到下一次被改写。PLC从RUN状态进入STOP状态时,所有的通用数据寄存器的值被改写为0。但是,如果特殊辅助继电器M8033为ON,PLC从RUN状态进入STOP状态时,通用数据寄存器的值保持不变。2.电池后备/锁存数据寄存器电池后备/锁存数据寄存器具有断电保持功能,PLC从RUN状态进入STOP状态时,电池后备/锁存数据寄存器的值保持不变。通过程控参数设定,可改变电池后备的数据寄存器的范围。9.2FX系列PLC的编程元件 3.特殊寄存器特殊寄存器是有特殊用途的寄存器,元件编号为D8000~D8255,共256点。用来控制和监视PLC内部的各种工作方式和元件,如电池电压、扫描时间、正在动作的状态的元件编号等。PLC上电时,这些数据寄存器被写入默认值。4.文件寄存器文件寄存器以500点为单位,外部设备可对其进行文件的存取。文件寄存器实际上被设置为PLC的参数区。文件寄存器与电池后备/锁存数据寄存器是重叠的,以保证数据不会丢失。应注意的是,FX1S的文件寄存器只能用外部设备(如手持式编程器或运行编程软件的计算机)来改写,其他系列的文件寄存器可通过BMOV(块传送)指令改写。图9.10设置参数的小电位器图9.10设置参数的小电位器9.2FX系列PLC的编程元件 5.外部调整寄存器FX1S和FX1N有两个内置的设置参数用的小电位器,如图9.10所示。调节电位器,可以改变指定的数据寄存器D8030或D8031的值(0~255)。FX2N和FX2NC没有内置的供设置用的电位器,但是可用附加的特殊功能扩展板FX2N-8AV-BD实现同样的功能。该扩展板上有8个小电位器,使用应用指令VRRD(模拟量读取)和VRSC(模拟量开关设置)来读取电位器提供的数据。设置用的小电位器常用来修改定时器的时间设定值。6.变址寄存器变址寄存器用来改变编程元件的元件号、操作数、修改常数等。FX1S和FX1N有两个变址寄存器V和Z,FX2N和FX2NC有16个变址寄存器V0~V7和Z0~Z7,在32位操作时将V、Z合并使用,Z为低位,V为高位。变址寄存器可以用来改变编程元件的元件号,例如当V=11时,数据寄存器的元件号D5V相当于D16(11+5=16)。通过修改变址寄存器的值,可以改变实际的操作数。变址寄存器也可以用来修改常数,例如当Z=23时,K35Z相当于常数58(23+35=58)。9.2FX系列PLC的编程元件 9.2.8指针(P/I)指针(P/I)包括分支和子程序用的指针(P)和中断用的指针(I)。在梯形图中,指针放在左侧母线的左边。除此之外,FX2N系列PLC还具有常数。常数K用来表示十进制常数,16位常数的范围为-32768~+32767,32位常数的范围为-2147483648~+2147483647。常数H用来表示十六进制常数,十六进制包括0~9和A~F这16个数字,16位常数的范围为0~FFFF,32位常数的范围为0~FFFFFFFF。9.2FX系列PLC的编程元件 9.3FX系列PLC的基本指令现以FX2N为例介绍FX系列PLC的指令系统。FX系列PLC共有27条基本逻辑指令,有127条功能指令。仅用基本逻辑指令便可以编制出开关量控制系统的用户程序。下面介绍FX2N系列PLC的基本逻辑指令。 9.3.1LD,LDI,OUT指令LD(Load)以常开触点开始一次逻辑运算的指令,作用是将一个常开触点接到母线上。另外,在分支接点处也可使用。LD指令能够操作的元件为X,Y,M,T,C和S。LDI(LoadInverse)以常闭触点开始一次逻辑运算的指令,作用是将一个常闭触点接到母线上。另外,在分支接点处也可使用。LDI指令能够操作的元件为X,Y,M,T,C和S。OUT(Out)输出指令,将运算结果输出到指定的继电器,是驱动线圈的输出指令。OUT指令能够操作的元件为Y,M,T,C和S。应用举例,如图9.11所示。其逻辑功能是当触点X0接通时,输出继电器Y0接通;当输入继电器X1断电时,定时器T0开始定时,定时时间1.0s到后,输出继电器Y1接通。图中的T0是100ms定时器,K10对应的定时时间为10×100ms=1.0s。也可以指定数据寄存器的元件号,用它里面的数作为定时器和计数器的设定值。LD与LDI指令对应的触点一般与左侧母线相连,在使用ANB、ORB指令(在后面介绍)时,用来定义与其他电路串并联的电路的起始触点。OUT指令不能用于输入继电器X,而且线圈和输出类指令应放在梯形图的最右边。9.3FX系列PLC的基本指令 OUT指令可以连续使用若干次,相当于线圈的并联。定时器和计数器的OUT指令之后应设置以字母K开始的十进制常数。计数器的设定值用来表示计满多少个计数脉冲后计数器的位元件变为1。(a)梯形图(b)指令表(c)时序图图9.11LD、LDI与OUT指令9.3FX系列PLC的基本指令 9.3.2AND,ANI指令AND(And)与指令。用于一个常开触点同另一个触点的串联连接。ANI(AndInverse)与非指令。用于一个常闭触点同另一个触点的串联连接。AND和ANI指令能够操作的元件为X,Y,M,T,C和S。AND和ANI指令用来描述单个触点与别的触点或触点组组成的电路的串联连接关系。单个触点与左边的电路串联时,使用AND或ANI指令。AND和ANI指令能够连续使用,即几个触点串联在一起,且串联触点的个数没有限制。在图9.12中,OUTM101指令之后通过T1的触点驱动Y4,称为连续输出。只要按正确的次序设计电路,就可以重复使用连续输出。对T1的触点应使用串联指令,T1的触点和Y4的线圈组成的串联电路与M101的线圈是并联关系,但是T1的常开触点与左边的电路是串联关系。9.3FX系列PLC的基本指令 图9.12AND与ANI指令9.3FX系列PLC的基本指令 9.3.3OR,ORI指令OR(Or)或指令。用于一个常开触点同另一个触点的并联连接。ORI(OrInverse)或非指令。用于一个常闭触点同另一个触点的并联连接。OR与ORI指令能够操作的元件为X,Y,M,T,C和S。OR和ORI指令用来描述单个触点与别的触点或触点组组成的电路的并联连接关系。用于单个触点与前面电路的并联,并联触点的左侧接到该指令所在的电路块的起始点LD处,右端与前一条指令的对应的触点的右端相连。OR和ORI指令能够连续使用,即几个触点并联在一起,且并联触点的个数没有限制。9.3FX系列PLC的基本指令 图9.13OR与ORI指令OR和ORI指令总是将单个触点并联到它前面的电路中。如图9.13中的常闭触点M110,它前面的4条指令已经将4个触点Y5,X7,M103,X10串并联为一个整体,因此ORIM110指令把常闭触点M110并联到该电路上。9.3FX系列PLC的基本指令 9.3.4ANB,ORB指令ANB(AndBlack)块与指令。用于多触点电路块之间的串联连接。ORB(OrBlock)块或指令。用于多触点电路块之间的并联连接。ANB和ORB指令都不带元件号。只对电路块进行操作。ANB指令将多触点电路块(一般是并联电路块)与前面的电路块串联。相当于两个电路块之间的串联连接,该点也可视为它右边的电路块的LD点。要串联的电路块的起始触点使用LD或LDI指令,完成了两个电路块的内部连接后,用ANB指令将它与前面的电路串联。ANB指令能够连续使用,串联的电路块个数没有限制。图9.14为ANB指令应用示例。图9.14ANB指令9.3FX系列PLC的基本指令 ORB指令将多触点电路块(一般是串联电路块)与前面的电路块并联。相当于电路块间左侧的一段垂直连接线。要并联的电路块的起始触点使用LD或LDI指令,完成电路块的内部连接后,用ORB指令将它与前面的电路并联。ORB指令能够连续使用,并联的电路块个数没有限制。图9.15为ORB指令应用示例。图9.15ORB指令9.3FX系列PLC的基本指令 9.3.5栈操作指令MPS(Push)进栈指令。将该指令以前的逻辑运算结果存储起来。MRD(Read)读栈指令。读出由MPS指令存储的逻辑运算结果。MPP(Pop)出栈指令。读出并清除由MPS指令存储的逻辑运算结果。MPS、MRD、MPP实际上是用来解决如何对具有分支的梯形图进行编程的一组指令。用于多重输出电路。FX2N系列有11个存储中间运算结果的堆栈存储器,如图9.16所示。堆栈操作采用“先进后出”的数据存取方式。MPS指令用于存储电路中有分支处的逻辑运算结果,其功能是将左母线到分支点之间的逻辑运算结果存储起来,以备下面处理有线圈的支路时可以调用该运算结果。使用一次MPS指令,当时的逻辑运算压入堆栈的第一层,堆栈中原来的数据依次向下一层推移。MRD指令用在MPS指令支路以下、MPP指令以上的所有支路。其功能是读取存储在堆栈最上层的电路分支点处的运算结果,将下一个触点强制性地连接在该点。读数后堆栈内的数据不会上移或下移。实际上是将左母线到分支点之间的梯形图同当前使用的MRD指令的支路连接起来的一种编程方式。9.3FX系列PLC的基本指令 MPP指令用在梯形图分支点处最下面的支路,也就是最后一次使用由MPS指令存储的逻辑运算结果,其功能是先读出由MPS指令存储的逻辑运算结果,同当前支路进行逻辑运算,最后将MPS指令存储的内容清除,结束分支点处所有支路的编程。使用MPP指令时,堆栈中各层的数据向上移动一层,最上层的数据在读出后从栈区内消失。应注意的是当分支点后面有很多支路时,在用过MPS指令后,反复使用MRD指令,当使用完毕,最后一条支路必须用MPP指令结束该分支点处所有支路的编程。图9.17和图9.18分别给出了使用一层栈和使用多层栈的例子。每一条MPS指令必须有一条对应的MPP指令,处理最后一条支路时必须使用MPP指令,而不是MRD指令。在一处独立支路中,用进栈指令同时保存在堆栈中的运算结果不能超过11个。9.3FX系列PLC的基本指令 图9.16栈存储器图9.17一层栈9.3FX系列PLC的基本指令 图9.18二层栈用编程软件生成梯形图程序后,如果将梯形图转换为指令表程序,编程软件会自动加入MPS,MRD和MPP指令。而写入指令表程序时,必须由用户来写入9.3FX系列PLC的基本指令 9.3.6主控与主控复位指令MC(MasterControl)主控指令,或称公共触点串联连接指令。用于表示主控区的开始。MC指令能够操作的元件为Y和M(不包括特殊辅助继电器)。MCR(MasterControlReset)主控指令MC的复位指令,用来表示主控区的结束。在编程时,经常会遇到许多线圈同时受一个或一组触点控制的情况,如果在每个线圈的控制电路中都串入同样的触点,将占用很多存储单元,主控指令可以解决这一问题。使用主控指令的触点称为主控触点,它在梯形图中与一般的触点垂直。主控触点是控制一组电路的总开关。与主控触点相连的触点必须用LD或LDI指令,换句话说,执行MC指令后,母线移到主控触点的后面去了,MCR使母线(LD点)回到原来的位置。图9.19中,M50为主控触点,X0为控制条件。X0的常开触点接通时,执行从MC到MCR之间的指令。X0的常开触点恢复常开时,则不执行上述区间的指令,其中的积算定时器、计数器、用复位/置位指令驱动的软元件保持其当时的状态;其余的元件被复位,非积算定时器和OUT指令驱动的元件变为OFF。9.3FX系列PLC的基本指令 图9.19主控与主控复位指令在MC~MCR指令区内使用MC指令称为嵌套。如图9.20所示。MC和MCR指令中包含嵌套的层数为N0~N7,N0为最高层,最低层为N7。9.3FX系列PLC的基本指令 图9.20嵌套主控指令示意图9.3FX系列PLC的基本指令 没有嵌套结构时,通常用N0编程,N0的使用次数没有限制。有嵌套结构时,MCR指令将同时复位低的嵌套层,例如指令MCRN2将复位2~7层。应当指出,在主控指令的控制条件为逻辑0时,在MC与MCR之间的程序只是处于停控状态,PLC仍然扫描这一段程序,不能简单地认为PLC跳过了此段程序。另外,MC指令不能直接从左母线开始。在程序中MC与MCR指令总是成对出现的。9.3FX系列PLC的基本指令 9.3.7取反指令INV(Inverse)取反指令。该指令的功能是将该指令处的逻辑运算结果取反。在梯形图中用一条45°的短斜线表示INV指令。它将执行该指令之前的逻辑运算结果取反。即运算结果如为逻辑0将它变为逻辑1,运算结果为逻辑1则变为逻辑0。图9.21的逻辑功能是如果X0和X1同时为ON,INV指令之前的逻辑运算结果为ON,INV指令对ON取反,则Y0为OFF;如果X0和X1不同时为ON,INV指令之前的逻辑运算结果则为OFF,INV对OFF取反,则Y0为ON。INV指令也可以用于LDP,LDF,ANDP等脉冲触点指令。图9.21取反指令9.3FX系列PLC的基本指令 9.3.8PLS与PLF指令PLS(Pulse)上升沿微分输出指令。当检测到控制触点闭合的一瞬间,输出继电器或辅助继电器的触点仅接通一个扫描周期。PLF(PulseFalling)下降沿微分输出指令。当检测到控制触点断开的一瞬间,输出继电器或辅助继电器的触点仅接通一个扫描周期。PLS和PLF指令能够操作的元件为Y和M(不包括特殊辅助继电器)。图9.22中的M0仅在X0的常开触点由断开变为接通(即X0的上升沿)时的一个扫描周期内为ON;M1仅在X0的常开触点由接通变为断开(即X0的下降沿)时的一个扫描周期内为ON。图9.22微分指令9.3FX系列PLC的基本指令 应指出的是,PLS和PLF指令只有在检测到触点的状态发生变化时才有效,如果触点一直是闭合或者断开,PLS和PLF指令是无效的。即指令只对触发信号的上升沿和下降沿有效。PLS和PLF指令无使用次数的限制。当PLC从RUN到STOP,然后又由STOP进入RUN状态时,其输入信号仍然为ON,PLSM0指令将输出一个脉冲。然而,如果用电池后备(锁存)的辅助继电器代替M0,其PLS指令在这种情况下不会输出脉冲。微分指令在实际编程应用中十分有用,利用微分指令可以模拟按钮的动作。9.3FX系列PLC的基本指令 9.3.9边沿检测触点指令LDP,ANDP和ORP上升沿检测触点指令。被检测触点的中间有一个向上的箭头,对应的输出触点仅在指定位元件的上升沿(即由OFF变为ON)时接通一个扫描周期。LDF,ANDF和ORF下降沿检测触点指令。被检测触点的中间有一个向下的箭头,对应的输出触点仅在指定位元件的下降沿(即由ON变为OFF)时接通一个扫描周期。上述指令能够操作的元件为X,Y,M,T,C和S。在图9.23中,在X2的上升沿或X3的下降沿,Y0仅在一个扫描周期为ON。9.3FX系列PLC的基本指令 图9.23边沿检测触点指令9.3FX系列PLC的基本指令 9.3.10置位与复位指令SET置位指令。其功能是使操作保持ON的指令。RST复位指令。其功能是使操作保持OFF的指令。SET指令能够操作的元件为Y,M,S。RST指令能够操作的元件为Y,M,S,T,C,或将字元件D,V和Z清0。对同一编程元件,可多次使用SET和RST指令,最后一次执行的指令将决定其当前的状态。RST指令可将数据寄存器D、变址寄存器Z和V的内容清0。RST指令还可用来复位积算定时器T246~255和计数器。当控制触点闭合时,执行SET与RST指令,后来不管控制触点如何变化,逻辑运算结果都保持不变。一直保持到有相反的操作的到来。在任何情况下,RST指令都优先执行。计数器处于复位状态时,输入的计数脉冲不起作用。下面看两个例子。图9.24中X0的常开触点接通,Y0变为ON并保持该状态,即使X0的常开触点断开,它也仍然保持ON状态。当X1的常开触点闭合时,Y0变为OFF并保持该状态,即使X1的常开触点断开,它也仍然保持OFF状态。9.3FX系列PLC的基本指令 图9.25中X0的常开触点接通时,100ms积算定时器T250复位,X3的常开触点接通时,计数器C180复位,它们的当前值被清0,常开触点断开,常闭触点闭合。图9.24置位与复位指令9.3FX系列PLC的基本指令 图9.25定时器与计数器的复位如果不希望计数器和积算定时器具有断电保持功能,可以在用户程序开始运行时用初始化脉冲M8002将它们复位。9.3FX系列PLC的基本指令 9.3.11NOP与END指令NOP(NonProcessing)空操作指令。其功能是使该步序做空操作。执行完清除用户存储器(即程序存储器)的操作后,用户存储器的内容全部变为空操作指令。PLC一般都有指令的插入与删除功能,实际上NOP很少使用。END(End)结束指令。将强制结束当前的扫描执行过程。如果用户程序中没有END指令,将从用户程序存储器的第一步执行到最后一步。将END指令放在用户程序结束处,只执行第一条指令至END指令之间的程序。使用END指令可以缩短扫描周期。在调试程序时可将END指令插在各程序段之后,可进行分段调试,调试好以后把程序中间的END指令删去。因此在编程时插入该指令便于程序的检查和修改。9.3FX系列PLC的基本指令 9.4FX系列PLC功能指令作为工业控制计算机,PLC仅有基本指令是远远不够的。现代工业控制需要数据处理,需要用于数据的传送、运算、变换及程序控制等功能的功能指令(FunctionalInstruction)。FX2N系列PLC功能指令依据功能不同可分为数据处理类、程序流向控制类、特种功能类及外部设备类指令。数据处理类指令种类多,又可分为传送比较、算术及逻辑运算、移位、编解码等指令。程序流向控制指令主要用于程序的结构及流程,有子程序、中断、跳转及循环等指令。外部设备指令有一般的输入/输出口设备及专用外部设备指令两大类。 9.4.1功能指令的基本表示方法PLC的功能指令采用助记符表示。一般用指令的英文名称或缩写作为助记符。如MEAN用来表示取平均值的指令。与基本指令不同,功能指令不含表达梯形图符号间相互关系的成分,而是直接表达本指令要做什么。FX2N系列PLC在梯形图中使用功能框表示功能指令,如图9.26所示,这种表达方式很直观。图9.26功能指令的梯形图形式9.4FX系列PLC功能指令 有的功能指令只需要指定功能号,大多数功能指令在指定功能号的同时还需要指定操作元件,操作元件由1到4个操作数组成。操作数分为源(Source)操作数、目标(Destination)操作数及其他操作数。源操作数是指令执行后不改变其内容的操作数,用[S]表示,目标操作数是指令执行后将改变其内容的操作数,用[D]表示。如果可以使用变址功能,则表示为[S·]和[D·]。源或目标操作数不止一个时,可表示为[S1·],[S2·],[D1·],[D2·]等。其他操作数用m或n表示,它们常用来表示常数,或作为源操作数和目标操作数的补充说明。表示常数时,K为十进制,H为十六进制。当图9.26中X0的常开触点接通时,执行的操作为[(D0)+(D1)+(D2)]/3→(D4Z0),即求D0,D1,D2的平均值,结果送到目标寄存器D4Z0,Z0是变址寄存器,如果Z0的内容为12,则运算结果送到D16。功能指令的功能号和指令助记符占一个程序步,每个操作数占2个或4个程序步(16位操作数是2个程序步,32位操作数是4个程序步)。图中同时给出了功能指令MEAN的指令语句表和步序号。9.4FX系列PLC功能指令 1.数据长度功能指令依处理数据的长度分为16位指令和32位指令。其中32位指令用(D)表示,无(D)符号的为16位指令。图9.26中助记符MOV之前的(D)表示处理32位(32bit)数据,这时相邻的两个元件组成元件对,该指令将D11,D10中的数据传送到D13,D12。处理32位数据时,为了避免出现错误,建议使用首地址为偶数的操作数。2.指令执行形式功能指令有脉冲执行型和连续执行型。指令中标有(P)的为脉冲执行型。如图9.26中MOV后面的(P)表示脉冲执行,即仅在X1由OFF(“0”状态)变为ON(“1”状态)时执行一次。如果没有(P),在X1为ON的每一扫描周期,指令都要被执行,称为连续执行。可见,脉冲执行型指令在执行条件满足时仅执行一个扫描周期,这点对数据处理有很重要的意义。如一条加法指令,在脉冲执行时,只将加数和被加数做一次加法运算,而在连续型加法运算指令在执行条件满足时,每一个扫描周期都要相加一次。9.4FX系列PLC功能指令 9.4.2比较与传送指令比较与传送指令的编号为FNC10~FNC19。包括比较类指令和传送类指令。1.比较指令比较指令包括CMP(比较)和ZCP(区间比较)指令,比较结果用目标元件的状态来表示。待比较的源操作数[S1·]和[S2·]可取任意的数据格式,目标操作数[D·]可取Y,M和S,占用3点。1)比较指令比较指令CMP(Compare)的功能指令编号为FNC10。比较指令CMP是将源操作数[S1·]和[S2·]的数据进行比较,结果送到目标操作数[D·]中。图9.27中的比较指令将十进制常数100与C20的当前值比较,比较结果送到M0~M2。在X0为OFF时不执行CMP指令,即不进行比较,M0~M2的状态保持不变。如要清除比较结果,要采用RST或ZRST复位指令。如图9.28所示。9.4FX系列PLC功能指令 图9.27CMP指令图9.28比较结果的复位2)区间比较指令区间比较指令ZCP(ZoneCompare)的功能指令编号为FNC11。区间比较指令ZCP是将一个数据[S·]与两个源数据[S1·]和[S2·]间的数据进行代数比较,比较结果在目标操作数[D·]及以后的两个软元件中表示出来。源[S1·]的内容比源[S2·]的内容要小。如果[S1·]比[S2·]大,则[S2·]被看作与[S1·]一样大。图9.29中的X0为ON时,执行ZCP指令,比较结果送到M3~M5。X0为OFF时,即ZCP指令不执行,M3~M5保持X0为OFF前的状态。清除比较结果,可用复位指令。9.4FX系列PLC功能指令 2.传送指令传送指令包括MOV(传送)、SMOV(BCD码移位传送)、CML(取反传送)、BMOV(数据块传送)、FMOV(多点传送)以及XCH(数据交换)指令。MOV和CML指令的源操作数可取所有的数据类型,SMOV指令可取除K,H以外的其他类型的操作数。它们的目标操作数可取KnY,KnM,KnS,T,C,D,V和Z。1)传送指令传送指令MOV(Move)的功能指令编号为FNC12。传送指令MOV是将源操作数内的数据传送到指定的目标操作数内,即[S·]→[D·]。在图9.30中,当X0为ON时,源操作数[S·]中的常数100传送到目标操作元件D10中。当X0为OFF时,不执行指令,数据保持不变。9.4FX系列PLC功能指令 图9.29区间比较指令图9.30传送指令与移位传送指令2)移位传送指令移位传送指令SMOV(ShiftMove)的功能指令编号为FNC13。源数据(二进制数)被转换成4位BCD码,然后将它们移位传送。图9.31中的X1为ON时,将D1中右起第4位BCD码(m1=4)开始的2位(m2=2)BCD码移到目标操作数(D2)的右起第3位(n=3)和第2位,然后D2中的BCD码自动转换为二进制码,D2中的第1位和第4位不受移位传送指令的影响。3)取反传送指令9.4FX系列PLC功能指令 取反传送指令CML(Complement)的功能指令编号为FNC14。取反传送指令将源元件中的数据逐位取反(1→0,0→1)并传送到指定目标。CML用于PLC反逻辑输出。图9.32所示的CML指令将D0的低4位取反后传送到Y3~Y0中。图9.31移动传送指令图9.32取反传送指令9.4FX系列PLC功能指令 4)块传送指令块传送指令BMOV(BlockMove)的功能指令编号为FNC15。块传送指令的源操作数可取KnX,KnY,KnM,KnS,T,C,D和文件寄存器,目标操作数可取KnY,KnM,KnS,T,C和D。BMOV指令是将从源操作数指定的软元件开始的n点数据传送到指定的目标操作数开始的n点软元件。如果元件号超出允许的元件号范围,数据仅传送到允许的范围内。为防止源数据块与目标数据块重叠时源数据在传送过程中被改写,传送的顺序是自动决定的,传送顺序如图9.33所示。在具有指定的位元件的场合,源与目标要采用相同的位数,如图9.34所示。图9.33块传送指令使用说明之一图9.34块传送指令使用说明之二9.4FX系列PLC功能指令 5)多点传送指令多点传送指令FMOV(FillMove)的功能指令编号为FNC16。它的源操作数可取所有的数据类型,目标操作数可取KnY,KnM,KnS,T,C和D,n≤512。FMOV指令是将源操作数指定的软元件的内容向以目标操作数指定的软元件开头的n点软元件传送。n点软元件的内容都一样,如图9.35所示。当X0为ON时将常数0送到D0~D9这10个(n=10)数据寄存器中。如果元件号超出允许的元件号范围,数据仅传送到允许的范围内。6)数据交换指令数据交换指令XCH(Exchange)的功能指令编号为FNC17。它的两个目标操作数可取KnY,KnM,KnS,T,C,D,V和Z。XCH指令是在指定的目标软元件间进行数据交换。如图9.35所示,在指令执行前,若目标元件D10和D11中的数据分别为120和350;当X1为ON时,数据交换指令XCH执行后,目标元件D10和D11中的数据分别为350和120。即D10和D11中的数据进行了交换。交换指令一般采用脉冲方式。3.数据变换指令9.4FX系列PLC功能指令 数据变换指令包括BCD(二进制数转换成BCD码并传送)和BIN(BCD码转换为二进制数并传送)指令。它们的源操作数可取KnX,KnY,KnM,KnS,T,C,D,V和Z,目标操作数可取KnY,KnM,KnS,T,C,D,V和Z。1)BCD变换指令BCD变换指令BCD(BinaryCodetoDecimal)的功能指令编号为FNC18,该指令是将源元件中的二进制数转换成BCD码送到目标元件中。如图9.36所示,当X0为ON时,将源元件D12中的二进制数转换成BCD码送到目标元件Y0~Y7中去。图9.35多点数据传送与数据交换指令图9.36BCD变换与BIN变换指令9.4FX系列PLC功能指令 PLC内部的算术运算是用二进制进行的,因此可用BCD变换指令将PLC内的二进制数据变为七段显示等所需的BCD码后向外部输出。2)BIN变换指令BIN变换指令BIN(Binary)的功能指令编号为FNC19,该指令是将源元件中BCD码转换成二进制数送到目标元件。数值范围当16位操作为0~9999;32位操作为0~99999999。BIN变换指令的使用如图9.36所示。当X1为ON时,将源元件K2X0中BCD码转换成二进制数送到目标元件D13中去。如果源数据不是BCD数时,M8067为ON(运算错误),M8068(运算错误锁存)不工作,为OFF。常数K不能作为本指令的操作元件,因为在任何处理之前它们都会被转换成二进制数。9.4FX系列PLC功能指令 9.4.3算术运算与逻辑运算指令算术运算与逻辑运算指令的功能指令编号为FNC20~FNC29,算术运算指令包括二进制加、减、乘、除及加1、减1指令;逻辑运算指令包括字编程元件的逻辑与、或、异或和取补指令。1.算术运算指令算术运算指令包括ADD,SUB,MUL,DIV(二进制加、减、乘、除)指令,源操作数可取所有的数据类型,目标操作数可取KnY,KnM,KnS,T,C,D,V和Z(32位乘除指令中V和Z不能用作[D·])。1)加法指令加法指令ADD(Addition)的功能编号为FNC20。该指令是将指定的源元件中的二进制数相加,结果送到指定的目标元件中去。每个数据的最高位为符号位(0为正,1为负),加减运算为代数运算。图9.37中的X0为ON时,执行(D10)+(D12)→(D14)。ADD加法指令有3个常用标志。M8020为零标志,M8021为借位标志,M8022为进位标志。如果运算结果为0,则零标志M8020置1;如果运算结果超过32767(16bit运算)或2147483647(32bit运算),则进位标志M8021置1;如果运算结果小于-32768(16bit)或-2147483648(32bit),则借位标志M8022置1。9.4FX系列PLC功能指令 在32位运算中,被指定的字元件是低16位元件,而下一个元件为高16位元件。为了避免错误,建议指定操作元件时采用偶数元件号。源和目标可以用相同的元件号。若源和目标元件号相同而采用连续执行的ADD、(D)ADD指令时,加法的结果在每个扫描周期都会改变。若采用脉冲执行的加法指令ADD(P)来加1,这与脉冲执行的INC(加1)指令的执行结果相似,其不同之处在于INC指令不影响零标志、借位标志和进位标志。2)减法指令减法指令SUB(Subtraction)的功能指令编号为FNC21,该指令是将指定的源元件中的二进制数相减,结果送到指定的目标元件中去。如图9.37所示。当X1为ON时,执行(D1,D0)-22→(D1,D0)。各种标志的动作、32位运算中软元件的指定方法、连续执行型和脉冲执行型的差异等均与上述加法指令相同。3)乘法指令乘法指令MUL(Multiplication)的功能编号为FNC22,每个数据的最高位为符号位(0为正,1为负)。MUL乘法指令是将指定的源元件中的二进制数相乘,结果送到指定的目标元件中去。如图9.38所示,它分16位和32位两种情况。9.4FX系列PLC功能指令 图9.37二进制加减运算指令图9.38二进制乘法及除法运算指令16位运算执行条件X0为ON,(D0)×(D2)→(D5,D4)。源操作数是16位,目标操作数是32位。32位运算即执行(D)MUL指令,当X0为ON时,(D1,D0)×(D3,D2)→(D7,D6,D5,D4)。源操作数是32位,目标操作数为64位。如将位组合元件用于目标操作数时,限于K的取值,只能得到低位32位的结果,不能得到高32位的结果。这时应将数据移入字元件再进行计算。用字元件时,也不能监视64位数据,只能通过监视高32位和低32位。V、Z不能用[D·]目标元件。9.4FX系列PLC功能指令 4)除法指令除法指令DIV(Division)的功能指令编号为FNC23,该指令是将指定的源元件中的二进制数相除,[S1·]为被除数,[S2·]为除数,商送到指定的目标元件[D·]中去,余数送到[D·]的下一个目标元件。如图9.38所示,它也分16位和32位两种情况。16位运算即执行DIV指令,当X1为ON时,执行(D6)÷(D8),商送到(D2),余数送到(D3)。32位运算即执行(D)DIV指令,当X1为ON时,执行(D7,D6)÷(D9,D8),商送到(D3,D2),余数送到(D5,D4)。若除数为0则出错,不执行指令。若位元件被指定为目标元件,不能获得余数,商和余数的最高位为符号位。2.加1和减1指令加1指令INC(Increment)和减1指令DEC(Decrement)的功能指令编号分别为FNC24和FNC25。它们的操作数均可取KnY,KnM,KnS,T,C,D,V和Z。在图9.39中,X0每次由OFF变为ON时,由[D·]指定的元件D10中的二进制数自动加1。如果不用脉冲指令,每一个扫描周期都要加1。9.4FX系列PLC功能指令 当X1由OFF变为ON时,由[D·]指定的元件D11中的二进制数自动减1。若用连续指令时,每个周期减1。在16位运算中,+32767再加1就变为-32768;-32768再减1就变为+32767,但标志不置位。同样,在32位运算中,+2147483647再加1就变为-2147483648;-2147483648再减1就变为+2147483647,标志也不置位。3.字逻辑运算指令字逻辑运算指令包括WAND(字逻辑与)、WOR(字逻辑或)、WXOR(字逻辑异或)和NEG(求补)指令,功能指令编号分别为FNC26~FNC29。WAND,WOR和WXOR指令的[S1·]和[S2·]均可取所有的数据类型,目标操作数可取KnY,KnM,KnS,T,C,D,V和Z。NEG指令只有目标操作数,同样可取KnY,KnM,KnS,T,C,D,V和Z。字逻辑与、字逻辑或、字逻辑异或指令以位(bit)为单位作相应的运算。如图9.40所示。当X0为ON时,[S1·]指定的D10和[S2·]指定的D12内数据按位对应,进行逻辑字与运算,结果存于由[D·]指定的元件D14中。当X1为ON时,[S1·]指定的D20和[S2·]指定的D22内数据按位对应,进行逻辑字或运算,结果存于由[D·]指定的元件D24中。9.4FX系列PLC功能指令 当X2为ON时,[S1·]指定的D30和[S2·]指定的D32内数据按位对应,进行逻辑字异或运算,结果存于由[D·]指定的元件D34中。WXOR指令与求反指令(CML)组合使用可以实现“异或非”运算。图9.39二进制加1、减1运算指令图9.40字逻辑运算指令当X3由OFF变为ON时,将[D·]指定的D40内数据的每一位取反后该数再加1,结果存于同一元件D40中。9.4FX系列PLC功能指令 9.4.4程序流向控制指令程序流向控制指令的编号为FNC00~FNC09。包括条件跳转指令、子程序指令、中断指令及程序循环指令等。1.条件跳转指令条件跳转指令CJ(ConditionalJump)的功能指令编号为FNC00,操作数为P0~P127,其中P63即END,无需再标号。CJ和CJ(P)指令用于跳过顺序程序中的某一部分。跳转指针标号一般在CJ指令之后,如图9.41(a)所示。当X20为ON时,程序跳到P7处,如果X20为OFF,不执行跳转,程序按原顺序执行。跳转时,不执行被跳过的那部分指令。如果被跳过程序段中包含时间继电器和计数器,无论其是否具有掉电保持功能,它们的实际值寄存器被锁定,跳转发生后其计数、定时值保持不变,在跳转中止时,计数、定时将继续进行。但是正在工作的T63和高速计数器不管有无跳步仍连续工作。另外,定时、计数器的复位指令具有优先权,即使复位指令位于被跳过的程序段中,执行条件满足时,复位工作也将执行。跳转指针标号也可出现在跳转指令之前,如图9.41(b)所示,但应注意,如果X20为ON时间过长,造成该程序的执行时间超过警戒时钟设定值,则程序就会出错。9.4FX系列PLC功能指令 (a)二条跳转指令使用同一标号(b)标号指针用法图9.41标号指针跳转时,如果从主令控制区的外部跳入其内部,不管它的主控触点是否接通,都把它当成接通来执行主令控制区内的程序。如果跳步指令在主令控制区内,主控触点没有接通时不执行跳步。在一个程序中,一个标号只能出现一次。但同一程序中两条跳转指令可以使用相同的标号。如果用辅助继电器M8000作为跳转指令的工作条件,跳转就成为无条件跳转,因为运行时特殊辅助继电器M8000总是为ON。9.4FX系列PLC功能指令 2.子程序调用与子程序返回指令子程序调用指令CALL(SubRoutineCall)的功能指令编号为FNC01,操作数为P0~P127(不包括P63),允许用变址寄存器修改。子程序可以嵌套调用,最多嵌套5级。子程序返回指令SRET(SubRoutineReturn)的功能指令编号为FNC02,无操作数。子程序是一些具有特定的控制目相对独立的程序。为了区别于主程序,规定在程序编排时,将主程序排在前边,子程序排在后边,并以主程序结束指令FEND将这两部分隔开。子程序指令在梯形图中使用的情况如图9.42所示。图中,子程序调用指令CALL安排在主程序段中,当X0为ON时,标号为P9的子程序被执行。子程序P9安排在主程序结束指令FEND之后,标号P9和子程序返回指令SRET间的程序构成了子程序的内容。当主程序带有多个子程序时,子程序可依次列在主程序结束指令之后,并以不同的标号相区别。应注意的是,子程序应在FEND指令之后,同一标号只能出现一次,CJ指令中用过的标号不能再用,不同位置的CALL指令可以调用同一标号子程序。图9.42中,当X0为ON时,CALL指令使程序跳到标号P9处,子程序被执行,执行完SRET指令后返回到主程序继续执行原程序(即104步)。可见,只要X0为ON,就相当于在主程序中加入了这一段程序。而在X0为OFF时,仅执行主程序。9.4FX系列PLC功能指令 图9.43所示是子程序嵌套调用的例子。图中CALL(P)P10指令仅在X0由OFF变为ON时执行一次。在执行子程序1时,如果X4为ON,CALLP15被执行,程序跳到P15处,嵌套执行子程序2。执行第二条SRET指令后,返回子程序1中CALLP15指令的下一条指令,执行第一条SRET指令后返回主程序中CALL(P)P10指令的下一条指令。图9.42子程序的使用图9.43子程序的嵌套调用9.4FX系列PLC功能指令 3.与中断有关的指令允许中断指令EI(InterruptionEnable)的功能指令编号为FNC04;禁止中断指令DI(InterruptionDisable)的功能指令编号为FNC05;中断返回指令IRET(InterruptionReturn)的功能指令编号为FNC03。以上3条指令均无操作数。中断指在主程序的执行过程中中断主程序的执行而去执行中断服务程序。和子程序一样,中断服务程序也是为某些特定的控制功能而设定的。不同的是,这些特定的控制功能的共同特点是要求响应时间小于机器的扫描周期。引起中断的信号叫中断源。FX2N系列PLC的中断源有外部中断、定时器中断及计数器中断。其中外部中断有6个与X0~X5对应的中断输入点,中断指针为I □ 0 □,最低位为0时表示下降沿中断,反之为上升沿中断。最高位与X0~X5的元件号相对应。3点定时器中断对应的中断指针为I6 □ □~I8 □ □,低两位是以ms为单位的定时时间,定时器中断用于高速处理或每隔一定时间执行程序。6点计数器的中断指针为I0 □ 0(□=1~6),它们利用高速计数器的当前值产生中断,与HSCS(高速计数器比较置位)指令配合使用。9.4FX系列PLC功能指令 图9.44中断指令的使用PLC通常处于禁止中断的状态,指令EI和DI之间的程序段为允许中断的区间,如图9.44所示。当程序执行到该区间时,如果中断源产生中断,CPU将停止执行当前的程序,转去执行相应的中断子程序,执行到中断子程序的IRET指令时,返回原断点,继续执行原来的程序。如果有多个中断信号依次发出,则优先级按发生的先后为序,发生越早的优先级越高。若同时发生多个中断信号,则中断指针号小的优先。如果机器安排的中断比较多,而这些中断又不一定需同时响应时,还可以通过特殊辅助继电器M8050~M8058实现中断选择。这些特殊辅助继电器和9个中断的对应关系为M8050~M8055与6个外部输入中断对应,M8056~M8058与3点定时器中断对应。当这些辅助继电器通过控制信号被置1(ON)时,其对应的中断被禁止执行。M8059为ON时,关闭所有的计数器中断。图9.44中断指令的使用9.4FX系列PLC功能指令 FX2N系列PLC可实现不多于二级的中断嵌套。即在中断子程序中编入EI和DI,可实现双重中断。如果中断信号在禁止中断区出现,该中断信号被存储,并在EI指令之后响应该中断。不需要关中断时,只使用EI指令,可以不使用DI指令。4.程序结束指令主程序结束指令FEND(FirstEnd)的功能指令编号为FNC06,无操作数。FEND表示主程序结束,执行到FEND指令时可编程控制器进行输入输出处理、监控定时器刷新,完成后返回到主程序的开始处。子程序(包括中断子程序)应放在FEND指令之后。CALL指令调用的子程序必须用SRET指令结束,中断子程序必须以IRET指令结束。5.监控定时器指令监控定时器指令WDT(WatchDogTimer)的功能指令编号为FNC07,无操作数。监控定时器又称看门狗,是刷新顺序程序的警戒时钟,实际上是一个专用定时器。在FX2N系列PLC中,其数据寄存在寄存器D8000中,定时时间的缺省值为200ms,可通过修改D8000设定其定时时间。如果程序的扫描周期(从0步到END或FEND指令)超过它的定时时间,PLC将停止运行。在此情况下,应将9.4FX系列PLC功能指令 WDT指令插到合适的程序步中刷新警戒时钟以使顺序程序得以继续执行,直到END。如条件跳转指令CJ若在它对应的标号之后(即程序往回跳),可能因连续反复跳步使它们之间的程序反复执行,总的执行时间可能超过警戒时钟的定时时间,为了避免出现此情况,可在CJ指令和对应的标号之间插入WDT指令。6.循环指令循环指令由FOR及NEXT两条指令构成,它们总是成对出现的。FOR指令表示循环区的起点,功能指令编号为FNC08,它的源操作数表示循环次数N,可以取任意数据格式。循环次数N=1~32767,如N在-32767~0之间,当作N=1处理。NEXT是循环区终点指令,功能指令编号为FNC09,无操作数。该指令可以嵌套使用,最多允许5层嵌套。如果要求有条件执行重复扫描,则可以在FOR指令前面加跳转指令。如图9.45所示是3层循环嵌套的情况。9.4FX系列PLC功能指令 图9.45循环指令9.4FX系列PLC功能指令 循环体分别为A、B和C,其中循环体A要求有条件执行重复扫描,因此在相应的FOR指令前面加了跳转指令。循环体C重复扫描3次后,再扫描相应的NEXT指令下面的梯形图。由于循环体B嵌套在循环体C的内部,设数据寄存器D02内的数据为4,则循环体B重复扫描的次数为4×3=12(次)。而循环体A嵌套在循环体B的内部,并且在FOR指令前面有跳转指令,因此其重复扫描次数分两种情况。(1)当跳转指令的控制触点X0断开时,循环体A的重复扫描次数为5×4×3=60。(2)当跳转指令的控制触点X0闭合时,则不再执行循环体A的重复扫描。在使用FOR、NEXT指令时要注意二者必须成对使用,数目相符,并且在FOR-NEXT循环体之中不能出现FEND或END指令。9.4FX系列PLC功能指令 9.4.5循环移位与移位指令循环移位与移位指令的功能指令编号为FNC30~FNC39。FX2N系列PLC循环移位与移位指令有移位、循环移位、字移位及先入先出(FIFO)指令等,其中循环移位分为带进位的及不带进位的位循环,移位有左移和右移之分,FIFO分为写入和读出。1.循环移位指令右循环移位指令ROR(RotationRight)和左循环移位指令ROL(RotationLeft)的功能编号分别为FNC30和FNC31。它们只有目标操作数,可取KnY,KnM,KnS,T,C,D,V和Z。16位指令和32位指令中n应分别小于16和32。循环右(左)移指令可以使16位数据、32位数据向右(左)循环移位,如图9.46(a)和(b)所示。当X0(或X1)由OFF变为ON时,[D·]内指定的D0内的数据向右(或向左)移4(n=4)位,最后一次移出来的那一位同时存入进位标志M8022中。9.4FX系列PLC功能指令 图9.46循环移位指令用连续指令执行时,循环移位操作每个周期执行一次。若在目标元件中指定位元件组的组数,只有K4(16位指令)和K8(32位指令)有效,例如K4Y0和K8M0。2.带进位的循环移位指令带进位的右循环移位指令RCR(RotationRightwithCarry)和带进位的左循环移位指令RCL(RotationLeftwithCarry)的功能指令编号分别为FNC32和FNC33,它们的目标操作数和n的取值范围与循环移位指令相同。9.4FX系列PLC功能指令 执行这两条指令时,各位的数据与进位位M8022一起向右(或向左)循环移动n位。如图9.47(a)和(b)所示。在循环中进位标志被送到目标操作数中。与循环移位指令一样,若在目标元件中指定位元件组的组数,只有K4(16位指令)和K8(32位指令)有效。图9.47带进位的循环移位指令3.位右移和位左移指令位右移指令SFTR(ShiftRight)与位左移指令SFTL(ShiftLeft)指令的功能指令编号分别为FNC34和FNC35。它们的源操作数可取X,Y,M和S,目标操作数可取Y,M和S。它们只有16位运算。9.4FX系列PLC功能指令 位右移和位左移指令使元件中的状态成组地向右或向左移动,由n1指定位元件组的长度,n2指定移动的位数,对于FX2N系列PLC,n2≤n1≤1024。图9.48(a)中的X10由OFF变为ON时,位右移指令按以下顺序移位:M3~M0中的数溢出,M7~M4→M3~M0,M11~M8→M7~M4,M15~M12→M11~M8,X3~X0→M15~M12。9.4FX系列PLC功能指令 图9.48位左、右移指令9.4FX系列PLC功能指令 图9.47(b)中的X10由OFF变为ON时,位左移指令按以下顺序移位:M15~M12中的数溢出,M11~M8→M15~M12,M7~M4→M11~M8,M3~M0→M7~M4,X3~X0→M3~M0。4.字右移和字左移指令字右移指令WSFR(WordSiftRight)与字左移指令WSFL(WordShiftLeft)的功能指令编号分别为FNC36和FNC37。它们的源操作数可取KnX,KnY,KnM,KnS,T,C和D,目标操作数可取KnY,KnM,KnS,T,C和D。它们只有16位运算。字右移(或字左移)指令是以字为单位,对[D·]所指定的n1个字元件进行[S·]所指定的n2个字的右移(或左移)。其中n2≤n1≤512。图9.49中的X0由OFF变为ON时,字右移指令按以下顺序移位:D3~D0中的数溢出,D7~D4→D3~D0,D11~D8→D7~D4,D15~D12→D11~D8,T3~T0→D15~D12。字左移指令的使用方法与字右移指令基本原理相同,请读者自行分析。5.FIFO(先入先出)写入与读出指令1)FIFO(FirstinFirstout)写入指令9.4FX系列PLC功能指令 FIFO写入指令SFWR(ShiftRegisterWrite)的功能指令编号为FNC38,源操作数可取所有的数据类型,目标操作数可取KnY,KnM,KnS,T,C和D,只有16位运算。图9.49字右移指令图9.50(a)中的X0由OFF变为ON时,将[S·]所指定的D0的数据写入D2,[D·]所指定的指针D1的内容成为1。以后如X0再次由OFF变为ON时,D0中新的数据写入D3,D1的内容变为2。依此类推,源操作数D0中的数据依次写入数据寄存器。9.4FX系列PLC功能指令 数据由寄存器D2开始顺序存入,源数据写入的次数存入D1。当D1中的数达到n-1后不再执行,进位标志M8022置1。若是连续指令执行时,则在各个扫描周期按顺序执行。2)FIFO读出指令FIFO读出指令SFRD(ShiftRegisterRead)的功能指令编号为FNC39,源操作数可取KnY,KnM,KnS,T,C和D,目标操作数可取KnY,KnM,KnS,T,C,D,V和Z,只有16位运算。图9.50(b)中的X0由OFF变为ON时,将D2的数据传送到D20内,与此同时,指针D1的内容减1,D3~D10的数据向右移。当X0再由OFF变为ON时,即原D3中的内容传送到D20内,D1的内容再减1。依此类推,数据总是从D2读出,当D1的内容为0时,则上述操作不再执行,零标志M8020置1。若是连续指令执行时,则在各个扫描周期按顺序向右移位传送执行。9.4FX系列PLC功能指令 图9.50FIFO写入与读出指令9.4FX系列PLC功能指令 9.4.6数据处理指令数据处理指令的功能编号为FNC40~FNC49,包括区间复位指令、解码指令、编码指令、求置ON位总数指令、ON位判别指令、平均值指令、报警器置位指令、报警器复位指令、平方根指令、二进制整数向二进制浮点数转换指令及高低字节交换指令。1.区间复位指令区间复位指令ZRST(ZoneReset)也称为成批复位指令,其功能指令编号为FNC40,目标操作数可取T,C和D(字元件)或Y,M,S(位元件)。该指令有16位运算。图9.51区间复位指令ZRST指令将[D1·]和[D2·]指定的元件号范围内的同类元件成批复位。图9.51中当M8002由OFF变为ON时,区间复位指令执行。位元件M500~M599成批复位,字元件C235~C255成批复位,状态元件S0~S127成批复位。图9.51区间复位指令9.4FX系列PLC功能指令 [D1·]和[D2·]指定的应为同一类元件,[D1·]的元件号应小于等于[D2·]的元件号。若[D1·]的元件号大于[D2·]的元件号,则只有[D1·]指定的元件被复位。虽然ZRST指令是16位处理指令,但是可在[D1·],[D2·]中指定32位计数器。但不能混合指定,即不能在[D1·]中指定16位计数器,在[D2·]中指定32位计数器。2.解码与编码指令1)解码指令解码指令DECO(Decode)的功能指令编号为FNC41。位源操作数可取X,T,M和S,位目标操作数可取Y,M和S。字源操作数可取K,H,T,C,D,V和Z,字目标操作数可取T,C和D,n=1~8。只有16位运算。(1)当[D·]是位元件时,以源[S·]为首地址的n位连续的位元件所表示的十进制码值为Q,DECO指令把以[D·]为首地址目标元件的第Q位(目标元件位为第0位)置1,其他位置0。如图9.52(a)所示。X2~X0组成的3位(n=3)二进制数为011,相当于十进制数Q为3(21+20=3),由目标操作数M17~M10组成的8位二进制数的第3位置1,其余各位置0。如源数据Q为0,则第0位M0为1。9.4FX系列PLC功能指令 图9.52解码指令若n=0时,程序不执行;n=0~8以外时,出现运算错误。若n=8时,[D·]位数为28=256。驱动输入为OFF时,不执行指令,上一次解码输出置1的位保持不变。9.4FX系列PLC功能指令 (2)当[D·]是字元件时,源[S·]所指定字元件的低n位所表示的十进制码为Q,DECO指令把以[D·]所指定目标字元件的第Q位置1,其他各位置0。如图9.52(b)所示,源操作数Q=22+21=6,因此D1的第6位为1。当源数据为0时,D1的第0位为1。若n=0时,程序不执行;n=0~4以外时,出现运算错误。若n=4时[D·]位数为24=16。驱动输入OFF时,不执行指令,上一次解码输出置1的位保持不变。2)编码指令编码指令ENCO(Encode)的功能指令编号为FNC42,只有16位运算。当[S·]指定的源操作数是字元件T,C,D,V和Z时,就使n=4;当[S·]指定的源操作数是位元件X,Y,M和S时,应使n=1~8,目标元件可取T,C,D,V和Z。(1)当[S·]是位元件时,以源[S·]为首地址、长度为2n的位元件中,将最高位置1的位置数存放到目标[D·]所指定的元件中去,[D·]中数值的范围由n确定。如图9.53(a)所示,源元件的长度为2n=23=8位,即M0~M7,其最高位置1的是M4,即第4位。因此将“4”这个位置数以二进制数的形式存放到D10的低3位中。9.4FX系列PLC功能指令 图9.53编码指令当源数的第0位为1,则[D·]中存放0。当源数中无1,出现运算错误。若n=0时,程序不执行;n=1~8以外时,出现运算错误。若n=8时,[S·]位数为28=256。当执行条件OFF时,指令不执行,编码输出保持不变。9.4FX系列PLC功能指令 (2)当[S·]是字元件时,在其可读长度2n位中,最高置1的位置数被存放到[D·]中,[D·]中数值的范围由n确定。如图9.53(b)所示,源字元件的可读长度为2n=23=8位,其最高置1位是第4位。将“4”这个位置数以二进制形式存放到D1的低3位中。若n=0时,程序不执行;n=1~4以外时,出现运算错误。若n=4时,[S·]位数为24=16。当执行条件OFF时,指令不执行,编码输出保持不变。3.求置ON位总数与ON位判别指令1)求置ON位总数指令求置ON位总数指令SUM的功能指令编号为FNC43。它的源操作数可取所有的数据类型,目标操作数可取KnY,KnM,KnS,T,C,D,V和Z。图9.54中的X0为ON时,统计源操作数D0中为ON(位元件的值为“1”时称为ON)的位的个数,并将它送入目标操作数D2中。若D0的各位均为“0”,则零标志M8020置1。如使用32位指令,目标操作数的高位字为0。2)ON位判别指令ON位判别指令BON(BitONCheck)的功能指令编号为FNC44。它的源操作数可取所有的数据类型,目标操作数可取Y,M和S。16位运算n=0~15,32位运算n=0~31。9.4FX系列PLC功能指令 BON指令用来检测指定元件中的指定位是否为“1”。如图9.54所示,当X1为ON时,若源操作数D10的第11位为ON(n=11),则目标操作数M0变为ON。即使X1变为OFF,M0仍保持不变。4.平均值指令平均值指令MEAN的功能指令编号为FNC45。它的源操作数可取KnX,KnY,KnM,KnS,T,C和D,目标操作数可取KnY,KnM,KnS,T,C,D,V和Z,n=1~64。平均值指令MEAN是将[S·]开始的n个源操作数据的平均值(用n除代数和)存入目标操作数[D·]中,舍去余数。MEAN指令的使用说明如图9.55所示。图9.54ON位总数与ON判别指令图9.55平均值指令9.4FX系列PLC功能指令 若元件超出指定的范围,n的值会自动缩小,只求允许范围内元件的平均值。若n的值超出范围1~64,则出错。5.报警器置位复位指令1)报警器置位指令报警器置位指令ANS(AnnunciatorSet)的功能指令编号为FNC46。它的源操作数为T0~T199,目标操作数为S900~S999,m=1~32767(以100ms为单位),只有16位运算。图9.56中的X0为ON的时间超过1s(m=10),S900置1,若X0变为OFF,定时器复位而S900保持为ON。2)报警器复位报警器复位指令ANR(AnnunciatorReset)的功能指令编号为FNC47,无操作数,只有16位运算。图9.56中的X1变为ON时,S900~S999之间被置1的报警器复位,若超过1个报警器被置1,则元件号最低的那个报警器被复位。若X1再次ON,下一地址的报警器被复位。9.4FX系列PLC功能指令 6.其他数据处理指令1)二进制平方根指令平方根指令SQR(SquareRoot)的功能指令编号为FNC48。其源操作数[S·]应大于0,可取K,H和D,目标操作数为D。图9.57中的X0变为ON时,将存放在D0中的数开平方,结果存放在D4内。计算结果舍去小数,只取整数。2)二进制整数向二进制浮点数转换指令二进制整数向二进制浮点数转换指令FLT(Float)的功能指令编号为FNC49。它的源操作数和目标操作数均为D。图9.57中的X1变为ON时,该指令将存放在源操作数D10中的数据转换为浮点数,将它存放在目标寄存器D13和D12中。图9.56报警器置位与复位指令图9.57平方根与浮点数转换指令9.4FX系列PLC功能指令 3)高低字节交换指令图9.58高低字节交换指令高低字节交换指令SWAP的功能指令编号为FNC147。它的源操作数可取KnY,KnM,KnS,T,C,D,V和Z。一个字节由8位二进制数组成。16位运算时,该指令交换源操作数的高字节和低字节。图9.58中的X2变为ON时,D10的高字节和低字节进行交换。32位运算时,如指定的源操作数为D20,先交换D20的高字节和低字节,再交换D21的高字节和低字节。图9.58高低字节交换指令9.4FX系列PLC功能指令 9.4.7浮点数运算指令浮点数运算指令包括浮点数的比较、变换、算术运算、开平方和三角函数等指令。1.二进制浮点数比较指令1)二进制浮点数比较指令二进制浮点数比较指令ECMP的功能指令编号为FNC110,源操作数[S1·]和[S2·]可取K,H和D,目标操作数为Y,M和S,占用3点,只有32位运算。ECMP指令是将[S1·]同[S2·]进行比较,其比较结果用[D·]指定的元件的ON/OFF状态来表示,如图9.59所示。常数参与比较时,被自动转换为二进制浮点数。2)二进制浮点数区间比较指令二进制浮点数区间比较指令EZCP的功能指令编号为FNC111,源操作数[S1·],[S2·]和[S·]可取K,H和D,目标操作数为Y,M和S,占3点。只有32位运算,[S1·]<[S2·]。EZCP指令是将[S·]指定的浮点数与作为比较范围的源操作数[S1·]和[S2·]相比较,比较结果用目标操作数[D·]指定元件的ON/OFF状态来表示,如图9.60所示。常数参与比较时,被自动转换为二进制浮点数。9.4FX系列PLC功能指令 图9.59浮点数比较指令图9.60浮点数区间比较指令2.二进制浮点数转换指令1)二进制浮点数转换为十进制浮点数二进制浮点数转换为十进制浮点数指令EBCD的功能指令编号为FNC118,源操作数[S·]和目标操作数[D·]均为D。图9.61浮点数转换指令EBCD指令是将[S·]指定单元内的二进制浮点数转换为十进制浮点数,并存入[D·]中。二进制浮点数的尾数占23位,符号占1位,指数部分占8位。图9.61中的X0为ON时,将D11,D10中的二进制浮点数转换为十进制浮点数后存入D21和D20。9.4FX系列PLC功能指令 2)十进制浮点数转换为二进制浮点数十进制浮点数转换为二进制浮点数指令(D)EBIN的功能指令编号为FNC119,源操作数[S·]和目标操作数[D·]均为D。EBIN指令是将[S·]指定单元内的十进制浮点数转换为二进制浮点数,并存入[D·]中。图9.61中的X1为ON时,将D31,D30中的十进制浮点数转换为二进制浮点数后存入D41,D40。3)二进制浮点数转换为二进制整数二进制浮点数转换为二进制整数指令INT的功能指令编号为FNC129,源操作数[S·]和目标操作数[D·]均为D。INT指令是将[S·]指定单元内的二进制浮点数舍去小数部分后转换为二进制整数,并存入[D·]中。图9.61中的X2为ON时,将D51,D50中的二进制浮点数转换为二进制整数后存入D60中。该指令是FLT指令(FNC49)的逆运算,运算结果为0时,零标志M8020为ON;转换不满1而舍掉时,借位标志为ON;16位运算结果超出-32767~32767,或32位运算时,运算结果超出-2147483648~2147483647,将会发生溢出,进位标志为ON。图9.61浮点数转换指令9.4FX系列PLC功能指令 3.二进制浮点数的算术运算指令二进制浮点数算术运算指令的源操作数[S1·]和[S2·]可取K,H和D,目标操作数[D·]为D,只有32位运算。运算影响标志位M8020(零标志)、M8021(借位标志)和M8022(进位标志)。常数参与运算时,被自动转换为二进制浮点数。源操作数和目标操作数可取同一数据寄存器,如用连续执行指令,每个扫描周期都会执行运算,如图9.62所示。1)二进制浮点数的加法指令二进制浮点数的加法指令EADD的功能指令编号为FNC120,指令将源操作数[S1·]和[S2·]指定单元的二进制浮点数相加,和(二进制浮点数)存入目标操作数[D·]中。2)二进制浮点数的减法指令二进制浮点数的减法指令ESUB的功能指令编号为FNC121,该指令是用源操作数[S1·]指定的二进制浮点数减去源操作数[S2·]指定的二进制浮点数,差(二进制浮点数)存入目标操作数[D·]中。3)二进制浮点数的乘法指令9.4FX系列PLC功能指令 二进制浮点数的乘法指令EMUL的功能指令编号为FNC122,该指令是用源操作数[S1·]指定的二进制浮点数乘以源操作数[S2·]指定的二进制浮点数,积(二进制浮点数)存入目标操作数[D·]中。4)二进制浮点数的除法指令二进制浮点数的除法指令EDIV的功能指令编号为FNC123,该指令是用源操作数[S1·]指定的二进制浮点数除以源操作数[S2·]指定的二进制浮点数,商(二进制浮点数)存入目标操作数[D·]中。4.二进制浮点数的开平方指令与三角函数运算指令1)二进制浮点数开平方指令二进制浮点数开平方指令ESQR的功能指令编号为FNC127,源操作数[S·]为K,H和D,目标操作数[D·]为D,只有32位运算。ESQR指令是将[S·]指定的二进制浮点数进行开平方,平方根(二进制浮点数)存入目标操作数[D·]中,如图9.63所示。源操作数应为正数,若为负数则出错,运算错误标志M8067为ON,不执行指令。源操作数为常数时,自动转换为二进制浮点数。9.4FX系列PLC功能指令 图9.62浮点数的算术运算指令图9.63浮点数开平方与三角函数指令2)二进制浮点数三角函数运算指令二进制浮点数三角函数运算指令包括SIN(正弦)、COS(余弦)和TAN(正切)指令,功能指令编号分别为FNC130~FNC132,源操作数[S·]和目标操作数[D·]为D,只有32位运算。这些指令是用来求出源操作数[S·]指定的二进制浮点数(角度)的三角函数,函数值(二进制浮点数)存入目标操作数[D·]指定的单元中。源操作数应满足0≤角度≤2。9.4FX系列PLC功能指令 9.4.8时钟运算与格林码变换指令1.时钟比较指令1)时钟数据比较指令时钟数据比较指令TCMP(TimeCompare)的功能指令编号为FNC160,源操作数[S1·],[S2·]和[S3·]用来存放指定时间的时、分、秒,可取任意的数据,[S·]可取T、C和D,目标操作数[D·]为Y、M和S,占3点。TCMP指令是将指定时刻[S·]与时钟数据[S1·](时)[S2·]分[S3·]秒进行比较,比较结果在[D·]中显示。如图9.64所示。2)时钟数据区间比较指令时钟数据区间比较指令TZCP(TimeZoneCompare)的功能指令编号为FNC161,源操作数[S1·],[S2·]和[S·]可取T、C和D,目标操作数[D·]为Y、M和S,占3点,[S1·]≤[S2·]。TZCP指令是将指定时刻[S·]与时钟数据[S1·]~[S2·]进行比较,比较结果在[D·]中显示。图9.65中[S1·]、[S2·]和[S·]分别占3个数据寄存器,如D10~D12分别用来存放时、分、秒。9.4FX系列PLC功能指令 图9.64时钟数据比较指令图9.65时钟数据区间比较指令2.时钟数据加减法指令时钟数据加、减法指令的[S1·]、[S2·]和[D·]可取T、C和D。1)时钟数据加法指令时钟数据加法指令TADD(TimeAddition)的功能指令编号为FNC162,[S1·]、[S2·]和[D·]中存放的是时间数据(时、分、秒)。该指令把以[S2·]起始的3点时刻数据加上存入以[S1·]起始的3点时刻数据的结果存入以[D·]起始的3点中。图9.66中的X0为ON时,TADD指令将D10~D12和D0~D2的时刻数据相加后存入D20~D22中。运算结果如超过24h,进位标志为ON,其和减去24h后存入目标地址。9.4FX系列PLC功能指令 2)时钟数据减法指令时钟数据减法指令TSUB(TimeSubtraction)的功能指令编号为FNC163。该指令把以[S1·]起始的3点时刻数据减去存入以[S2·]起始的3点时刻数据的结果存入以[D·]开始的3点中。图9.66中的X1为ON时,指令将D30~D32和D40~D42的时刻数据相减后存入D50~D52中。运算结果如小于0,借位标志为ON,其差值加上24h后存入目标地址中。3.时钟数据读写指令1)时钟数据读出指令时钟数据读出指令TRD(TimeRead)的功能指令编号为FNC166,[D·]可取T、C和D。该指令用来读出内置的实时钟的数据,并存放在从[D·]开始的7个字内,实时钟的时间数据存放在特殊辅助寄存器D8013~D8019内,D8018~D8013中分别存放年、月、日、时、分和秒,星期存放在D8019中。图9.67中的X1为ON时,D8018~D8013中存放的6个时钟数据分别读入D10~D15,D8019中的星期值读入D16。2)时钟数据写入指令9.4FX系列PLC功能指令 时钟数据写入指令TWR(TimeWrite)的功能指令编号为FNC167,[S·]可取T、C和D,只有16位运算。该指令用来将从[S·]开始的7点数据(时间设定值)写入内置的实时钟。图9.67中的D20~D25分别存放年、月、日、时、分和秒,D26存放星期,X2为ON时,D20~D25的时钟数据分别写入D8018~D8013,D26中的数据写入D8019。图9.66时钟数据加减法指令图9.67时钟数据读出与写入指令4.格林码变换指令格林码变换指令GRY(GrayCode)和格林码逆变换指令GBIN(GrayCodetoBinary)的功能指令编号为FNC170和FNC171,[S·]可取任意的数据格式,[D·]可取KnY、KnM、KnS、T、C、D、V和Z。9.4FX系列PLC功能指令 格林码的特点是相邻的两个数(二进制数)的各位中,只有一位的值是不同的。格林码常用于光电码盘编码器。GRY指令是将[S·]中的二进制数转换为格林码并存入[D·]中,如图9.68所示。GBIN指令是将[S·]中的格林码转换为二进制数并存入[D·]中。9.4FX系列PLC功能指令 9.4.9触点型比较指令LD开始的触点型比较指令接在左母线上,ADD开始的触点型比较指令串联在别的触点后面,OR开始的触点型比较指令与别的触点并联,如图9.69所示。当C10的当前值等于20时,Y10被驱动;当X0为ON且D200的值大于-30时,Y11被SET指令置位;当M3为ON或C10的当前值等于200时,M50被驱动。各种触点型比较指令的见表9-6。图9.68格林码变换指令图9.69触点型比较指令9.4FX系列PLC功能指令 表9-6触点型比较指令功能号助记符命令名称功能号助记符命令名称224LD=(S1)=(S2)时运算开始的触点接通236AND<>(S1)≠(S2)时串联触点接通225LD>(S1)>(S2)时运算开始的触点接通237AND≤(S1)≤(S2)时串联触点接通226LD<(S1)<(S2)时运算开始的触点接通238AND≥(S1)≥(S2)时串联触点接通228LD<>(S1)≠(S2)时运算开始的触点接通240OR=(S1)=(S2)时并联触点接通9.4FX系列PLC功能指令 229LD≤(S1)≤(S2)时运算开始的触点接通241OR>(S1)>(S2)时并联触点接通230LD≥(S1)≥(S2)时运算开始的触点接通242OR<(S1)<(S2)时并联触点接通232AND=(S1)=(S2)时串联触点接通244OR<>(S1)≠(S2)时并联触点接通功能号助记符命令名称功能号助记符命令名称233AND>(S1)>(S2)时串联触点接通245OR≤(S1)≤(S2)时并联触点接通234AND<(S1)<(S2)时串联触点接通246OR≥(S1)≥(S2)时并联触点接通9.4FX系列PLC功能指令 9.4.10高速处理指令高速处理指令的功能指令编号为FNC50~FNC59,包括输入/输出刷新指令、刷新和滤波器时间常数调整指令、矩阵输入指令、高速计数器比较置位指令、高速计数器比较复位指令、区间比较指令、速度检测指令、脉冲输出指令、脉宽调制指令和可调速脉冲输出指令。1.输入/输出指令1)输入/输出刷新指令输入/输出刷新指令REF(Refresh)的功能指令编号为FNC50。它的目标操作数是最低位为0的X和Y元件,如X0、X10、Y20等,[D·]指定了目标元件的首位,n应为8的整倍数,只有16位运算。FX系列PLC使用I/O批处理的方法,即输入信号是在程序处理之前成批读入到输入映像寄存器的,而输出数据是在执行END指令后由输出映像寄存器通过输出锁存器送到输出端子的。REF指令用于在某段程序处理时读入最新信息并将操作结果立即输出。图9.70中的X0为ON时,X10~X17这8点输入(n=8)被刷新。输入数字滤波器的响应延迟时间约10ms,若在REF指令执行之前10ms,X10~X17已变为ON,则执行本指令时X10~X17的映像寄存器变为ON。9.4FX系列PLC功能指令 X1为ON时,Y0~Y7、Y10~Y17、Y20~Y27共24点输出被刷新,输出映像寄存器的内容送到输出锁存器,在输出继电器的响应时间之后为ON的输出触点动作。一般将REF指令放在FOR-NEXT循环中或放在标号的步序号低于对应的CJ指令步序号的标号和步序号之间。2)刷新和滤波时间常数调整指令刷新和滤波时间常数调整指令REFF(RefreshandFilterAdjust)的功能指令编号为FNC51,它用来刷新X0~X17,并指定它们的输入滤波时间常数n(n=0~60ms)。它只有16位运算。图9.70中的X20为ON时,FX2N中X0~X17的输入映像寄存器被刷新,它们的滤波时间常数被设定为1ms(n=1)。为了防止输入噪声的影响,同时也为了提高PLC高速输入的速度,X0~X17输入端采用数字滤波器,滤波时间可用REFF指令加以调整,调节范围为0~60ms,这些输入端也有RC滤波器,但其滤波时间常数不小于50。X0~X7用作高速计数输入、用于SPD速度检测指令,或者用作中断输入时,输入滤波器的滤波时间自动设置为50。9.4FX系列PLC功能指令 3)矩阵输入指令矩阵输入指令MTR(Matrix)的功能指令编号为FNC52。它的源操作数是最低位为0的X,目标操作数[D1]是最低位为0的Y,目标操作数[D2]是最低位为0的Y、M和S,n=2~8。它只有16位运算,MTR指令只能使用一次。利用MTR指令,可用连续的8点输入与n点输出组成n行8列的输入矩阵。矩阵输入占用由[S]指定的输入号开始的8点输入点,并占用由[D1·]指定的输出号开始的n个输出点,将输入的状态存于由[D2·]指定的元件中。图9.71中的X10为ON时,3个输出点(Y0,Y1和Y2)反复顺序接通。Y0为ON时,读入第一行输入的状态,将X0~X7输入的状态存于M30~M37中;Y1为ON时,读入第二行的输入状态,将X0~X7输入的状态存于M40~M47中,以此类推,反复执行。图9.70输入/输出刷新指令图9.71矩阵输入指令9.4FX系列PLC功能指令 对于每一个输出,其I/O指令采用中断方式,立即执行,间隔时间为20ms,允许输入滤波器的延迟时间为10ms。利用MTR指令,只用8/8输入/输出点,就可以输入64个输入点的状态。但是读一次64个输入点所需的时间为20ms×8=160ms,所以不适用于需要快速响应的系统。如果采用X0~X17作输入点,每行的读入时间可缩短到约10ms,64点的输入时间可减到约80ms。2.高速计数器指令高速计数器(C235~C255)用来对外部输入的高速脉冲计数,高速计数器指令包括高速计数器比较置位指令、高速计数器比较复位指令和高速计数器区间比较指令。前两条指令的源操作数[S1·]可取所有的数据类型,[S2·]为C235~C255,目标操作数可取Y,M和S。1)高速计数器比较置位指令高速计数器比较置位指令HSCS(SetbyHighSpeedCounter)的功能指令编号为FNC53,只有32位运算。高速计数器的当前值达到预置值时,[D·]指定的输出用中断方式立即动作,不受扫描时间的影响。图9.72中C255的设定值为100([S1·]=100),其当前值由99变为100或由101变为100时,Y10立即置1。9.4FX系列PLC功能指令 2)高速计数器比较复位指令高速计数器比较复位指令HSCR(ResetbyHighSpeedCounter)的功能指令编号为FNC54,只有32位运算。图9.73中C255的当前值由199变为200或由201变为200时,Y10立即复位。图9.72高速计数器比较置位指令图9.73高速计数器比较复位指令HSCR指令的源操作数和目标操作数可以是同一个计数器。如图9.74所示,C255的当前值达到300时,其输出触点接通,达到400时,C255立即复位,其当前值变为0,输出触点断开。9.4FX系列PLC功能指令 3)高速计数器区间比较指令高速计数器区间比较指令HSZ(ZoneCompareforHighSpeedCounter)的功能指令编号为FNC55,为32位运算。源操作数[S1·]和[S2·]可取所有的数据类型,[S·]=C235~C255。目标操作数[D·]可取Y、M和S,为3个连续的元件,如图9.75所示的目标操作数指定的是Y0、Y1和Y2。图中高速计数器C251的当前值<1000时,Y0置1,Y1和Y2为0;1000≤C251的当前值≤1200时,Y1置1,Y0和Y2为0;C251的当前值>1200时,Y2置1,Y0和Y1为0。此指令中的计数、比较和外部输出均以中断方式进行。图9.74高速计数器自复位用以产生脉冲图9.75高速计数器区间比较指令9.4FX系列PLC功能指令 3.速度检测与脉冲输出指令1)速度检测指令速度检测指令SPD(SpeedDetect)的功能指令编号为FNC56,源操作数[S1·]为X0~X5,[S2·]可取所有的数据类型,目标操作数可取T、C、D、V和Z,只有16位运算。SPD指令用来检测给定时间内从编码器输入的脉冲个数,并计算出速度。[S1·]用来指定计数脉冲输入点(X0~X5),[S2·]用来指定计数时间,即测量周期(以ms为单位),[D·]用来指定计数结果的存放处,占用3个元件。在图9.76中,当X10为OFF时,不执行测速操作;当X10为ON时,便开始转速测量的操作,D1内存放正进行的测量周期内已经对X0输入的脉冲数,D2内存放正进行着的测量周期内还剩余的时间。当该测量周期的计时时间(100ms)到,则将D1内的数据传送到D0中去,然后将D1清0,并且重新开始存放下一个测量周期内输入的脉冲数。D0中存放的数正比于转速,转速n可通过式(9-1)计算。(r/min)(9-1)9.4FX系列PLC功能指令 式中:N——脉冲数/转;(D0)——D0中的数;t——[S2·]指定的计数时间(ms)。2)脉冲输出指令脉冲输出指令PLSY(PulseOutput)的功能指令编号为FNC57,源操作数[S1·]、[S2·]可取所有的数据类型,[D·]为Y1和Y2,本指令只能使用一次。PLSY指令用于产生指定数量和频率的脉冲。[S1·]用来指定脉冲频率(2~20KHz),[S2·]用来指定产生的脉冲个数,16位指令的脉冲数范围为1~32767,32位指令的脉冲数范围为1~2147483647。若指定脉冲数为0,则持续产生脉冲。[D·]用来指定脉冲输出元件(只能用晶体管输出型的Y0或Y1)。脉冲的占空比为50%,以中断方式输出。9.4FX系列PLC功能指令 图9.76速度检测指令图9.77脉冲输出指令图9.77中若改用(D)PLSY指令,脉冲数由(D0,D1)来指定。指定脉冲数输出完后,指令执行完成标志M8029置1。X10由ON变为OFF时,M8029复位,脉冲输出停止。X10再次变为ON时,脉冲重新开始输出。在发出脉冲串期间X10若变为OFF,Y0也变为OFF。[S1·]中的数据在指令执行过程中可以改变,但[S2·]中的数据改变在指令执行完成前不起作用。9.4FX系列PLC功能指令 3)脉宽调制指令脉宽调制指令PWM(PulseWidthModulation)的功能指令编号为FNC58,源操作数和目标操作数的类型与PLSY指令相同,只能用于晶体管输出型的Y0或Y1,只有16位运算,只能使用一次。PWM指令用于产生指定脉冲宽度和周期的脉冲串。[S1·]用来指定脉冲宽度(t=10ms~32767ms),[S2·]用来指定脉冲周期(T0=1ms~32767ms),[S1·]应小于[S2·],[D·]用来指定输出脉冲的元件号(Y0或Y1),输出的ON/OFF状态用中断方式控制。图9.78中D10的值从0~100变化时,Y0输出的脉冲的占空比从0~1变化。X10变为OFF时,Y0也变为OFF。4)带加减速功能的脉冲输出指令脉冲输出指令PLSR(PulseR)的功能指令编号为FNC59,源操作数和目标操作数的类型与PLSY指令相同,只能用于晶体管输出型PLC的Y0或Y1。本指令只能使用一次。9.4FX系列PLC功能指令 [S1·]用来指定最高频率(10kHz~20kHz),应为10的整倍数。[S2·]用来指定总的输出脉冲,16位指令的脉冲数范围为110~32767,32位指令的脉冲数范围为110~2147483647。设定值不到110时,脉冲不能正常输出。[S3·]用来设定加减速时间(0ms~5000ms),其值应大于PLC扫描周期最大值(D8012)的10倍。且应满足式(9-2)。(9-2)加减速的变速次数固定为10次。[D·]用来指定脉冲输出的元件号(Y0或Y1)。图9.79中的X10为OFF时,输出中断;为ON时,从初始值开始输出。输出频率范围为2kHz~20kHz,最高速度、加减速时的变速速度超过此范围时,将自动调到允许值内。9.4FX系列PLC功能指令 图9.78脉宽调制指令图9.79带加减速功能的脉冲输出指令9.4FX系列PLC功能指令 9.4.11方便指令方便指令的功能指令编号为FNC60~FNC68,包括状态初始化指令、数据搜索指令、绝对值式凸轮顺控指令、增量式凸轮顺控指令、示教定时器指令、特殊定时器指令、交替输出指令、斜坡输出指令、旋转台控制指令和数据排序指令。1.状态初始化指令状态初始化指令IST(InitialState)的功能指令编号为FNC60,源操作数[S·]可取X,Y和M,目标操作数[D1·],[D2·]为S20~S899,[D1·]<[D2·],在程序中只能使用一次。IST指令与STL指令一起使用,用于自动设置初始状态和设置有关的特殊辅助继电器的状态。图9.80中IST指令中的S20和S27用来指定在自动操作中用到的最低和最高的状态的元件号,源操作数X20用来指定与工作方式有关的输入继电器的首元件,它实际上指定从X20开始的8个输入继电器具有以下意义。图9.80状态初始化指令9.4FX系列PLC功能指令 图9.80状态初始化指令X20手动。X21回去原点。X22单步运行。X23单周期运行(半自动)。X24连续运行(全自动)。X25回原点启动。X26自动操作启动。X27停止。X20~X24中同时只能有一个处于接通状态。当IST指令的执行条件满足时,S0~S2和下列的特殊辅助继电器被自动指定为以下功能,以后即使IST指令的执行条件变为OFF,这些元件的功能仍保持不变。M8040禁止转换。当M8040为1时,禁止状态转换;当M8040为0时,允许状态转换。9.4FX系列PLC功能指令 M8041开始转换。当M8041为1时,允许在自动工作方式下从目标操作数[D1·]所使用的最低位状态开始,进行状态转换;反之,则禁止转换。M8042启动脉冲。当输入端X26由OFF变为ON时,M8042产生一个脉宽为一个扫描周期的脉冲。M8043进入自动工作方式。当M8047为1时,表示返回原点工作方式结束,允许进入自动工作方式;反之,则不允许进入自动工作方式。M8047STL监控有效。当M8047为1时,只要状态S0~S999中任何一个状态为1,M8046就为1,同时,特殊数据寄存器D8040内的数表示S0~S999中状态为1的最低的地址,D8041~D8047内的数依次代表其他各状态为1的地址;当M8047为0时,不论状态S0~S999中有多少个1,M8046始终为0,D8040~D8047内的数不变。S0手动操作初始状态。S1回原点初始状态。S2自动操作初始状态。9.4FX系列PLC功能指令 2.数据搜索指令数据搜索指令SER(DataSearch)的功能指令编号为FNC61,源操作数[S1·]可取KnX、KnY、KnM、KnS、T、C和D,[S2·]可取所有的数据格式,目标操作数[D·]可取KnY、KnM、KnS、T、C和D。使用数据搜索指令可以方便地查找一个指定的数据,[S1·]指定表的首地址,[S2·]指定检索值,[D·]用来存放搜索结果,n用来指定表的长度,即搜索的项目数,16位指令n=256,32位指令n=128。图9.81中X0为ON时,将D130~D138中的每一个值与D20中的内容相比较,结果存放在D30~D34这5个数据寄存器中,它们分别用来存放搜索到的符合值的个数、搜索到的第一个符合值在表中的序号(未找到为0)、搜索到的最后一个符合值在表中的序号(未找到为0)、表中最大数的序号以及表中最小数的序号。9.4FX系列PLC功能指令 3.凸轮顺控指令1)绝对值式凸轮顺控指令绝对值式凸轮顺控指令ABSD(AbsoluteDrum)的功能指令编号为FNC62,源操作数[S1·]可取KnX、KnY、KnM、KnS、T、C和D,[S2·]为C,目标操作数可取Y、M和S,1≤n≤64。ABSD指令用来产生一组对应于计数值变化的波形,输出点的个数由n指定。图9.82中,有4个输出点(n=4)用M0~M3来控制。对应于旋转台旋转一周期间,M0~M3的ON/OFF状态变化是受凸轮通过X1提供的角度位置脉冲(1°/脉冲)控制的。从D300开始的8个(2n=8)数据寄存器用来存放M0~M3的开通点(由OFF→ON)和关断点(由ON→OFF)的位置值。可用MOV指令将开通点数据存入D300~D307中的奇数单元,关断点数据存入偶数单元。如M0的开通点和关断点分别受D300和D301的控制,M1的开通点和关断点分别受D302和D303的控制。若X0为OFF,各输出点的状态不变,本指令只能使用一次。9.4FX系列PLC功能指令 图9.81数据搜索指令图9.82绝对值式凸轮顺控指令2)增量式凸轮顺控指令增量式凸轮顺控指令INCD(IncrementDrum)的功能指令编号为FNC63,源操作数和目标操作数与ABSD指令相同,只有16位运算,1≤n≤64,INCD指令只能用一次。INCD指令用来产生一组对应于计数值变化的波形。图9.83中,有4个输出点(n=4)用M0~M3来控制,它们的ON/OFF状态受凸轮提供的脉冲个数控制。从D300开始的4个(n=4)数据寄存器用来存放使M0~M3处于ON状态的脉冲个数,可用MOV指令将它写入D300~D303。图中D300~D303的值分别为20、40、30和10。9.4FX系列PLC功能指令 C0的当前值依次达到D300~D303中的设定值时自动复位,然后重新开始计数,C1用来计复位的次数,M0~M3按C1的值依次动作。由n指定的最后一段完成后,标志M8029置1,以后重复上述过程。若X0为OFF,C0和C1复位(当前值清零),同时M0~M3变为OFF,X0再为ON后重新开始运行。若X0为OFF,各输出点的状态不变。4.定时器指令1)示教定时器指令示教定时器指令TTMR(TeachingTimer)的功能指令编号为FNC64,目标操作数[D·]为D,n=0~2,只有16位运算。使用TTMR指令可以用一个按钮调整定时器的设定时间。图9.84中的示教定时器将按钮X10按下的时间乘以系数10n后作为定时器的预置值,按钮按下的时间由D301记录,该时间乘以10n后存入D300。设按钮按下的时间为t,存入D300的值为10n×t,即n=0时存入t,n=1时存入10t,n=2时存入100t。X10为OFF时,D301复位,D300保持不变9.4FX系列PLC功能指令 图9.83增量式凸轮顺控指令图9.84示教定时器指令2)特殊定时器指令特殊定时器指令STMR(SpecialTimer)的功能指令编号为FNC65,源操作数[S·]为T0~T199(100ms定时器),目标操作数[D·]可取Y、M和S,m=1~32767,只有16位运算。9.4FX系列PLC功能指令 STMR指令用来产生延时以断开定时器、单脉冲定时器和闪动定时器。M用来指定定时器的设定值,[D·]开始的为延时断开定时器,其次的为输入ON变为OFF后的单脉冲定时器,再次的是输入OFF变为ON后的单脉冲定时器,最后的是与前次状态相反的单脉冲定时器(后两种又称为闪动定时器)。图9.85中T10的设定值为10s(m=100),M0是延时断开定时器,M1是X0由ON变为OFF的单脉冲定时器,M2是X0由OFF变为ON的单脉冲定时器,M3和M2状态相反,是为闪动而设的。5.数据排序指令数据排序指令SORT(Sort)的功能指令编号为FNC69,源操作数和目标操作数为D。SORT指令将数据编号按指定的内容重新排列,该指令只能用一次。[S·]为排序表的首地址,m1为行号,m2为列号,指令将以n指定的列号将数据从小开始排列,结果存入以[D·]指定的为首地址的目标元件中,形成新的排序表。m1=1~32,m2=1~6,n=1~m2。图9.86中的X0由OFF→ON时,指令将要进行排序的数据按5行4列的方式排列,第一列为D100~D104,第二列为D105~D109,以此类推,然后按D15指定的列号(如3),则根据第3列的数据从小到大的顺序将各行重新排列,结果存入以D200为首地址的新表内。9.4FX系列PLC功能指令 图9.85特殊定时器指令图9.86数据排序指令9.4FX系列PLC功能指令 9.4.12外部I/O设备指令外部I/O设备指令的功能指令编号为FNC70~FNC79,包括10键输入指令、16键输入指令、数字开关输入指令、7段译码指令、带锁存的多路7段显示指令、方向开关指令、ASCⅡ码转换指令、打印指令和读/写特殊功能模块指令。1.数据输入指令1)10键输入指令10键输入指令TKY(TenKey)的功能指令编号为FNC70,源操作数[S·]可取X、Y、M和S,目标操作数[D1·]可取KnY、KnM、KnS、T、C、D、V和Z,[D2·]可取Y、M和S。本指令只能使用一次。图9.87中,[S·]指定输入元件,[D1·]指定存储元件,[D2·]指定读出元件。以X0作为首元件,10个键接在X0~X11上。如以(1)、(2)、(3)、(4)的顺序按下数字键1、0、3、2,则[D1·]中存入数据1032,如图9.87所示。如送入的数据大于9999,则高位溢出并丢失,数据以二进制形式存于D0。当使用(D)TKY指令时,D0和D1组合使用,输入的数据大于99999999时,高位数据溢出。9.4FX系列PLC功能指令 图9.88中还给出了与X0~X11对应的辅助继电器M10~M19的动作情况。当X1按下后,M11置1并保持至下一键X0按下。X0按下后M10置1并保持至下一个键按下,其他键也一样。任一键按下,键信号标志M20置1,直到该键释放。两个或更多的键按下时,最先按下的键有效。当X10变为OFF时,D0中的数据保持不变,但M10~M19全部变为OFF。图9.8710键输入接线图图9.8810键输入波形图9.4FX系列PLC功能指令 2)16键输入指令16键输入指令HKY(HexDecimalKey)的功能指令编号为FNC71,源操作数为X,目标操作数[D1·]为Y,[D2·]可取T、C、D、V和Z,[D3·]可取Y、M和S。本指令只能使用一次。HKY指令是使用16键键盘输入数字及功能信号的指令。其中[S·]指定输入元件,[D1·]指定4个扫描输出点,[D2·]指定键输入的存储元件,[D3·]指定读出元件,键盘与PLC的连接如图9.89所示。16个键采用矩阵连接,分4组和PLC输入口相连。指令中指定输入元件即是指定连接键盘的输入口,指定输出元件即是指定输出口用于扩展输入口的端口号,存储元件是指数字键输入数据的存储单元,读出元件为功能键相对应的内部辅助继电器。16键分为数字键和功能键。其中A~F键为功能键。HKY指令输入的数字0~9999以二进制数的方式存放在D0中,大于9999时溢出。(D)HKY指令可在D0和D1中存放数字0~99999999。按下任意一个数字键时,M7置1(不保持)。功能键A~F与M0~M5相对应,按下任意一个功能键时,M6置1(不保持)。当X4变为OFF时,D0保持不变,M0~M7全部为OFF。9.4FX系列PLC功能指令 按下A键,M0置1并保持,再按下D键,M0置0且M3置1并保持。其余类推。同时按下多个键时,先按下的有效。将M8167置ON,可输入十六进制数0~FH。HKY指令与PLC的扫描定时器同步工作,键扫描完成需要8个扫描周期,为防止键输入的滤波延迟造成的存储错误,一般使用恒定扫描方式及定时器中断处理。3)数字开关指令数字开关指令DSW(DigitalSwitch)的功能指令编号为FNC72,源操作数为X,目标操作数[D1·]为Y,[D2·]可取T,C,D,V和Z,只有16位运算,该指令可使用两次。该指令是用来读入1组或2组4位数字开关(BCD码)的设置值。[S·]用来指定选通输入点的首位元件号,[D1·]用来指定选通输出点的首位元件号,n用来指定开关的组数,n=1或2。每组开关由4个拨盘(BCD码数字开关)组成,与PLC的接线如图9.90所示。图9.90中第一组4位BCD码数字开关接到X10~X13,按Y10~Y13的顺序选通读入,数据以二进制数的形式存放在D0中。若n=2时,有两组数字开关,第二组数字开关将接到X14~X17,仍由Y10~Y13顺序选通读入,数据以二进制数的形式存放在D1中。第二组数据只有在n=2时才有效,当X1保持为ON时9.4FX系列PLC功能指令 ,Y10~Y13依次为ON,一个周期完成后,标志位M8029置1。当数字开关指令DSW在操作中被中止后再重新开始工作时,是从循环头开始而不是从中止处开始。图9.8916键输入接线图图9.90数字开关输入9.4FX系列PLC功能指令 如需连续读入数字开关的值,应使用晶体管输出型的PLC,如果不需要连续读入,也可以使用继电器输出型的PLC,如图9.91所示。图中用按钮输入和SET指令将M0置位,用M0驱动DSW指令,并用执行完毕标志M8029和复位指令将M0置位。2.数字译码输出指令1)7段译码指令7段译码指令SEGD(SevenSegmentDecoder)的功能指令编号为FNC73,源操作数可取所有的数据类型,目标操作数可取KnY,KnM,KnS,T,C,D,V和Z。只有16位运算。7段译码指令SEGD是驱动7段显示器的指令,可以显示1位16进制数据,如图9.92所示。[S·]存储待显示数据,该单元中低4位(只用低4位)所确定的16进制数(0~F)经译码后存于指定的元件[D·]中,[D·]的高8位保持不变。显示器的B0~B6分别对应于[D·]中的最低位(第0位)~第6位,某段亮时,[D·]中对应的位为1,反之为0。例如显示数字“2”时,B6、B4、B3、B1、B0均为1,而B5、B2为0,[D·]的值为5BH。9.4FX系列PLC功能指令 图9.91DSW指令图9.927段译码指令2)带锁存的7段显示指令带锁存的7段显示指令SEGL(SevenSegmentwithLatch)的功能指令编号为FNC74,源操作数可取所有的数据类型,目标操作数为Y,只有16位运算,n=0~7,该指令可使用两次。SEGL指令用12个扫描周期显示一组(n=0~3)或两组(n=4~7)4位数据,由[D·]的第2个4位为选通信号,顺序显示由[S·]经[D·]的第1个4位或[D·]的第3个4位输出的值。完成4位显示后标志M8029置1。PLC扫描周期应大于9.4FX系列PLC功能指令 10ms,若小于10ms,应使用恒定扫描方式。执行条件接通,指令反复执行,若执行条件变为OFF,停止执行。图9.93中使用一组输出(n=3),D0中的数据(二进制)转换为BCD码(0~9999)依次送到Y0~Y3。若使用两组输出(n=4~7),D0中的数据送到Y0~Y3,D1中的数据送到Y10~Y13,选通信号由Y4~Y7提供。图9.93带锁存的7段显示接线图9.4FX系列PLC功能指令 3)方向开关方向开关指令ARWS(ArrowSwitch)的功能指令编号为FNC75,源操作数为X、Y、M和S,目标操作数[D1·]可取T、C、D、V和Z,[D2·]为Y,只有16位运算。本指令只能使用一次,且必须使用晶体管输出型端口输出。ARWS指令用方向开关(4只按钮)来输入4位BCD码数据,输入的数据用带锁存的7段显示器来显示当前的置数值。[S·]指定位移位与各位数值增减用的箭头开关,[D1·]数值经[D2·]的第1个4位由[D2·]的第2个4位为选通信号,顺序显示。按位移位开关,顺序选择所要显示位;按位数值增减开关,[D1·]数值由0~9或9~0变化。n为0~3,选择选通位,其确定的方法与SEGL指令相同。图9.94中的D0存放的是16进制数,但为了方便,均以BCD码表示(0~9999)。X0刚接通时,指定的是最高位,每按一次右移键,指定位往右移动一位,按一次左移键时则往左移动一位,指定位可由接到选通信号(Y4~Y7)上的LED发光二极管来确认。指定位的数据用增加键和减少键来修改,修改的当前值用7段显示器监视写入的数据。9.4FX系列PLC功能指令 图9.94方向开关9.4FX系列PLC功能指令 9.4.13外部设备指令外部设备(SER)指令的功能指令编号为FNC80~FNC89,包括与串行通信有关的指令、模拟量功能扩展板处理指令和PID运算指令。1.与串行通信有关的指令1)串行通信指令串行通信指令RS(RS-232C)的功能指令编号为FNC80,源操作数和目标操作数为D,m和n(0~255)可取K、H和D,只有16位运算。RS指令是功能扩展板发送和接收串行数据的指令,用于对FX系列PLC的通信适配器FX-232ADP进行通信控制,实现PLC与外围设备间的数据传送和接收。如图9.95所示,该指令的[S·]指定发送缓冲区的首地址,m指定发送信息的长度,[D·]指定接收缓冲区的首地址,n指定接收数据长度,即接收信息的最大长度。数据的传送格式(如数据位数、奇偶校验、起始位、停止位、波特率、是否有调制解调器等)可用MOV指令和初始化脉冲写入串行通信用的特殊数据寄存器D8120。9.4FX系列PLC功能指令 2)八进制位传送指令八进制位传送指令PRUN的功能指令编号为FNC81,源操作数可取KnX,KnM,目标操作数可取KnY,KnM,n=1~8,指定元件号的最低位为0。PRUN指令用于八进制位传送,将[S·]转换为八进制,即元件号以八进制为单位,对应传送到[D·]中,如图9.96所示。图中的X30为ON时,将X0~X7→M0~M7,X10~X17→M10~M17;X2为ON时,将M0~M7→Y0~Y7,M10~M17→Y10~Y17。图9.95RS指令图9.96PRUN指令9.4FX系列PLC功能指令 3)HEX向ASCⅡ码转换指令HEX向ASCⅡ码转换指令ASCI的功能指令编号为FNC82,源操作数可取所有的数据类型,目标操作数可取KnY、KnM、KnS、T、C和D,只有16位运算。ASCI指令将[S·]内HEX(十六进制)数据的各位转换成ASCⅡ码向[D·]的高低各8位传送(16位模式)。传送的字符数由n指定,n=1~256。图9.97(a)中的M8161在运行时一直为OFF,此时为16位模式,每四个HEX占一个数据寄存器,转换后每两个ASCⅡ码占一个数据寄存器。设D100中存放的是0ABCH,X10为ON时,指令将D100中的0ABCH转换为对应的四个ASCⅡ码,存入D200和D201,0H对应的ASCⅡ码30H存入D200的低位字节,CH对应的ASCⅡ码存入D201的高位字节。图9.97(b)中的M8161在运行时一直ON,此时为8位模式,[S·]中的HEX数据被转换为ASCⅡ码,传送给[D·]的低8位,其高8位为0,0H对应的ASCⅡ码30H存入D200的低位字节,CH对应的ASCⅡ码43H存入D203的低位字节。9.4FX系列PLC功能指令 4)ASCⅡ向HEX转换指令ASCⅡ向HEX转换指令HEX的功能指令编号为FNC83,源操作数为K、H、KnX、KnY、KnM、KnS、T、C和D,目标操作数为KnY、KnM、KnS、T、C、D、V和Z,只有16位运算。HEX指令是将[S·]内高低各8位的ASCⅡ字符码转换成HEX数据,每四位向[D·]传送(16位模式)。传送的字符数由n指定,n=1~256。图9.98(a)为16位模式,每四个ASCⅡ码转换后占一个数据寄存器。图中n=8,若D200~D203中存放的是0ABC1234H对应的ASCⅡ码字符30H、41H、42H、43H、31H、32H、33H、34H,转换后的1234H存放在D100中,0ABCH存放在D101中,其中的4H放在D100的低4位。图9.98(b)为8位模式,每个ASCⅡ码占一个数据寄存器,设D200~D207中存放的是0ABC1234H对应的ASCⅡ码字符,转换后的十六进制数的存放方式与16位模式时相同。9.4FX系列PLC功能指令 图9.97HEX→ASCⅡ码转换指令图9.98ASCⅡ→HEX转换指令9.4FX系列PLC功能指令 5)校验码指令校验码指令CCD(CheckCode)的功能指令编号为FNC84,源操作数可取KnX、KnY、KnM、KnS、T、C和D,目标操作数可取KnM、KnS、T、C和D,n可取K、H和D,n=1~256,只有16位运算。CCD指令用于通信数据的校验。图9.99(a)为16位模式,该指令将[S·]指定的D100~D104中10个字节的8位二进制数据进行求和以及异或,和的BCD码与异或的结果分别送到[D·]指定的D0和D1,通信时可将和与异或的结果随同数据发送出去,对方收到后对数据也求和与异或,并判别接收到的和与异或的结果是否等于求出的,如不等,则说明数据传送出了错误。图9.99(b)为8位模式,CCD指令将[S·]指定的D100~D109中10个数据寄存器低8位的数据进行求和并异或,结果送到[D·]指定的D0和D1。2.FX-8AV模拟量功能扩展板处理指令1)FX-8AV模拟量功能扩展板读出指令读模拟量功能扩展板指令VRRD(VariableResistorRead)的功能指令编号为FNC85,源操作数可取K、H,[S·]用来指定模拟量的编号,取值范围为0~7,目标操作数可取KnY、KnM、KnS、T、C、D、V和Z,只有16位运算。9.4FX系列PLC功能指令 FX2N-8AV-BD是内置式8位8路模拟量功能扩展板,板上有8个小型电位器,用VRRD指令读出的数据与电位器的角度成正比。VRRD指令是将[S·]指定的模拟量设定模板的模拟值0~255转换为BIN8位传送到[D·]。图9.100中的X0为ON时,读出0号模拟量的值,送到D0后作为定时器T0的设定值。图9.99校验码指令图9.100VRRD指令9.4FX系列PLC功能指令 2)FX-8AV模拟量功能扩展板开关设定指令模拟量功能扩展板开关设定指令VRSC(VariableResistorScale)的功能指令编号为FNC86,源操作数和目标操作数类型与模拟量功能扩展板读出指令相同,[S·]指定模拟量的编号,取值范围为0~7,只有16位运算。VRSC指令是将[S·]指定的开关刻度0~10转换为BIN8位传送到[D·]。图9.101用模拟开关的输出值和解码指令DECO来控制M0~M10,用户可以根据模拟开关的刻度0~10来分别控制M0~M10的ON/OFF。3.PID回路运算指令PID(比例微分积分)回路运算指令的功能编号为FNC88,源操作数[S1]、[S2]、[S3]和目标操作数均为D,只有16位运算。[S1]和[S2]分别用来存放给定值和当前测量到的反馈值,[S3]~[S3]+6用来存放控制参数的值,运算结果存放在[D]中。源操作数[S3]占用从[S3]开始的25个数据寄存器。[S3]~[S3]+6分别用来存放采样周期、动作方向、输入滤波常数、比例增益、积分时间、微分增益和微分时间。[S3]+7~[S3]+19被PID指令占用,[S3]+20~[S3]+23用于存放输入、输出变化量增加、减少的报警设定值,[S3]+24的0~3位用于报警输出。9.4FX系列PLC功能指令 PID指令用于闭环模拟量控制,在PID控制开始之前,应使用MOV指令将参数设定值预先写入寄存器中。PID指令可以在定时中断、子程序、步进梯形指令区和转移指令中使用,但是在执行PID指令之前应使用脉冲执行的MOV指令将[S3]+7清0。如图9.102所示。图9.101VRSC指令图9.102PID指令控制参数的设定和PID运算中的数据出现错误时,“运算错误”标志M8067为ON,错误代码存放在D8067中。9.4FX系列PLC功能指令 思考题与习题9-1在选购PLC时,应主要注意哪些技术问题?9-2请说明FX2N-16MR的含义。9-3根据图9.103的梯形图程序写出其指令表程序。图9.103题9-3的图 9-4根据图9.104的梯形图程序画出Y1的时序图。9-5用栈操作指令写出图9.105的指令表程序。9-6用PLS指令设计梯形图程序,使M1在X6的下降沿ON一个扫描周期。试编写其梯形图。9-7用置位、复位及边沿检测触点指令设计满足图9.106所示时序的梯形图程序。9-8按下按钮X0后,Y0接通并保持,15s后Y0自动断开,试编写其梯形图。9-9按下按钮X1后,Y0接通并保持,5s后Y1接通,按下按钮X0后,Y0、Y1同时断开,试编写其梯形图。思考题与习题 图9.104题9-4的图图9.105题9-5的图思考题与习题 图9.106题9-7的图思考题与习题 9-10用光电开关检测传送带上通过的产品数量,有产品通过时信号灯亮并计数;如果10s内没有产品通过则发出报警信号,报警信号只能手动解除,试编写其梯形图。9-11用CMP指令实现下面功能:X0为脉冲输入,当脉冲数大于5时,Y1为ON;反之,Y0为ON。试编写其梯形图。9-12当X1为ON时,用定时器中断,每99ms将Y0~Y3组成的位元件组K1Y0加1,设计主程序和中断子程序。9-13用X10控制接在Y0~Y17上的16个彩灯移位,每0.5s移1位,用MOV指令将彩灯的初值设定为十六进制数000CH,试编写其梯形图。9-14把A/D转换得到的8个12位二进制数据存放在D0~D7中,A/D转换得到的数值0~4095对应温度值0~1000℃,分别用循环指令和MEAN指令求A/D转换的平均值,并将它转换为对应的温度值,存放在D12中,试编写其梯形图。9-15用时钟运算指令控制路灯的定时接通和断开,20:00时开灯,06:00时关灯,试编写其梯形图。思考题与习题

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
大家都在看
近期热门
关闭