u 功能描述
该功能模块将一定数量的输入数据复制到相同存储空间的输出数据中。
u 图标调用
在LD中的表示形式:
在FBD中的表示形式:
在IL中的表示形式:
CAL BLKMOV (IN:=Input, N:=Number, OUT=>Output)
在ST中的表示形式:
BLKMOV (IN:=Input, N:=Number, OUT=>Output);
u 参数说明
图示 | 参数 | 描述 | 数据类型 | 测点类型 |
IN | Input | 被复制的源数据 | BOOL、BYTE、WORD、DWORD、SINT、INT、DINT、REAL、USINT、UINT、UDINT | 常数、I、Q、IW、QW、M、MW、N、NW、S、SW、变量 |
N | Number | 复制数据的数量,以输入数据的类型为单位。 | BYTE、WORD、DWORD、SINT、INT、DINT、USINT、UINT、UDINT | 常数、IW、QW、MW、NW、SW、变量 |
OUT | Output | 数据输出的测点,数据被复制后保存在该测点中。 | BOOL、BYTE、WORD、DWORD、SINT、INT、DINT、REAL、USINT、UINT、UDINT | M、MW、N、NW、变量 |
例:
1、整型数批量移动
说明:上图中,当%M0001=1时,以%MW0001为起始地址的连续8个字寄存器数值批量复制到以%NW0001为起始地址的连续8个字寄存器里面。
寄存器 | 数值 |
| 寄存器 | 数值 |
%MW0001 | 10 | %NW0001 | 10 | |
%MW0002 | 20 | %NW0002 | 20 | |
%MW0003 | 30 | %NW0003 | 30 | |
%MW0004 | 40 | %NW0004 | 40 | |
%MW0005 | 50 | %NW0005 | 50 | |
%MW0006 | 60 | %NW0006 | 60 | |
%MW0007 | 70 | %NW0007 | 70 | |
%MW0008 | 80 | %NW0008 | 80 |
2、位状态批量移动到字寄存器
说明:上图中,当%I0001=1时,以%M0001为起始地址的连续16个位寄存器数值批量复制到以%MW0001为起始地址的连续N个字寄存器里面。如果移动位的个数为32个,那么就占用两个字寄存器,即%MW0001存前16个位,%MW0002存后16个位。
寄存器 | 数值 |
| 寄存器 | 数值 |
%M0001 | 1 | %MW0001 | 7 | |
%M0002 | 1 | %MW0002 | 0 | |
%M0003 | 1 | %MW0003 | 0 | |
%M0004 | 0 | %MW0004 | 0 | |
%M0005 | 0 | %MW0005 | 0 | |
%M0006 | 0 | %MW0006 | 0 | |
%M0007 | 0 | %MW0007 | 0 | |
%M0008 | 0 | %MW0008 | 0 |
3、字状态批量移动到位寄存器
说明:上图中,当%I0001=1时,%MW0001寄存器数值批量复制到以%M0001为起始地址的连续16个位寄存器里面。如果移动位的个数为2个,那么就占用32个位寄存器,即%M0001~%M0016存前16个位(%MW0001的数值),%M0017~%M0032存后16个位(%MW0002的数值)。
寄存器 | 数值 |
| 寄存器 | 数值 |
%MW0001 | 7 | %M0001 | 1 | |
%M0002 | 1 | |||
%M0003 | 1 | |||
%M0004 | 0 | |||
%M0005 | 0 | |||
%M0006 | 0 | |||
%M0007 | 0 | |||
%M0008 | 0 |
4、修改SW1-SW6系统时钟
说明:上图中,使用BLKMOVE功能块,写入%O1寄存器(此寄存器即为%SW1~%SW6,共6个字,系统时间寄存器)的值,输入端IN可用%MW、%NW、%V寄存器,每个寄存器独立存储年、月、日、时、分、秒,请注意数据范围,如果有数据范围不对的,写入将不成功,比如月超过12,小时超过24等。
5、读取SOE事件
说明:上图中,使用BLKMOV功能块,读SOE模块产生的SOE事件,每个CPU最大可以存储256个SOE事件,对应%E[0]~%E[255],N读取事件的个数。每个SOE事件,占用16个字节,具体格式见下表:
SOE事件信文格式:
地址(字节) | 名称 | 说明 |
1 | 事件标识 | 1 |
2 | 性质 | 1:OFF→ON; 0:ON→OFF |
3 | 年 | 此数值为(年-2000)后的值 |
4 | 月 | |
5 | 日 | |
6 | 时 | |
7 | 分 | |
8 | 秒 | |
9 | 毫秒 | |
10 | ||
11 | 测点号 | |
12 | ||
13 | 测值 | 0/1 |
14 | ||
15 | 预留数据 | 0 |
16 |
SOE事件指针%SW0010存储当前事件储存地址,起始地址为10031(字型地址),产生一个SOE事件,指针加8,达到256个事件后,指针重新从10031开始,同理,%E[**]存储SOE事件也是采取滚动模式,超过%E[255]后,下一个事件从%E[0]开始存储。