EEPROM写入内存
使用此指令,将数据从数据区域(DT)复制到EEPROM/ Flash-ROM。
输入
激活函数(当EN从FALSE变为TRUE时,函数将被执行一次)
想要保存的块的DT起始地址
需要写入的块数。视PLC类型而定,块大小为64或2048个数据寄存器(见下表“PLC特定信息”)。
EEPROM起始块编号
输出
执行函数时,ENO设置为TRUE。具有EN功能的层叠函数非常有用
EEPROM内存不同于保持区域。保持区域实时存储数据。只要电源关闭,保持数据就会存储在EEPROM内存中。P13_EPWT指令只有在执行时,才会将数据发送到EEPROM。另外还有可写入次数的限制(参见下表)。必须确保P13_EPWT指令的执行频率不会超过指定的写入次数。
例如,如果以R901A标志(脉冲时间0.1s)执行P13_EPWT,则EEPROM将在100,000 * 0.1秒=10,000秒(2.8小时)后不能运行。但是,如果要保留配置文件数据,例如定位参数或任何其他不常改变的参数值,将会发现此指令非常有用。
必须为两个输入变量s2_Number或d_Start之一分配常数值。
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;
@'data field': @'ARRAY (0..63] OF INT':=@'(1,2,3,4,5,6,7,8,9,10,11,12,52(0)]';
END_VAR
当变量start从FALSE变为TRUE时,执行此函数。
此函数读取数据区段[0]直到数据区段[63]的内容(s2* = 1 => 1个块= 64字),并将起始块编号0之后的信息写入EEPROM。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,P13_EPWT!,Instance,11,0,19,6,,?DEN?Ds1_Start?Ds2_Number?Dd_Start?AENO);
B(B_VARIN,,DataField[0],9,2,11,4,);
B(B_VARIN,,1,9,3,11,5,);
B(B_VARIN,,0,9,4,11,6,);
B(B_CONTACT,,start,3,1,5,3,);
L(1,2,3,2);
L(5,2,11,2);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY