SIEMENS, DF&PD

Предыдущее посещение: Чт июл 07, 2016 17:29 Текущее время: Чт июл 07, 2016 17:29

Часовой пояс: UTC + 3 часа




 [ Сообщений: 19 ] 
Автор Сообщение
 Заголовок сообщения: Генератор чисел нормального распределения? Чем?
СообщениеДобавлено: Ср окт 22, 2008 20:12 
Не в сети
Известный Писатель

Зарегистрирован: Ср апр 11, 2007 10:19
Сообщения: 296
Добрый день господа!!!
Прошу подсказать чем создать программный генератор чисел определенного диаппазона, может какие SFC есть... Не могу найти. Нужно для тестирования программного обеспечения верхнего уровня (самописного), контроллер S7-300 (315-2DP) Подскажите чем?!
Заранее всем откликнувшимся спасибо!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср окт 22, 2008 20:18 
Не в сети
Возможно это нечеловек

Зарегистрирован: Ср апр 19, 2006 20:58
Сообщения: 2390
Порядки по времени и разрядности какие ?
Реверсивный счётчик не подойдёт ?
Тактировать от тактового меркера. Сразу будут видны пропуски в случае ошибок.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср окт 22, 2008 21:36 
Не в сети
Известный Писатель

Зарегистрирован: Сб фев 09, 2008 8:43
Сообщения: 258
для равномерного - сдвиговый регистр и исключающее или. глубина регистра и частота тактирования при этом определяют вероятностные характеристики формируемой последовательности (в данном случае начальную и конечную частоты). ну а вы берёте нужное кол-во бит для формирования нужного вам числа.

впрочем в OSCAT есть готовая FC, но нормальность распределения у меня вызывает сомнения.

а вам именно нормальный нужен? обычно асутпшникам равномерный необходим...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт окт 23, 2008 10:00 
Не в сети
Новый писатель

Зарегистрирован: Пт авг 22, 2008 13:10
Сообщения: 32
Если софт пишете сами, то задача тривиальная...
1. Любым доступным средством генерируете равномерно распределенную выборку из N элементов (порядок N выбираете эмпирически – достаточно пары, тройки десятков).
2. Получаете среднее этой выборки – это и будет один из элементов нормально распределенной выборки.
Успехов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт окт 23, 2008 11:28 
Не в сети
Известный Писатель

Зарегистрирован: Пт июн 20, 2008 15:42
Сообщения: 105
Откуда: Россия
как-то использовал

х = дробная часть от (10*sin(х))
выход = стартовое + х*коэфф
х - в память на след цикл.
при первом опросе (когда х=0) х=1/стартовое :)

наверняка это не самый нормальный закон, однако болтается красиво, делается за 1 минуту и в качестве исходных данных задачи учета подошло прекрасно.

Уверен что есть способы качественнее, но как говаривал Литвинов Игорь "узбекские ученые изобрели искусственного дятла и теперь занимаются изобретением искусственного дерева"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт окт 23, 2008 15:56 
Не в сети
Известный Писатель

Зарегистрирован: Сб фев 09, 2008 8:43
Сообщения: 258
Н и к о л а й писал(а):
Если софт пишете сами, то задача тривиальная...
1. Любым доступным средством генерируете равномерно распределенную выборку из N элементов (порядок N выбираете эмпирически – достаточно пары, тройки десятков).
2. Получаете среднее этой выборки – это и будет один из элементов нормально распределенной выборки.
Успехов


бред

Сам то понял что сказал?

To Nickname -
в том то и дело что "нормальность" под вопросом


to Ancinov -
А зачем Вам именно нормальный закон распределения? Просветите пожалуста. Я действительно не знаю где в АСУТП это можно применить. И я думаю всем будет интересно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт окт 23, 2008 20:24 
Не в сети
Известный Писатель

