Простой генератор псевдо случайных чисел в Step7

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

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

Область применения: имитация входных аналоговых и дискретных сигналов, для тестирования программы.

Генератор псевдослучайных чисел (ГПСЧ, Pseudorandom number generator, PRNG) — алгоритм , генерирующий последовательность чисел, элементы которой почти независимы друг от друга и подчиняются заданному распределению (обычно равномерному).(Википедия)

С официального сайта Siemens:

Вы можете использовать системную функцию SFC64 ‘TIME_TCK’ для генерации случайного числа. Из системного времени вы создаете абсолютное значение и затем выполняете целочисленное деление на верхнюю границу желаемого случайного числа. Остаток от операции можно использовать как случайное число.

// Get tick count
CALL <spanstyle=’ color:#004080’=”>’TIME_TCK'</spanstyle=’> (//  [SFC64]
RET_VAL                  := #Tick),
L     #Tick,
L     #upper_limit, // верхняя граница чисел
MOD   ,
T     #random,

Улучшенный вариант:
Добавлен сдвиг на случайное кол-во разрядов и операция XOR.

// Get tick count
CALL  <spanstyle=’ color:#004080’=”>’TIME_TCK'</spanstyle=’> //  [SFC64]
RET_VAL:=#Tick // [Local Time value]
// Use tick count to determine a ‘random’ rotate value from 0 – 32
L     #Tick
AD    DW#16#1F
T     #Rot
// Scramble the bits by rotating and XORing them
L     #Tick
L     #Rot
RLD
L     #Tick
XOD
ABS
L     #upper_limit  <spanstyle=’ color:green’=”>// верхняя граница чисел</spanstyle=’>
MOD
T     #random

Чем улучшенный вариант лучше простого:
Диапазон: 0-100

random compare

Есть еще варианты? пишите в комменты.

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

Добавлен: poll Дата: 2011-06-17

можно добавить временную задерку чтобы не так быстро менялись значения

Добавлен: Alex Дата: 2011-10-04

По моему достаточно RLD с мерцающим байтом сделать?

Добавлен: komatic Дата: 2011-10-05

попробуйте, покажите что получится. случайные числа должны равномерно распределятся.

Добавлен: Евгений Дата: 2012-02-08

Спасибо пригодилось. А насчет временной задержки, то тут уж в зависимости от того куда нужно этот рандом притулить, соответственно с необходимой именно вам задержкой этот рандом и читать.

Добавлен: Igor Дата: 2012-07-12

а как бы еще добавить и нижнюю границу?

Добавлен: komatic Дата: 2012-07-12

+ ofset
проще всего

0 0 голоса

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

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