16:40 SIEMENS STEP7 SCL пример 2 Генерация случайных чисел (a and b) | |
//- DB1 контейнер случайных значений a и b ------------------------------------- DATA_BLOCK DB1 STRUCT buffer_a : ARRAY[1..10] OF INT := 10(0); // несортированное значение a buffer_b : ARRAY[1..10] OF INT := 10(0); // несортированное значение b END_STRUCT BEGIN END_DATA_BLOCK //- FB2 сохранение значений в буфере(DB1 ) ------------------------------------- FUNCTION_BLOCK FB2 // Случ. значение a помещается в DB1.buffer_a // Случ. значение a помещается в DB1.buffer_b CONST BUFLENGTH := 10; // Длина буфера END_CONST VAR_INPUT NewValue : INT; // случайное число END_VAR VAR_IN_OUT BUF_DB : ANY; // номер DB и область для значений END_VAR VAR index : INT := 1; // счетчик № сохраненных значений field : ARRAY[1..10] OF INT; ret : INT; // RET_VAL для SFC20 END_VAR BEGIN IF index > BUFLENGTH THEN // очистка буфера на старте index := 1; END_IF; field[index]:= NewValue; // новое значение IF index = BUFLENGTH THEN // буфер полон ret := SFC20(SRCBLK:=field,DSTBLK:=BUF_DB);//сохранение значений в DB END_IF; index := index +1; END_FUNCTION_BLOCK //- FC60 генератор случайных чисел --------------------------------------------- FUNCTION FC60 : INT; CONST m:=101; // случ. число от 0 до 100 END_CONST VAR_INPUT RAND:INT; // инициализация END_VAR BEGIN // вычисление случ. числа FC60 := (ABS(RAND*DINT_TO_INT(TIME_TO_DINT(SFC64())))) MOD m; END_FUNCTION //- OB 35 ---------------------------------------------------------------------ORGANIZATION_BLOCK OB35 VAR_TEMP info : ARRAY[0..19] OF BYTE; random: INT; END_VAR BEGIN random := FC60(RAND:=711); //создание случ. числа a FB2.DB11(NewValue:=random,BUF_DB:=DB1.buffer_a); //сохранение случ. числа random := FC60(RAND:=13); // создание случ. числа b FB2.DB12(NewValue:=random,BUF_DB:=DB1.buffer_b); // сохранение случ. числа END_ORGANIZATION_BLOCK | |
|
Всего комментариев: 0 | |