Зарегистрирован: Ср апр 11, 2007 10:19
Сообщения: 296
Собственно ответ на вопрос для чего!!!!
Есть такое понятие "Поэтапный ввод в эксплуатацию программно технического комплекса"!!! Где последний этап - это ввода в промышленную эксплуатацию. Первый - автономные испытания (без привязки к полю!!!). Система состоит из набора датчиков, исполн механизмов, контроллеров, серверов, операторских станций. Дак вот для прохождения первого этапа (тех самых автономных испытаний) необходимо продемонстриовать работу верхнего уровня, при этом контроллеры должны эмитировать набор параметров.
Тут оно и необходимо - нормальное распределение!!!
А как его получить так никто и не ответил.....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт окт 23, 2008 21:13 
Не в сети
Возможно это нечеловек

Зарегистрирован: Ср апр 19, 2006 20:58
Сообщения: 2390
Ancinov писал(а):
Тут оно и необходимо - нормальное распределение!!!
А как его получить так никто и не ответил.....


Для начала надо понять, что ты под "нормальным распределением" понимаешь ?
Теорему Гаусса не можешь на PLC реализовать ? (раньше это был 1-ый курс ВУЗа)
Изображение
Изображение

Реверсивный счётчик поставь и будет у тебя подобный график - типа нормально усечённой пилы. Эту же пилу и на высоком уровне увидишь - если не увидишь, значит где то что то не то.

Или тебе надо хаотичный генератор случайных чисел из твоего диапазона ?
Тогда на верхнем уровне будет трудно увидеть соответствие.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт окт 23, 2008 21:36 
Не в сети
Начинающий писатель

Зарегистрирован: Вт окт 02, 2007 14:55
Сообщения: 60
Ребята! да что вы спорите, самый простой и надежный способ уже дал Homist в самом начале темы:
Homist писал(а):
Реверсивный счётчик не подойдёт ?
Тактировать от тактового меркера. Сразу будут видны пропуски в случае ошибок.
по моему это идеальный вариант.
Развивая тему с реверсивным счетчиком, от себя могу только добавить, что реверсивный счетчик (еще можно использовать циклический счетчик) будет выдавать не сами значения чисел диапазона, а индексы.
А уже по этим индексам делать по косвенной адресации выборку из заранее сохраненной дбешки, в которой хранятся сами числа диапазона.
В этой дбешке можно в ручную задать любую последовательность чисел.

2 Nickname
про дятла Ваша шутка очень понравилась :)
а ху из Литвинов Игорь?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт окт 24, 2008 8:20 
Не в сети
Известный Писатель

Зарегистрирован: Пт июн 20, 2008 15:42
Сообщения: 105
Откуда: Россия
Цитата:
2 Nickname
про дятла Ваша шутка очень понравилась :)

это не шутка... за то время пока идет обсуждение можно было бы реализовать все возможные законы, а именно экспоненциальные, Лапласа, логистическое, нормальное и те о которых я понятия не имею.
Для задачи "поэтапного... (см. выше)" я бы сделал генератор "медленно-меняющегося числа в рабочем диапазоне". Так удобнее демонстрировать :)

А вообще Homist прав, дал исчерпывающую информацию по тому вопросу, который был изначально поставлен.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт окт 24, 2008 14:09 
Не в сети
Известный Писатель

Зарегистрирован: Сб фев 09, 2008 8:43
Сообщения: 258
to Ancinov

Так зачем тебе всё таки именно нормальный закон распределения?

Объясни почему не устраивает простой последовательный перебор чисел, что предложил Homist, или равномерный закон распределения, что предложил я, или последовательность с ненормированными вероятностными характеристиками, на основе функции из OSCAT или то что предложил Nickname?

Блин, в чём соль?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт окт 24, 2008 15:13 
Не в сети
Новый писатель

Зарегистрирован: Пт авг 22, 2008 13:10
Сообщения: 32
Билли Бонс писал(а):
Цитата:
бред
Сам то понял что сказал?

Учи матчасть. Homist прав, это проходят на 1-м курсе института. Алгоритм, который я привел прост как веник, к тому-же рабочий.

