在使用三菱特殊功能模块时,CPU除了为模块分配输入输出地址(输入X和输出Y)外,还在模块内存中为模块分配了一块数据缓冲区(BFM)来做为和CPU通讯之用。如下所示为高速计数器模块A1SD62的输入输出地址和缓冲区的地址及含义:
图1 A1SD62的输入信号
图2 A1SD62的输出信号
图3 A1SD62的缓冲区定义
注:模块的输入输出为占32位,其具体定义和模块在基板的位置有关,表中定义的X00~X1F及Y00~Y1F是模块占用第一个模块位置时的定义,而缓冲区的地址则可以在指令使用。
三菱有专门两条指令实现对模块缓冲区BFM的读写,即:TO指令和FROM指令,其它指令都是这两个指令的变形,如:DTO表示32位操作指令(无D时,表示16位操作指令),TOP表示在控制命令的上升沿时执行对BFM的写入,可以根据实际情况分别使用,FROM也同样。下面对这两种指令的使用方法做一下简要介绍。
1、FROM指令(FNC78)
FROM指令的功能是实现对特殊模块缓冲区BFM指定位的读取操作。指令格式如下:
指令中各软元件、操作数代表的意义如下:
CC:FROM指令执行的启动条件。启动指令可以是X、Y、内部继电器M等。
Kn1:模块地址的高位,K代表模块地址的高位用十进制数表示,也可以用十进制数来表示。如:当高速计数器模块A1SD62的输入输出地址分别是XA0F~XB1F及YA0F~YB1F时,此值可以是K10,也可以是HA。实际上此值是指定特殊模块在基板上的位置,在实际设置时,也可按每个位置为16点来计算得到此值(如一个模块占32点则为两个位置)。
Kn2:为要读取的缓冲区的地址,可以是十进制数(以K打头),也可以是十六进制数(以H打头)。此地址只和模块有关,和模块在基板的位置无关。
Kn3Mn4:读取的数据在PLC CPU中的存储地址(目标地址)。
Kn3代表从特殊模块BFM读取的二进制的位数,以4位(bit)为单位,n3允许值为1~8。如:K4代表16位(bit)。
Mn4代表数据在PLC存储区域的首地址。M代表中间继电器,表示读取的数据存储于中间继电器。存储位置也可以是数据寄存器(常用),此时就不需要前缀Kn3了。
Kn5:需要传送的点数。采用FROM、FROMP格式时,以16位二进制为单位,K1代表读取16点,K2代表32点等。采用DFROM、DFROMP格式时,以32位二进制为单位,K1代表读取32点,K2代表64点等。n5的范围为1~32767。
举例:
说明:
0行:当X0=1时,读取1号(第1个K1)模块缓冲区地址29(K29)的数据保存到M0~M15的16点(K4)中间继电器中。
10行:在X0的上升沿,读取1号(第1个K1)模块缓冲区地址29(K29)的数据保存到M0~M15的16点(K4)中间继电器中。
20行:当X0=1时,读取1号(第1个K1)模块缓冲区地址29(K29)的数据保存到寄存器D0中。
30行:当X0=1时,读取1号(第1个K1)模块缓冲区地址29(K29)和30中的数据保存到寄存器D0和D1中。
40行:当X0=1时,读取1号(第1个K1)模块缓冲区地址29(K29)和30中的数据保存到寄存器D0和D1中。
50行:当X0=1时,读取1号(第1个K1)模块缓冲区地址29(K29)~32中的数据保存到寄存器D0~D3中。
60行:当X0=1时,读取第10个模块缓冲区H160,H161的数据到X700~X711中。
2、TO指令(FNC79)
TO指令是将PLC中的数据写入到特殊模块的缓冲区内。其指令格式如下:
指令中各软元件、操作数代表的意义如下:
(D)TO(P):指令代码,其中D代表32位操作指令,P代表触点上升沿触发TO指令。
Kn1:同FROM指令。
Kn2:要写入数据的模块缓冲区地址(目标地址)。
Kn3Mn4:源数据在PLC中的存储地址。Kn3代表需要写入的二进制位数,以4位(bit)为单位,如K4代表16位,允许输入的值为K1~K8。Mn4代表源数据在PLC中的存储地址。源数据也可以是16位数据寄存器D(常用),此时就不需要前缀Kn3了。
Kn5: 需要传送的点数。允许的值为K1~K32767。
举例:
含义:在X0的上升沿,把D120中的数据写入到第8个模块地址为6的缓冲区中 。