特殊指令是用途比较特别的一类指令,如进位标志R9009的置位和复位操作、部分I/O的立即刷新、串行口通信、打印输出、自诊断错误代码设定、信息显示的处理等,主要包括F137(STMR)、F138(HMSS)、F139(SHMS)、F140(STC)、F141(CLC)、F143(IORF)、F144(TRNS)、F147(PR)、F148(ERR)、F149(MSG)、F157(CADD)和F158(CSUB),如表3-119所示。
表3-119 特殊指令
1.F137(STMR)
该指令是辅助定时器指令,工作时以0.01s为单位进行定时(定时范围0.01~327.67s)。可作为普通定时器的补充。一般的PLC定时器都是以0.1s为单位进行定时,若有分辨率更高的定时控制要求,通常就采用辅助定时器来实现,在FP1系列的PLC中可用TMR来代替。F137功能是经过设定值×0.01s后,将特殊内部继电器R900D置为1(ON),指令格式及操作数范围如表3-120所示。
表3-120 指令格式及操作数范围
当触发信号使X0接通5s时,R900D被置为1(ON)。若在定时过程中或定时时间到时触发信号使X0断开,当前值存储单元DTD被复位为0,R900D被复位为0(OFF)。
在FP1系列PLC中C14型、C16型、C24型和C40型PLC不支持本条指令,其余的C256型和C72型都支持,这点需要注意。
2.F138(HMSS)
该指令是将时、分、秒数据转换为秒数据的指令,其功能是将S指定的两个存储单元中的时、分、秒数据转换为秒数据,结果存储在D指定的两个连续的存储单元中,指令格式及操作数范围如表3-121所示。
表3-121 指令格式及操作数范围
如图3-91所示,当触发信号使X0接通时,该指令将DT2中的小时数据(12h)、DT1中高8位的分数据(56min)及低8位中的秒数据(49s)一起转换为秒数据(46609s),结果存储在WR2和WR1中,数据都采用BCD码数的形式。被转换的最大数据是9999h59min59s,相应的秒数据为35999999s。
图3-91 指令的执行结果
在FP1系列PLC中的C14型和C16型PLC不支持本条指令,其余的C24型、C40型、C56型和C72型都支持,这点需要注意。
3.F139(SHMS)
该指令是将秒数据转换为时、分、秒数据的指令,就是将S指定的两个存储单元中的秒数据转换为时、分、秒数据,结果存储在D指定的两个连续的存储单元中,指令格式及操作数范围如表3-122所示。
表3-122 指令格式及操作数范围
如图3-92所示,当触发信号使X0接通时,该指令将DT2和DT1中的秒数据(85076s)转换为时、分、秒数据,小时数据(23h)存放在WR2中,分数据(37min)及秒数据(56s)分别存放在WR1的高8位和低8位中,数据都采用BCD码数的形式。被转换的最大数据是35999999s,相应的时间为9999h59min59s。
图3-92 指令的执行结果
在FP1系列PLC中的C14型和C16型PLC不支持本条指令,其余的C24型、C40型、C356型和C72型都支持,应当注意。
4.F140(STC)
该指令是进位标志的置位指令,其功能是将进位标志继电器R9009置1(ON),指令格式及操作数范围如表3-123所示。
表3-123 指令格式及操作数范围
当触发信号使X0接通时,进位标志继电器R9009被置为1(ON)。
在FP1系列PLC中的C14型和C16型PLC不支持本条指令,其余的C24型、C40型、C56型和C72型都支持,应当注意。
5.F141(CLC)
该指令是进位标志的复位指令,其功能是将进位标志继电器R9009置0(OFF),指令格式及操作数范围如表3-124所示。
表3-124 指令格式及操作数范围
当触发信号使X0接通时,进位标志继电器R9009被复位为0(OFF)。
在FP1系列PLC中的C14型和C16型PLC不支持本条指令,其余的C24型、C40型、C56型和C72型都支持,应当注意。
6.F143(IORF)
该指令是部分I/O的立即刷新指令。PLC在循环扫描的工作过程中,只有在输入扫描和输出刷新阶段才进行I/O刷新,在执行程序时不处理I/O刷新任务。利用I/O刷新指令F143(IORF),即使在执行程序阶段,也可将指定的输入/输出继电器立即刷新,实现无滞后(由扫描时间造成的)地刷新输入或输出,指令格式及操作数范围如表3-125所示。
表3-125 指令格式及操作数范围
当触发信号使X0接通时,D1和D2指定的WY0~WY1被立即刷新。使用时要保证D1和D2是同一类型的操作数,并且D1≤D2。
7.F144(TRNS)
该指令是串行数据通信指令,其功能是将以S为起始地址的n个字节的数据寄存器中的数据从RS-232C串行通信端口发送出去,指令格式及操作数范围如表3-126所示。
表3-126 指令格式及操作数范围
该指令一般用于实现PLC与带有串行端口的计算机、条形码阅读器或智能仪表之间的通信。(www.xing528.com)
当触发信号使X0接通时,从DT1开始的20个字节(10个存储单元)的数据(即DT1~DT10)通过PLC的串行通信端口发送出去,并将特殊内部继电器R9038复位为0(OFF),使PLC处于接收操作的准备状态(可以接收的状态)。
(1)数据的发送
发送数据时,通信端口自动在数据的开始和末尾分别加上起始符和结束符,具体的规定在系统寄存器413中进行设置,起始符可设定为有STX和无ST7,结束符可设定为CR、CR+LF、ETX或无结束符,同时在系统寄存器413中还可设定单帧数据长度(7位或8位)、校验方式(奇校验、偶校验或无校验)和停止位(1位或2位),在系统寄存器414中可设定通信速率(300bit/s、600bit/s、1200bit/s、2400bit/s、4800bit/s、9600bit/s或19200bit/s)。对系统寄存器的设置一般可采用手持编程器或编程软件来完成,通常采用默认设置即可。
(2)数据的接收
当特殊内部继电器R9038为0(OFF)时,才能进行数据接收的操作。接收前要先在系统寄存器417中设置接收缓冲区的起始地址。在系统寄存器418中设置接收缓冲区的容量(存储单元数),范围与起始地址的设置一样,注意要避免发送缓冲区和接收缓冲区的地址发生重叠。
在接收和存储数据时,接收到的字节数存储在接收缓冲区的首单元,从外设传送来的数据存放在接收缓冲区第2个单元开始的区域中。起始符和结束符尽管被作为数据接收,但并不存储到接收缓冲区。在接收到由系统寄存器413中设置的结束符时,R9038被置为1,完成一次接收过程。当要进行一次新的接收,需将R9038复位为0(可通过执行F144指令完成)。
8.F147(PR)
该指令是并行打印指令,其功能是将从S开始的6个存储单元中的12个ASCII码数字符输出到由D指定的WY中,本指令只适用于晶体管输出型的PLC,指令格式及操作数范围如表3-127所示。
表3-127 指令格式及操作数范围
在具体应用中,打印机的控制码必须设置为被打印数据的最后一个字,ASCII码字符从低地址开始顺序输出。若输出的数据不是ASCII码形式,可采用相应的数据转换指令将其从二进制、BCD码、十六进制或字符常数转换成ASCII码形式。ASCII码字符为8位二进制,对应由Y0~Y7输出,加上打印机的一位选通信号,只需占用一个字单元中的9个输出继电器。
在表3-127中,当X0接通时,从DT1开始的6个单元(DT1~DT6)中的12个ASCII码字符依次由WY0输出,每输出一个ASCII码字符需要3个扫描周期,输出所有的数据要用37个扫描周期(第一个为空周期),指令执行时打印输出标志继电器R9033被置为1(ON)。
在FP1系列PLC中C14型和C16型PLC不支持本条指令,C24型、C40型、C56型和C72型只有晶体管输出型支持,应当注意。
9.F148(ERR)
F148(ERR)是自诊断错误设置指令,其功能是将某一类自定义的错误类型存放到DT9000中,将R9000置为1(ON),并使出错指示灯(ERRORLED)闪烁,具体情况由n确定。指令格式及操作数范围如表3-128所示。
当n=0时,执行F148(ERR)指令将清除43号及其以上的自诊断错误,R9000、R9005~R9008被复位为0(OFF),DT9000、DT9007和DT9008被清0。
表3-128 指令格式及操作数范围
100≤n≤299时,执行F148(ERR)指令将R9000置为1(ON),n所设定的自诊断错误代码被传送到DT9000中,出错指示灯闪烁,PLC的程序停止执行。
在表3-128中,当X0接通时,PLC认为出现了自诊断错误,出错指示灯闪烁,R9000被置为1(ON),自诊断错误代码K100被传送到DT9000中,PLC的程序停止执行。
在FP1系列PLC中的C14型和C16型PLC不支持本条指令,C24型、C40型、C56型和C72型都支持,应当注意。
10.F149(MSG)
F149(MSG)是信息显示指令,其功能是在编程工具(手持编程器)中显示S设定的字符常数,指令格式及操作数范围如表3-129所示。
表3-129 指令格式及操作数范围
当X0闭合时,与PLC相连的编程器上显示预先设定的字符串PROGRAMEND。
S设定的字符常数存储在DT9030~DT9035中,以M作为开始,但只能用编程软件输入。要在编程器上显示该信息,必须按编程器上的ACLR键,将编程器设置为初始状态。
在FP1系列PLC中的C14型和C16型PLC不支持本条指令,C24型、C40型、C56型和C72型都支持,应当注意。
11.F157(CADD)
该指令是对时间数据进行求和的指令,其功能是将S1指定的3个存储单元中的日期数据(年、月、日)及时刻数据(时、分、秒)与S2指定的两个存储单元中的时刻数据(时、分、秒)相加,结果存储在D指定的3个连续的存储单元中,指令格式及操作数范围如表3-130所示。
如图3-93所示,当触发信号使X0接通时,该指令将DT9056中的年、月数据(92年6月),DT9055中的日、时的数据(17日10时),DT9054中分、秒的数据(30分24秒)与DT11和DT10中的时、分、秒的数据(20时45分35秒)相加,结果(92年6月18日7时15分59秒)
表3-130 指令格式及操作数范围
图3-93 指令的执行结果
存储在DT22、DT21和DT20中,数据都采用BCD码数的形式。指令中年的数据范围是00~99,月的数据范围是00~12,日的数据范围是00~31,时的数据范围是00~23,分和秒的数据范围都是00~59。
在FP1系列PLC中的C14型和C16型PLC不支持本条指令,其余的C24型、C40型、C56型和C72型都支持,应当注意。
12.F158(CSUB)
该指令是对时间数据进行求差的指令,其功能是将S1指定的3个存储单元中的日期数据(年、月、日)及时刻数据(时、分、秒)与S2指定的两个存储单元中的时刻数据(时、分、秒)相减,结果存储在D指定的3个连续的存储单元中,指令格式及操作数范围如表3-131所示。
在图3-94中,当触发信号使X0接通时,该指令将DT9056中的年、月数据(1992年6月),DT9055中的日、时数据(17日10时),DT9054中分、秒数据(30分24秒)与DT1 1和DT10中的时、分、秒数据(3时30分30秒)相减,结果(1992年6月17日6时59分54秒)存储在DT22、DT21和DT20中,数据都采用BCD码数的形式。指令中年的数据范围是00~99,月的数据范围是00~12,日的数据范围是00~31,时的数据范围是00~23,分和秒的数据范围都是00~59。
表3-131 指令格式及操作数范围
图3-94 指令的执行结果
在FP1系列PLC中的C14型和C16型PLC不支持本条指令,其余的C24型、C40型、C56型和C72型都支持,应当注意。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。