Объясняю на уровне для домохозяек:
Для получения очередного элемента для выборки, подчиняющейся законам нормального распределения необходимо сгенерировать равномерно распределенную выборку и получить ее среднее математическое. Проще некуда.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт окт 24, 2008 15:18 
Не в сети
Известный Писатель

Зарегистрирован: Сб фев 09, 2008 8:43
Сообщения: 258
а следующего за очередным?

Homist вообще ничего не предложил по теме.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт окт 24, 2008 16:36 
Не в сети
Новый писатель

Зарегистрирован: Пт авг 22, 2008 13:10
Сообщения: 32
На программном уровне:
- внешний цикл генерирует нормально-распределенную выборку (количество итераций цикла, то бишь длину выборки определяет исполнитель, памятуя мудрость старика Маркова - чем больше, тем ближе к 0,95)
- внутренний цикл "подгоняет" для внешнего очередной элемент (генераторов равномерно распределенной выборки повсюду полно, они даже зашиты во все мало-мальски уважающие себя языки программирования. Генераторов много, а хороших мало - каждый надо проверять. Я выбираю с хорошей пилой. Как проверить генератор - просто посмотреть плотность распределения его значений).
Кстати, качество генератора нормально-распределенной выборки можно оценивать по плотности распределения на его выходе


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт окт 24, 2008 19:42 
Не в сети
Возможно это нечеловек

Зарегистрирован: Ср апр 19, 2006 20:58
Сообщения: 2390
Как проще самому понять и показать другим, что данные доходят нормально до верхнего уровня ?
Сравнивать с мелкоскопом на глазок хаос слева (как вариант подаёшь песенку Тины Тёрнер 2008 на аналоговый вход и нормализуешь (масштабируешь/смещаешь в свой диапазон))
или сразу видеть нормальный порядок справа (реверсивный счётчик)?
Изображение

Убедился, что данные доходят правильно - после этого можешь играть с хаосом.
Я например в подобных случаях использовал в PLCSIM функцию записи изменений,
потом вручную правил полученный сценарий, изменяя время и значения,
и запускал на проигрывание в симуляторе и смотрел как ВыньСС и Флекс отрабатывают совместно с программой.
А пытаться играться в теорию вероятности не имеет смысла для данной задачи.

Если хочешь иметь данные приближённые к реальности и физическим законам, то надо писать о "данных чего" идёт речь.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб окт 25, 2008 0:32 
Не в сети
Известный Писатель

Зарегистрирован: Ср апр 11, 2007 10:19
Сообщения: 296
Уваемые господа!!!! Ваши ответы просто замечательны, НО вопрос о наличии в S7 ВСТРОЕННОЙ ФУНКЦИИ!!!!!!!
Homist - огромное спасибо!!!! сам закончил технический вуз совсем недавно и приведенную формулу помню наизусть, правда со сторого курса, ибо это проходят в курсе системного анализа.., ну или матстатистики... курс опять же второй!!!!!!
"Для чего нормальное" особенность ПО верхнего уровня для которого происходит эмуляция параметров!!!!
"Почему спросил" - да потому что программировал и на асемблере и на C\C++ и тд и тп.... во многих языках есть встроенный генератор от 0 до 1 нормального распределения. Вот его и искал!!! но видимо нет его, судя по ответам!!!

PS Зачем лишний раз демонстрировать знания которые не являются ответом на вопрос!!!!!
PSS Для себя же, пообещаю научиться задавать вопросы правильно. Винюсь и каюсь - исправлюсь. Всем откликнувшимся спасибо!!! Приятно видеть неравнодушие и полемику :-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб окт 25, 2008 10:14 
Не в сети
Возможно это нечеловек

Зарегистрирован: Ср апр 19, 2006 20:58
Сообщения: 2390
Ancinov писал(а):
"Почему спросил" - да потому что программировал и на асемблере и на C\C++ и тд и тп.... во многих языках есть встроенный генератор от 0 до 1 нормального распределения.

