PLC, HMI, SCADA, INVERTERS, TUTORIALS, INDUSTRIAL AUTOMATION

16:26
SIEMENS STEP7 SCL пример 1 Генерация случайных чисел

//- DB1 контейнер для случайных значений a -------------------------------------

DATA_BLOCK DB1

  STRUCT

    buffer_a : ARRAY[1..10] OF INT := 10(0);   // несортированные значения а

  END_STRUCT

BEGIN

END_DATA_BLOCK

//- FB2 сохранение значений в буфере (DB1) -------------------------------------

FUNCTION_BLOCK FB2                   // Случ. знач. a помещается в DB1.buffer_a 

CONST

    BUFLENGTH := 10;                 // длина буфера

END_CONST

VAR_INPUT

    NewValue : INT;                  // случ. значение

END_VAR

VAR

    index : INT := 1;                // счетчик № сохраненного значения

END_VAR

BEGIN

    IF index > BUFLENGTH THEN        // очистка буфера на старте

        index := 1;

    END_IF;  

    DB1.buffer_a[index] := NewValue; // сохранение значений

    index := index +1;

END_FUNCTION_BLOCK

//- FC60 генератор случайных чисел -------------------------------------------

FUNCTION FC60 : VOID;

VAR

    rand_val : INT;

END_VAR

CONST

    m:=101;                  // случ. число 0 to 100

END_CONST

BEGIN                        // вычисление случ. числа

    rand_val := (ABS(711*DINT_TO_INT(TIME_TO_DINT(SFC64())))) MOD m;

    FB2.DB11(NewValue := rand_val);    // Вызывается FB2 и создает число

END_FUNCTION

//- OB 35 --------------------------------------------------------------------

ORGANIZATION_BLOCK OB35 Циклическое прерывание 100мс                               

VAR_TEMP

    info  : ARRAY[0..19] OF BYTE;

END_VAR

BEGIN

    FC60();                  //создание случ. значения a                    

END_ORGANIZATION_BLOCK

SCL_Loe1.doc

Категория: SIEMENS | Просмотров: 48 | Добавил: gt7600 | Теги: siemens, SCL | Рейтинг: 0.0/0
Всего комментариев: 0
avatar