1.3.2 字软元件
在1.2.2节里,介绍了PLC除了能处理开关量,还能处理数据量,数据量是由多个开关量所组成的存储单元整体。不同的PLC对这个存储单元整体有不同的存储结构。在三菱FX系列中,这个存储整体就是软元件数据寄存器。数据寄存器结构统一为一个16位寄存器,即进行数值处理的是一个16位整体的数据。这个16位的数据量通常称为“字”,也称为字元件。如果一个“字”的数据量所表示的数值和数据的精度不能满足控制要求时,可以采用两个相邻的16位寄存器组成“双字”进行扩展。关于“字”“双字”等相关知识请参看1.2.2节。
数据寄存器又分为数据寄存器D,文件寄存器R,扩展文件寄存器ER和变址寄存器V、Z。
1.数据寄存器D
数据寄存器D分为非保持用、停电保持用的通用型数据寄存器和文件寄存器,特殊数据寄存器,变址寄存器。其编址如表1-10所示。
表1-10 数据寄存器编址
注:①根据设定的参数,可以将D1000以后的数据寄存器以500点为单位作为文件寄存器。
②选择的电池使用时,可通过参数变为停电保持(电池保持),但是不能设定停电保持范围。
③非停电保持区域,根据设定的参数,可以更改为停电保持区域。
④停电保持区域,根据设定的参数,可以更改为非停电保持区域。
⑤关于停电保持的特性不能更改。
1)一般用数据寄存器
一般用数据寄存器的存储特点是“一旦写入,长期保持,存新除旧,断电归零”。数据寄存器一般是用指令或编程工具等外部设备写入数据,写入后内容长期保存,但一旦存入新的数据,原有的数据就自动消失,因此在程序中可以反复进行读写。当PLC断电或停止运行(由RUN→STOP)时,数据寄存器马上清零。
2)停电保持用数据寄存器
数据寄存器D的停电保持型与固定停电保持型的含义与辅助继电器M相同,不再进行介绍。
3)特殊数据寄存器
特殊寄存器用来存放一些特定的数据。例如,PLC状态信息、时钟数据、错误信息、功能指令数据存储、变址寄存器当前值等。按照其使用功能可分为两种,一种是只读寄存器,用户只能读取其内容,不能改写其内容,例如,可以从D8067中读出错误代码,找出错误原因,从D8005中读取锂电池电压值等;另一种是可以进行读写的特殊寄存器,用户可以对其进行读写操作,例如,D8000进行监视扫描时间的数据存储,出厂值为200ms,如果程序运行一个扫描周期时间大于200ms,可以修改D8000的设定值,使程序扫描时间延长。同样,只读存储器在附录特殊软元件一览表中,用[D]表示。
特殊数据寄存器的编号在很多情况下与特殊辅助继电器有对应关系,例如,M8066在用户程序发生回路错误时为ON,而D8066则为该错误的错误代码寄存器。
特殊数据寄存器有许多编号未定义或没有使用,这些编号对应的特殊数据寄存器也不能使用。
4)文件寄存器D1000~D7999
什么是文件寄存器?文件寄存器实际上是一类专用数据寄存器,用于存储大量的PLC应用程序需要用到的数据,例如,采集数据、统计计算数据、产品标准数据、数表、多组控制参数等。FX系列PLC是从数据寄存器D中专门取出一块区域(D1000以后)用作文件寄存器。按每500个D为一块进行分配,最多为14块(7000个D)。当然,如果这些区域的数据寄存器D不用作文件寄存器,仍然可当作一般寄存器使用。
2.文件寄存器R和扩展文件寄存器ER
文件寄存器R是对数据寄存器D的扩展,而扩展文件寄存器ER是在PLC系统中使用扩展的存储器盒时才可以使用的软元件,它们的使用性能如表1-11所示。
文件寄存器R是一个16位的数据存储器,使用相邻的两个文件寄存器可以组成32位数据寄存器。
文件寄存器R的使用与数据寄存器相同,但扩展文件寄存器ER有专门的指令对它操作。
表1-11 数据寄存器R、ER的使用性能
3.变址寄存器V、Z
三菱FX有两个特别的数据寄存器,它们称为变址寄存器V和Z,寄存器V和Z各8个,即V0~V7和Z0~Z7,共16点。V0和Z0也可用V和Z表示。它们和通用数据寄存器一样可以用作数值存储,但主要是用作运算操作数地址的修改。利用V、Z来进行地址修改的寻址方式称为变址寻址。因此,变址寄存器是有着特殊用途的数据寄存器。
关于变址寻址和变址寄存器V、Z在变址寻址中的应用见1.4.2节变址寻址。
4.组合位元件Kn
位元件X,Y,M,S是只有两种状态的软元件,而字元件是以16位寄存器为存储单元的处理数据的软元件。但是字元件也是由只有两种状态的bit位组成的。如果把位元件进行组合,例如,用16个M元件组成一组位元件,并规定M元件的两种状态分别为“1”和“0”,“1”表示通,“0”表示断,这样由16个M元件组成的16位二进制数则也可以看成是一个“字”元件。那么K4M0的16个M软元件,可表示为M15~M0,规定其顺序为M15,M14,…,M0,则如果其通断状况为0000 0100 1100 0101(M0,M2,M6,M7,M10为通;其余皆断),这也是一个十六进制数H04D5。这样就把位元件和字元件联系起来了。这种由连续编址的位元件所组成的一组位元件称为位元件组合。
在位元件组合中,如果对它的组合设置条件,规定组合的组数、位数等,则把这种按一定条件的位元件组合称为组合位元件。
三菱FX系列对组合位元件做了如下一系列规定。
(1)组合元件的助记符是:
Kn+组件起始号
其中:n表示组数,起始号为组件最低编号。
(2)组合位元件的位组规定4位为一组,表示四位二进制数,多于一组以4的倍数增加,例如:
K1X0表示1组4位组合位元件X3~X0。这是一个组合“数位”。
K2Y0表示2组8位组合位元件Y7~Y0。这是一个组合“字”。
K8M10表示8组32位组合位元件M41~M10。这是一个组合“双字”。
(3)按照规定,三菱FX系列组合位元件的类型有KnX、KnY、KnM和KnS四种,这四种组合位元件均按照字元件进行处理。
(4)组件的起始地址没有特别的限制,一般可自由指定,但对于位元件X,Y来说,它们的编址是八进制的,因此,起始地址最好设定为尾数为0的编址,例如,X000,X010,Y000,Y010等。同时还应注意,由于X,Y的数量是有限的,设定的组数不要超过实际应用范围。对于M,S位元件,为了避免引起混乱,建议把起始地址设定为M0,M10,M20等。
(5)组合位元件在使用时统一规定位元件状态ON为“1”,OFF为“0”。
(6)组合位元件在与数据寄存器进行数据处理时,因为数值处理是分16位和32位进行的,所以组合位元件会有位数不够和位数超过的问题。
当组合位元件向数据寄存器传送时,如果组合位元件位数不够,则传送后,数据寄存器的高位自动为0。例如,当K2M0向D0传送时,K2M0是8位,D0是16位,则K2M0向D0的低8位(b7~b0)传送,而D0的高8位自动为0;反过来,D0向K2M0传送时,D0有16位,K2M0是8位,则D0的低8位向K2M0传送,而D0的高8位则不传送。当组合位元件的位数多于16位或32位时,指令不能输入。
在指令中,组合位元件是一个字元件操作数,既可为源操作数,也可为目的操作数。在软元件中,组合位元件是唯一把位元件和字元件紧密联系在一起的操作数。因此,组合位元件给编程带来了很大方便。
【例4】试说明如图1-19程序行执行功能。
图1-19 例4程序
程序的功能是利用一个二进制数来控制输出Y的状态。K25=B0000 0000 0001 1001,二进制位为“1”的对应的Y有输出,即Y0,Y3,Y4同时有输出,其余均无输出。通过本例可以看出,如果想控制相应的输出,只要把K4Y000变成一个字,再用这个字去控制即可,程序简单方便。
【例5】试分析下面程序的执行结果。
图1-20 例5程序
该程序执行结果是把D0的低8位送到D11的低8位,把D0的高8位送到D12的低8位。在数据处理上,这叫作字的字节分离。利用类似程序,也可以进行数位分离。