Ну ты ляпнул - нельзя голословно говорить "во многих языках", к тому же по отношению к ассемблеру.
Если в процессоре есть аппаратная реализация генератора случайных числе (для криптозащиты), то для этого процессора будет в ассемблере команда генератора случайных чисел - НО никак не нормальной последовательности, иначе грош цена такому генератору в криптозащите.

Изображение
Ещё мне не нравятся всякие туманные недомолвки и придание мнозначительности простым вещам.
"ПО верхнего уровня" - что за монстр такой ?
Вообще о чём конкретно речь и о передачи каких параметров в диапазоне от 0 до 1?
Изображение или Изображение ?
Так это бинарный код 0 и 1. У меня даже мыслей нет как можно нормально распределить значения одного бита.
В MathCADе посмотри, что получится.

Просто бы написал, что есть установка в которой имеются аналоговые входы и надо симитировать конкретный процесс конкретно того то и того то и передать наверх конкретно тому то конкретно то то и то то.
Цитата:
Кроме того, в силу центральной предельной теоремы распределение целого ряда широко распространенных в статистике функций от случайных величин хорошо аппроксимируется нормальным распределением.
Для исследования таких "нормальных" данных математической статистикой выработаны эффективные методы.
Эти методы непригодны для данных другой природы в том смысле, что выполнить соответствующий расчёт можно, но результат будет неправильным.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб окт 25, 2008 13:24 
Не в сети
Известный Писатель

Зарегистрирован: Ср апр 11, 2007 10:19
Сообщения: 296
Да в асме действительно нет... НО кто сказал что в процессоре S7 есть аппаратная реализация всех команд которые программист использует при написании программы. Мы ведь говорим о промышленных PLC а не микроконтроллерах!!!! К сожалению не обладаю достаточной квалификацией для того что бы судить о том за что внутри коробочки S7-300 ... Да и тот же SCL не назовешь набором аппаратных инструкций для "процессора". Прочитал достаточно полемик по поводу STL=ASM or STL<>ASM, так конкретики и не нашел :-)
От 0 до 1 - да просто удобнее масштабировать в любой диапазон! причем тут бинарный код... маткада не знаю, учили матлабу))) (хотя одна малина)
"ПО верхнего уровня" - просто самописная скада написана в дельфи, писал не я, обмен с контроллером через OPC. В данном случае одна из функций - обеспечить сбор параметров водно-химического баланса среды (хим параметры, я в них как свинья в апельсинах).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб окт 25, 2008 13:42 
Не в сети
Возможно это нечеловек

Зарегистрирован: Ср апр 19, 2006 20:58
Сообщения: 2390
Ancinov писал(а):
От 0 до 1 - да просто удобнее масштабировать в любой диапазон! причем тут бинарный код...

Это просто моя придирка на внимательность -
бинарный диапазон 0...1 (или диапазон целых чисел 0...1) имеет принципиальное отличие
от диапазона чисел с плавающей точкой 0.0...1.0.
Использование генератора такого "нормального" диапазона в расчёте на перемножения полученного случайного числа на большой коэффициент нежелательно - нарушается сам принцип вероятностной нормальности.

Ancinov писал(а):
"ПО верхнего уровня" - просто самописная скада написана в дельфи, писал не я, обмен с контроллером через OPC.
В данном случае одна из функций - обеспечить сбор параметров водно-химического баланса среды (хим параметры, я в них как свинья в апельсинах).

Раз ты в этом не разбираешься (как возможно и они), то как раз и надо использовать пилу последовательного перебора значений диапазона - можно легко будет увидеть проблемы именно в самописном ПО "верхнего уровня" на конкретных значениях данных.
Я сам иногда ползунки на отладочный экран добавляю и использую во время пуско-наладки и последовательно их двигаю на первоначальном этапе, добавляя линейно погрешность к реальным данным или полностью их имитируя, чтобы посмотреть на реакцию программы.
Если пила без проблем добирается до верхнего уровня, то
потом можешь им Тину Тёрнер на вход подать.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
 [ Сообщений: 19 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


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

Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group