Определение факта выполнения программы в S7-PLCSIM

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

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

Приведенный код, позволяет обнаружить факт выполнения программы не на реальном контроллере, а в среде симулятора S7-PLCSIM.

plcsim

Код работоспособен на семействе S7-300,400

Способ основан на том, что при чтении серийного номера CPU, в PLCSIM, вместо номера возвращается строка пробелов.

Исходный код.

FUNCTION_BLOCK FB1
TITLE =‘PLCSIM_CHECK’

VAR_OUTPUT
    RUN_IN_PLCSIM : BOOL,    
END_VAR   

VAR
  RDSYSST         : STRUCT
   RET_WERT                 : INT ,
   REQ                      : BOOL ,
   BUSY                     : BOOL ,
   SZL_HEADER     : STRUCT
    LENTHDR                 : WORD ,
    N_DR                    : WORD ,
   END_STRUCT ,
   SZL_11C_5         : STRUCT
    index                   : WORD ,
    serialn                 : ARRAY  [0 .. 23 ] OF CHAR ,
    res                     : ARRAY  [1 .. 4 ] OF WORD ,
   END_STRUCT ,
  END_STRUCT ,
  CPU_DATA         : STRUCT
   Index                    : WORD ,
   CPUIdent                 : ARRAY  [1 .. 34 ] OF BYTE ,
   Reserved                 : WORD ,
   MajorVersion             : WORD ,
   MinorVersion_1           : BYTE ,
   MinorVersion_2           : BYTE ,
  END_STRUCT ,

BEGIN

RDSYSST.RET_WERT:=RDSYSST(          // SFC51 Module identification
    REQ         :=  true       
    ,SZL_ID     :=  W#16#11C        // W#16#011C: a single identification data record
    ,INDEX      :=  W#16#5          // W#16#0005: Serial number of the module
    ,BUSY       :=  RDSYSST.BUSY
    ,SZL_HEADER :=  RDSYSST.SZL_HEADER
    ,DR         :=  CPU_DATA       
     ),

RUN_IN_PLCSIM:=CPU_DATA.CPUIdent[1]:=B#16#0,

END_FUNCTION_BLOCK

plcsim
Пример вызова блока.

plcsim
Результат выполнения в симуляторе.

plcsim
Результат выполнения в контроллере.

Область применения:

сложно сказать :),
как возможные варианты – небольшое усложнение анализа программы или автоматическое переключение на программную модель объекта управления при отладке на симуляторе.

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

Добавлен: snh Дата: 2015-10-19

Уважаемый, полученные данные д.б. сложены в CPU data а это 34 байта, а у вас 20, в структуре SZL_11C_5 будут только 0 т.к. в неё ничего не копируется. Хотя мож лыжи не едут…

Добавлен: komatic Дата: 2015-10-25

Ваша правда, проверил на реальном контроллере поправил статью, спасибо за замечание

0 0 голоса

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

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