S7-200 程序指令写入 EEPROM
我给你最简单、最安全、可直接复制使用的写法,不用理解复杂原理,照着做就能永久保存数据。
一、核心原理(一句话)
用 SMB31 + SMW32 两个特殊寄存器,触发把 V 区数据写到 EEPROM,断电永远不丢。
SMW32:要保存的 V 区地址
SMB31:触发写入 + 指定数据长度
二、支持写入的数据长度
1 字节(VB)
2 字节(VW)
4 字节(VD)
三、最常用程序
示例 1:写入 1 字节(VB100 → EEPROM)
plaintext
// 触发条件:比如 I0.0 接通时写入 LD I0.0 EU // 上升沿,只触发一次 MOVW &VB100, SMW32 // 要保存的 V 区地址:VB100 MOVB 16#80, SMB31 // 写入使能 + 1 字节
示例 2:写入 2 字节(VW200 → EEPROM)
plaintext
LD I0.1 EU MOVW &VW200, SMW32 MOVB 16#81, SMB31 // 2 字节
示例 3:写入 4 字节(VD300 → EEPROM)
plaintext
LD I0.2 EU MOVD &VD300, SMW32 MOVB 16#83, SMB31 // 4 字节
四、参数速查
表格
| 数据长度 | SMB31 赋值 |
|---|---|
| 1 字节(VB) | 16#80 |
| 2 字节(VW) | 16#81 |
| 4 字节(VD) | 16#83 |
五、最安全的工程写法
功能:
用 上升沿触发,不会反复写
保护 EEPROM 寿命(10 万次以上)
保存 VD1000(4 字节累计值 / 配方值)
plaintext
// 掉电保存:VD1000 → EEPROM LD M0.0 // 保存触发信号 EU // 上升沿,只触发1次 MOVD &VD1000, SMW32 // 要保存的 V 区地址 MOVB 16#83, SMB31 // 4 字节写入 EEPROM
六、关键注意事项
必须用上升沿 EU 触发不能直接 SM0.0 一直写,会烧坏 EEPROM。
写入一次需要 15~20ms
每次只能写 1/2/4 字节要写多个数据就分多次触发。
上电时,CPU 自动从 EEPROM 恢复到 V 区不用写读取程序。
寿命:至少 10 万次写入工程上足够用。
七、你只需要告诉我 2 个信息
我可以直接给你写完整工程代码:
你要保存的地址:VB? / VW? / VD?
用哪个信号触发保存(比如 I0.0、M0.0、定时保存)
总结
用 SMW32 指定 V 地址,SMB31 触发写入
1/2/4 字节分别用 16#80 / 81 / 83
必须加上升沿 EU,保护 EEPROM
程序写入后,永久掉电保持。





