EEPROM从内存读取
使用此指令,将数据从EEPROM/Flash-ROM复制到目标区域(DT)。复制功能仅通过块执行。因此无法复制单个字。块大小和块数量显示在"PLC特定信息"表中。另外,确保为目标区域保留至少64/2048个空闲数据寄存器(1个块= 64字/ 2048字(DT))。
输入
激活函数(当EN的状态为TRUE时,功能块将在每次PLC扫描时执行)
EEPROM起始块编号
要读取的块数。视PLC类型而定,块大小为64或2048个数据寄存器(见下表“PLC特定信息”)。
输出
执行函数时,ENO设置为TRUE。具有EN功能的层叠函数非常有用
要写入信息的DT起始地址
PLC类型 |
FP0 2,7k C10/C14/C16, FP-e |
FP0 5k C32 |
FP0 10k T32CP |
FP-Sigma, FP-X, FP0R |
FP0H |
---|---|---|---|---|---|
ROM |
EEPROM |
EEPROM |
EEPROM |
Flash-ROM |
Flash-ROM |
块大小(1个块) |
64字(64x16位) |
64字(64x16位) |
64字(64x16位) |
2048字(2048x16位) |
2048字(2048x16位) |
EEPROM起始块编号 |
0至9 |
0至95 |
0至255 |
0至15 |
0至31 |
每次执行时要读取/写入的块数量 |
1至2 |
1至8 |
1至255 |
1(写入) 1至16(读取) |
1(写入) 1至32(读取) |
写入持续时间(附加扫描时间) |
每个块< 20 ms |
每个块< 5 ms |
每个块< 5 ms |
每个块< 100ms |
每个块< 100ms |
读取持续时间(附加扫描时间) |
每个块小于1 ms |
每个块小于1 ms |
每个块小于1 ms |
9.94ms +(1562.6*块数量)ms |
|
最大写入事件数 |
100,000 |
10,000 |
10,000 |
10,000 |
10,000 |
最大读取次数 |
无限制 |
无限制 |
无限制 |
无限制 |
无限制 |
断电、RUN -> PROG模式更改也计算在内。
所有用于编程此函数的输入和输出变量已在POU头中声明。 所有编程语言使用相同的POU头。
VAR
start: BOOL:=FALSE;
(*activates the instruction*)
datafield: ARRAY [0..63] OF INT:=[64(0)];
(*data field to be uploaded data from EEPROM*)
END_VAR
当变量start从FALSE变为TRUE时,执行此函数。
此函数从EEPROM读取起始块编号0之后的首个块(= 64字),并将信息写入从datafield[0]直到datafield[63]的数据区段。BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
B(B_F,F12_EPRD!,Instance,8,1,16,6,,?DEN?Ds1_Start?Ds2_Number?AENO?Cd_Start);
B(B_VARIN,,0,6,3,8,5,);
B(B_VARIN,,1,6,4,8,6,);
B(B_VAROUT,,datafield[0],16,3,18,5,);
B(B_CONTACT,,start,3,2,5,4,);
L(5,3,8,3);
L(1,3,3,3);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
LD |
start |
DF |
|
F12_EPRD |
0,1,datafield[0] |