S7: Контроль размера программы в контроллере
Дата: 2014-09-13
Добавлено: komatic
Тема: SCL
Может пригодится для контроля целостности программы.
Как реагировать на событие каждый может выбирать сам - поставить флаг для личного контроля, вывести на 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<>Size_previous THEN out:=true; END_IF;
Size_previous:=Data.RAM_Data_Occupy;
END_FUNCTION_BLOCK
Вариант в LAD
Особенности:
Необходимо учесть, что если в программе используется динамическое создание / удаление блоков данных с помощью блоков SFC22 / 23, будут ложные срабатывания.
При выполнении Compress Memory - не срабатывает и это хорошо
При изменении только адреса оператора (например: I0.0 на М1.0, при этом общий размер программы не меняется) тоже не срабатывает, и это плохо
Что можно сделать если контроллер - из 1500 серии?
а ничего - сама функция SFC51 не поддерживается больше в TIA,
а новые функции - получение этой информации не обеспечивают. :(
Просмотров: 4590
Комментарии к материалу
Добавлен: 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 Вам сюда
http://dfpd.siemens.ru/forum/viewtopic.php?f=1&t=26400&p=152757&hilit=CRC&sid=8df4ecaf7ea227114c9a3c710bf35517#p152757
Добавить комментарий