# 计算要保存的数据大小

您可以从系统设置编辑画面中检查存储在备用内存（SRAM）或外部存储器中的每段数据的大小。

有关计算每个数据的大小，请参见以下内容。

- 报警
- 数据记录
- 操作日志
- 变量值（保持变量）

注： 变量值（保持变量）的保存目标仅限于备用内存（SRAM）。

## 报警

(单位：字节)

Header (3072) + ActiveAlarms + AlarmLog + SystemErrors (2048)

- ActiveAlarms = (所有报警组中的报警总数 × ([报警行为]*1 + 所有报警组变量中最大变量的大小*2) / 1024)*3 × 1024
- AlarmLog = ([最大记录]*4 × (31 + 最大变量大小*2) / 1024)*3 × 1024

*1 选择 [可选 ACK] 作为 [报警行为] 时为 65，选择 [强制 ACK] 时为 73。

*2 这是变量中最大数据类型的大小。有关变量数据类型大小的信息，请参阅下列变量大小表格。禁用报警设置时，最大变量大小为 0。

*3 将小数点向上舍入。

*4 [全部报警] 的 [最大记录] 属性值。

变量大小

数据类型 | 大小（字节）
BOOL | 1
BYTE | 3
WORD | 5
DWORD | 10
LWORD | 20
SINT | 4
USINT | 3
INT | 6
UINT | 5
DINT | 11
UDINT | 10
LINT | 20
ULINT | 20
REAL | 20
LREAL | 20

## 数据记录

禁用记录时，数据大小为 0。

(单位：字节)

Header + LoggingGroups + StartLogs + LoggingState (1024)

- Header = ((H_LoggingGroups + H_LoggingGroup_Views + H_LoggingGroup_Startlog + H_Logging_state) / 1024) *1 × 1024 + HeaderEmptySpace
  - H_LoggingGroups = 所有记录组的总大小
    记录组 = 172 + 42 × 记录组中的变量数
  - H_LoggingGroup_Views = 所有 LoggingGroup_View 的总大小
    LoggingGroup_View = 213 + 33 × 记录组中的变量数
  - H_LoggingGroup_Startlog = 176 × 记录组数
  - H_Logging_state = 144
  - HeaderEmptySpace = 1024，如果 ((H_LoggingGroups + H_LoggingGroup_Views + H_LoggingGroup_Startlog + H_Logging_state) / 1024) *1 为 2 或更多；否则为 0。
- LoggingGroups = 记录组的总大小
  如果 (26 + 每个变量的 (变量大小*2 + 1) 之和) 为 512 或更少:
  记录组 = ([最大记录] *3 / (1024 / (26 + 每个变量的 (变量大小*2 + 1) 之和))*4)*1 × 1024 + LoggingGroupEmptySpace
  否则:
  日志组 = ((26 + 每个变量的 (变量大小*2 + 1) 之和) / 1024)*1 × [最大记录] *3 × 1024 + LoggingGroupEmptySpace
  - LoggingGroupEmptySpace = 1024，如果 (((26 + 每个变量的 (变量大小*2 + 1) 之和) × [最大记录] *3) / 1024) 为 2 或更多；否则为 0。
- StartLogs = LoggingGroup_Startlog 总和:
  LoggingGroup_Startlog = (24 × [最大记录] *3 /1024)*1 × 1024 + StartlogEmptySpace
  - StartlogEmptySpace = 1024，如果 ((24 × [最大记录]*3) / 1024)*1 为 2 或更多；否则为 0。

*1 将小数点向上舍入。

*2 变量大小取决于数据类型。请参阅下列变量大小表格。

*3 [记录组] 的 [最大记录] 属性值。

*4 将小数点向下舍入。

变量大小

数据类型 | 大小（字节）
BOOL | 1
BYTE | 2
WORD | 3
DWORD | 10
LWORD | 20
SINT | 1
USINT | 2
INT | 2
UINT | 3
DINT | 4
UDINT | 10
LINT | 20
ULINT | 20
REAL | 20
LREAL | 20
STRING | [字节数] + 1
WSTRING | [字节数] + 1
TIME | 4
TIME_OF_DAY | 4
DATE | 4
DATE_AND_TIME | 4

## 操作日志

禁用操作日志时，数据大小为 0。

(单位：字节)

Header (1024) + ((478 × [最大记录*1] / 1024)*2 × 1024) + EmptySpace

- EmptySpace = 1024，如果 (478 × [最大记录*1] / 1024) 为 2 或更多；否则为 0。

*1 [操作日志] 的 [最大记录数] 属性值。

*2 将小数点向上舍入。

## 变量值（保持变量）

当具有变量的 [保持] 属性被禁用时，数据大小为 0。

(单位：字节)

Header (1024) + ((RetentiveVariables / 1024)*1 × 1024) + EmptySpace

- RetentiveVariables = 启用 [保持] 属性的变量总大小
  保持变量 = Header (7) + ID (2) + 变量大小*2
- EmptySpace = 1024，如果 (保持变量 / 1024) 为 2 或更多；否则为 0。

*1 将小数点向上舍入。

*2 变量大小取决于数据类型。请参阅下列变量大小表格。

变量大小

数据类型 | 大小（字节）
BOOL | 1
BYTE | 3
WORD | 5
DWORD | 10
LWORD | 20
SINT | 4
USINT | 3
INT | 6
UINT | 5
DINT | 11
UDINT | 10
LINT | 21
ULINT | 20
REAL | 20
LREAL | 20
STRING | [字节数] x 2 + 2
TIME | 11
TIME_OF_DAY | 10
DATE | 10
DATE_AND_TIME | 10