This is an old revision of the document!


정전 시 데이터 유지 (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

MSB 일체형 큐블록 시리즈