Версия для печати

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

Дата: 2014-09-13

Добавлено: komatic

Тема: SCL




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<>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,
а новые функции - получение этой информации не обеспечивают. :(









Просмотров: 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

Добавить комментарий

Ваше имя:

Текст комментария (4000 max):

Введите сумму с картинки: