Table of Contents
정전 시 데이터 유지 (EEPROM 저장 예제)
적용 모델
- MSB610L
- MSB6XX 시리즈 전반 (EEPROM 내장 모델)
개요
정전 또는 전원 OFF 시에도 주요 데이터 값을 유지하기 위해 D영역의 데이터를 EEPROM에 저장하는 예제입니다.
본 예제에서는
- D0 ~ D10 값을 EEPROM에 주기적으로 저장
- 전원 재인가 시 EEPROM 값을 D영역으로 복원
하는 구조로 작성되어 있습니다.
산업 현장에서 다음과 같은 용도로 자주 사용됩니다.
- 생산 수량 카운트 유지
- 운전 시간 누적
- 설정값 유지
- 마지막 동작 상태 기록
동작 원리
- 부팅 시 EEPROM → D영역 복사
- 운전 중 D영역 값 변화 감지
- 값이 변경되면 EEPROM에 저장
- EEPROM 수명 보호를 위해 변경 시에만 기록
BASIC 예제 소스
정전 시 D0~D10 값을 유지하는 예제입니다.
#include "MSB6XX"
Dim TempAdr As Integer
Dim EepromAdr As Integer
Dim Tempi As Byte
Opencom 1,115200,3,200,200
Set Modbus 1,1,100
Ramclear
' 부팅 시 EEPROM 값을 D영역으로 복사
For TempAdr = 0 To 10
_D(TempAdr) = Eeread(EepromAdr,2) Xor &hffff
EepromAdr = EepromAdr + 2
Next
' USEPIN 은 이곳에서 설정
Set Ladder On
Usepin 8,In
EepromAdr = 0
TempAdr = 0
Do
Tempi = _D(TempAdr)
Tempi = Tempi Xor &hff
If Tempi <> Eeread(EepromAdr,1) Then
Gosub EepromSaveRtn
End If
Incr EepromAdr
Tempi = _D(TempAdr) >> 8
Tempi = Tempi Xor &hff
If Tempi <> Eeread(EepromAdr,1) Then
Gosub EepromSaveRtn
End If
Incr EepromAdr
Incr TempAdr
If TempAdr > 10 Then
TempAdr = 0
EepromAdr = 0
End If
Loop
EepromSaveRtn:
Do
Loop Until Sys(4)=0
eew EepromAdr,Tempi
Return
레더 로직 구성
예제에서는
- 입력 P8이 ON 되면
- D0, D1 값을 카운트 업
하도록 간단한 테스트 로직을 구성했습니다.
(현장에서는 생산 카운터 또는 운전 시간 누적용으로 사용 가능)
HMI / SCADA 표시 시 주의사항
HMI에서 값을 읽어올 때는
- DWORD (Unsigned 32bit) 형식으로 읽어야 합니다.
이유:
- D영역 값이 16비트를 초과할 수 있음
- 부호 있는 정수로 읽으면 값이 깨져 보일 수 있음
Keywords: MSB EEPROM Save, Power Failure Data Retention, MSB610L Example, Eeread, EEWrite, PLC Data Backup, Nonvolatile Memory, Production Counter Backup
