S7: Контроль размера программы в контроллере

По просьбе наших посетителей, данный материал перенесен с сайта plc4good.org.ua, в связи с полной его потерей. Всё возражения принимаются через форму обратной связи.

plc4good.org.ua/view_post.php?id=238

sfc51

Может пригодится для контроля целостности программы.
Как реагировать на событие каждый может выбирать сам – поставить флаг для личного контроля, вывести на HMI предупреждающее сообщение или остановить работу. В зависимости от обстоятельств. Если у контроллера есть выход наружу, можно даже послать себе сообщение.

Конечно такую защиту можно легко обнаружить и удалить, но с одной стороны можно усложнить обнаружение и удаление этого кода, с другой стороны, человек который это обнаружит и нейтрализует, явно будет иметь достаточно опыта чтобы делать изменения в программе и отвечать за их последствия.

 

Вариант в SCL

FUNCTION_BLOCK FB99
TITLE = ‘check size program change’
AUTHOR : komatic

VAR
SZL_HEADER : STRUCT
LENTHDR         : WORD  := W#16#24,
N_DR            : WORD  := W#16#1,
END_STRUCT ,

Data : STRUCT
Index           : WORD ,
Code            : WORD ,
Size            : DINT ,
Mode            : WORD ,
Granu           : WORD ,
RAM_Data_Size   : DINT ,
RAM_Data_Occupy : DINT ,    // actual size in memory
RAM_Data_Free   : DINT ,
RAM_CODE_Size   : DINT ,
RAM_CODE_Occupy : DINT ,
RAM_CODE_Free   : DINT ,
END_STRUCT ,

RET_V            : INT ,
BUSY             : BOOL ,
Size_previous    : DINT ,

END_VAR

VAR_IN_OUT  out : BOOL, END_VAR,

RET_V:=RDSYSST( REQ         := true
,SZL_ID     := W#16#13
,INDEX      := W#16#1
,BUSY       := BUSY
,SZL_HEADER := SZL_HEADER
,DR         := Data
),

IF Data.RAM_Data_Occupy&lt,&gt,Size_previous THEN out:=true, END_IF,

Size_previous:=Data.RAM_Data_Occupy,

END_FUNCTION_BLOCK

Вариант в LAD

sfc51
M10.1 = 1 – размер изменился

Особенности:

Необходимо учесть, что если в программе используется динамическое создание / удаление блоков данных с помощью блоков SFC22 / 23, будут ложные срабатывания.
При выполнении Compress Memory – не срабатывает и это хорошо
При изменении только адреса оператора (например: I0.0 на М1.0, при этом общий размер программы не меняется) тоже не срабатывает, и это плохо

Что можно сделать если контроллер – из 1500 серии?

sfc51
а ничего – сама функция SFC51 не поддерживается больше в TIA,
а новые функции – получение этой информации не обеспечивают. 🙁

Комментарии к материалу

Добавлен: ALLIGATOR Дата: 2015-02-04

Komatic, дайте, пожалуйста, комментарий по этой теме форума:
https://www.automation.siemens.com/WW/forum/guests/PostShow.aspx?PageIndex=1&PostID,=95163&Language,=en
‘One of these lists contains a checksum of the program and the HWconfig.
SSL-ID
W#16#0232 Index W#16#0004
Contents
The partial list extract with SSL-ID W#16#0232 and index W#16#0004 contains
information about the CPU protection level and the settings of the operator mode
switch and version identifications/checksums of the hardware configuration and the
user program.’

Добавлен: Андрей Дата: 2015-02-05

ALLIGATOR Вам сюда
dfpd.siemens.ru/forum/viewtopic.php?f=1&t,=26400&p,=152757=CRC=8df4ecaf7ea227114c9a3c710bf35517#p152757

0 0 голоса

Оцените статью!

guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии