По просьбе наших посетителей, данный материал перенесен с сайта 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
Есть еще варианты? пишите в комменты.
Комментарии к материалу
Добавлен: 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
проще всего
Оцените статью!