LINUX.ORG.RU

имитация электрических схем

 , ,


2

1

Есть в СИКП глава по имитации электрических логических схем. Там суть в том, что есть логический сигнал 0 или 1, передающее элементы - провода и элементы изменяющее его, которые оперируют с сигналами на входящих проводах и устанавливают на исходящих. Так же есть расписание, в которое добавляются следующие прохождения сигналов по проводам. Всё красиво и круто и я не раз уже возвращаюсь к этой программе, меняя и расширяя кое-что. Но каждый раз ловлю затык как только пытаюсь сделать по такой же схеме имитацию простых электрических схем, где есть источники питания и цепи протекания тока. Мне не нужно считать падения напряжения и переходные процессы, но простым логическим сигналом, не имеющем полярности, уже не обойтись

Пока у меня основная идея - сделать два сигнала - положительный и отрицательный потенциал и передавать их. Когда они встречаются на каком-то элементе, включать его. Идея говно и куча костылей её не спасает. Вторая идея, искать заранее все цепочки протекания тока и работать с ними как с логическими. Тоже куча проблем возникает.

Может у кого-нибудь свежие идеи или кто-нибудь занимался подобным?

На всякий случай простой прототип - http://pastebin.ru/LQE6h4ax

★★★

Последнее исправление: pseudo-cat (всего исправлений: 1)

Нахуй вообще нужен этот СИКП? Садись и пиши программы, блеать.

Задания из этих книг пусть задрачивают всякие студенты, а ты должен быть успешным, блеать

anonymous
()
Ответ на: комментарий от pseudo-cat

Если это реальная задача, то ты должен чётко представлять, что хочешь в итоге. А с твоего псто ничего не ясно.

И это не реальная задача, кого ты обманываешь?

anonymous
()
Ответ на: комментарий от pseudo-cat

там только идея, реализацию лучше свою напиши

anonymous
()

Одних потенциалов не хватит. В схеме есть компоненты, связи между ними + компонентные и топологические уравнения. Далее для схемы записываются уравнение равновесия и уравнение непрерывности. Конкретный тип системы особого смысла не имеет (электро, гидро, механика). В электрической схеме эти уравнения соответствуют законам Кирхгофа.

Поподробнее можно посмотреть тут, например: http://bigor.bmstu.ru/?cnt/?doc=Mod/base.cou

anonymous
()
Ответ на: комментарий от emulek

хотелось бы избежать таких расчётов, нужно эмулировать именно логическую составляющую релейно-контактной схемы, в схеме может быть больше 100 реле и больше 200 контактов, по всем правилам уже пробовали делать, жутко долго, днями вычисляется

pseudo-cat ★★★
() автор топика
Ответ на: комментарий от anonymous

реле состоит из обмотки и группы контактов. Когда на обмотку подаётся ток, контакты переводятся. Можно написать элемент, который будет описывать такое поведение?

Под понятием соответствующая лог схема можно понимать и набор функций алгебры логики, но она не описывает прохождения тока в цепи

pseudo-cat ★★★
() автор топика
Ответ на: комментарий от pseudo-cat

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

т.е. у вас, как я понимаю, значения переменных 0 и ±1, да? В таком случае это многочлен над полем Галуа GF(3). Т.е. тоже самое что в SICP, но в троичной СС. В принципе тоже самое, что и в двоичной логике.

emulek
()
Ответ на: комментарий от emulek

это ты о том что у нас тормозило? нет, там у нас использовался SPICE. Правда это делалось задолго до меня и я не знаю всех подробностей. Или имеется в виду использование дополнительного состояния «отсутствие сигнала» в упражнении из СИКП?

pseudo-cat ★★★
() автор топика
Ответ на: комментарий от anonymous

в принципе это логическая схема с учётом электрических цепей. Не так важно знать силу тока в той или иной точке схемы, главное - есть ли путь для прохождения тока

pseudo-cat ★★★
() автор топика
Ответ на: комментарий от pseudo-cat

Прям так реле на верилоге не опишешь.

Но. Если схема на реле число логическая, не вижу никаких проблем нарисовать её эквивалент на доступных в верилоге примитивах.

Выводы контактной группы реле, подключенные к земле или питанию, из рассмотрения исключить.

Остальные рассматривать как tristate логические выходы (возможные состояния: 0, 1 и Z = high impedance).

Выводы катушек, подключенные к земле или питанию тоже исключить из рассмотрения.

Остальные выводы катушек рассматривать как инвертирующие или неинвертирующие логические входы.

Как-то так.

anonymous
()
Ответ на: комментарий от pseudo-cat

Или имеется в виду использование дополнительного состояния «отсутствие сигнала» в упражнении из СИКП?

в СИКП это как- то костыльно было реализовано, чисто для иллюстрации наверное.

Ну и вообще, я что-то не совсем понимаю твою задачу. Похоже ты сам её не совсем понимаешь...

emulek
()

Весь фокус в том, что симуляция схем должна происходить тем же способом, что и автоматическая сборка мусора: состояние всех элементов определяется/меняется либо параллельно, либо методом «stop the world». В зависимости от того, что позволяет вытворять выбранный ЯП.

blexey ★★★★★
()
Ответ на: комментарий от pseudo-cat

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

и ещё. на глаз. процент связности элементов между собой. не делятся ли они на группы обособленные внутри которых связей много, а с внешним миром мало. 100% - полностью единый комплекс, 0% - ничем не связаны. несвязанные группы одного реле и обмотка реле - являются разными элементами.

anonymous
()
Ответ на: комментарий от blexey

для этого в приведенном примере используется Agenda, то есть расписание.

pseudo-cat ★★★
() автор топика
Ответ на: комментарий от emulek

задача - имитировать логическую часть электрической схемы. Разница с СИКП в том, что там подразумевается что если есть путь протекания тока, то есть и ток, а моей задаче есть ограничение в виде источника питания. Это если не заморачиваться с реальным расчётом токов.

pseudo-cat ★★★
() автор топика
Ответ на: комментарий от anonymous

что-то не очень понятно, к примеру есть схема, в которой к выводам источника питания параллельно подключены 2 цепочки:

  • последовательно обмотка реле А и контакт реле B(в нормальном состоянии замкнут).
  • последовательно обмотка реле B и контакт реле A(в нормальном состоянии разомкнут).

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

pseudo-cat ★★★
() автор топика
Ответ на: комментарий от anonymous

уникальных в смысле не как реле и группа контактов этого реле? ну вот 100 реле это норм, остальное электрическая увязка. Или ты про виды элементов? вообще на схеме есть почти все виды электрических элементов, основные и наиболее частые - резисторы, трансформаторы, катушки, конденсаторы. Цифровых элементов нет, их роль выполняют реле.

и ещё. на глаз. процент связности элементов между собой.

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

pseudo-cat ★★★
() автор топика
Ответ на: комментарий от pseudo-cat

полный граф связей элементов меняется при включении/отключении реле. это можно использовать для снижения сложности задачи. строить не полную матрицу, делая сопротивление отключенного реле десятки мегаом, а несколько мелких матриц для каждого из фрагментов полного графа. перестраивать матрицы при переключении реле. в простом случае перестраивать полный набор матриц при переключении любого реле. но нужен низкий уровень связанности элементов.

anonymous
()
Ответ на: комментарий от anonymous

то есть по графу создаём пары, типа:

ei, ((kj[val],... )...)
где ei - некоторый электрический элемент.
kj - контакт
val - положение контакта
если хоть один из списков содержит контакты, для которых в данный момент времени выполняются условия по val, то элемент индуцируется.
примерно так? Если просто матрицу делать, то там как-то надо прописывать логические операции или делать кучу матриц.

Так это получается равносильно дизъюнктивной нормальной форме(ДНФ). То есть равносильно логическому описанию схемы относительно каждого электрического элемента и источника протекания энергии. Это оооочень жирно. Можно попытаться упростить, сделав связь между электрическими элементами, вида

ei, ((ej)) и ej, ((ei))
. Я правильно понимаю твою идею?

pseudo-cat ★★★
() автор топика

Перестань читать мурзилки для дошкольников, и смотри на правильные симуляторы - тот же SPICE, например.

anonymous
()
Ответ на: комментарий от pseudo-cat

Ну вот и посмотри, как эту реальную задачу решили реальные люди в реальном SPICE.

anonymous
()
Ответ на: комментарий от anonymous

Ты это вообще к чему сказал, тупенький?

anonymous
()
Ответ на: комментарий от anonymous

насколько я помню ТОЭ, расчёт делается относительно кого-нибудь элемента, если без упрощений, это надо искать все пути протекания тока от этого элемента до источника и считать падения тока на элементах путей и в точках соединений проводов. В принципе, рассчитав в первый раз для всей схемы токи, можно считать что она в стабильном положении и затем пересчитывать от элемента, на котором произошло изменение(к примеру контакт, открытие/закрытие имитирую огромным сопротивлением) или конденсатор. Затем добавить расписание, имитирующее переходные процессы и зарядку элемента, добившись цифрового поведения от аналоговых элементов(конденсатор заряжен/разряжен)

pseudo-cat ★★★
() автор топика
Последнее исправление: pseudo-cat (всего исправлений: 1)
Ответ на: комментарий от anonymous

verilator - cycle-accurate, это вообще из другой оперы.

Я в курсе, просто когда писал не понял что ТС хочет в итоге.

ebantrop
()
Ответ на: комментарий от pseudo-cat

Не взлетит? Тогда надо с механиками разбираться, а не с самолетом.

SPICE для интегральных схем разрабатывали, а уж там несколько сотен элементов никак не предел мечтаний. В конце концов, это обычное решение матрицы, тот же GPU такое просто обожает.

Релейная логика (если не нужно считать пробои, индукции, т.е. динамику) легко заменяется двоичной, а ее на транзисторных и уж тем более логических схемах собрать несложно.

Может, немного подробностей можно описать? Сколько элементов (пара сотен), какая нужна скорость (обернуть матрицу - вопрос нескольких секунд, никак не минуты)? В чем это уже считалось, и что не понравилось?

Единственное, что можно точно сказать: писать велосипед точно не нужно. Инструменты уже должны быть 100%, так что кодить можно только из спортивного интереса.

anonymous
()
Ответ на: комментарий от pseudo-cat

вот это бутерброд. Почитай как перевести элементы электрической схемы в эквивалентные «примитивные» цепи. возьми упрощенные спайс модели, считаться будет очень быстро.

anonymous
()
Ответ на: комментарий от pseudo-cat

это уже проходили, у нас не взлетело, очень долго считалось

Странно. Если у вас куча реле, вероятно можно их заменить на ключи с соответствующим входным сопротивлением и емкостью? Моделей ключей наволом например тут.

ebantrop
()
Ответ на: комментарий от anonymous

в принципе ты прав, реле можно представить как электрическую цепь с элементом задержки + элемент И с двумя входами, вход электрической цепи реле включить в месте включения реле.

pseudo-cat ★★★
() автор топика
Ответ на: комментарий от anonymous

я хз что у них там долго считалось, человек, который этой работой занимался уже в другом месте работает, но я что-то слышал от чувака, «поддерживающего» этот код, про переходные процессы на трансформаторах

pseudo-cat ★★★
() автор топика
Последнее исправление: pseudo-cat (всего исправлений: 2)
Ответ на: комментарий от pseudo-cat

Вот такое вполне может быть, ежели с трансформаторами.

«Суть такова» (с)

Если в схеме есть только резисторы и напряжометры, то все тип-топ, уравнения для токов алгебраические и линейные. Стало быть, рисуется матрица, решается, и вуаля, посчитанная схема.

Если же добавляются элементы с памятью (конденсаторы и катушки), то все становится грустнее, т.к. появляются дифуры.

Здесь одним решением, как раньше, не обойтись, нужно сделать по итерации для каждого временнОго шага.

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

Если такое решение сделано правильно, то автоматом высчитаются все выбросы напряжений при коммутации, учтутся паразитные параметры и взаимоиндуктивности релейных катушек (здравствуйте, трансформатры!).

Но это фигова работа и при составлении уравнений, и при решении — вот и тормоза при расчетах. Да и вообще, если это самописное, то накосячить в вычислениях — как два байта переслать.

Однако. Если считается, что тонкие эффекты можно выкинуть нафиг, т.к. система спроектирована как надо, то жить становится лучше, жить становится веселее.

Тут остаются только управляющие сигналы и задержки. Для этого подойдет и цифровые симуляторы (проверить логику с задержками), и SPICE (вот здесь можно варьировать сложность от «ключи + задержки» до всего того, что выше описано).

Можно поставить QUCS, в нем есть и аналоговые, и цифровые симуляции.

И еще. Может быть, стоит приглядеться к софту по релейной логике? http://ru.wikipedia.org/wiki/Ladder_Diagram

А там, глядишь, и на ПЛК переедете :)

anonymous
()

*для себя, чтобы не забыть за выходные*

можно хранить в проводах значение *есть питание*, тогда если на входе элемента логическая единица, то если на выходе провод с питанием, то передавать лог ед дальше

pseudo-cat ★★★
() автор топика
Ответ на: комментарий от anonymous

я вот одного не пойму, пусть я составил логическую схему для SPICE, я могу в ней подключить источник напряжения и будет ли он корректно работать(логический элемент, подключенный к + источника, на выходе даёт логическую единицу, если выход под - источника)? или там просто распространение логической единицы дальше по схеме?

pseudo-cat ★★★
() автор топика
Ответ на: комментарий от anonymous

Если в схеме есть только резисторы и напряжометры, то все тип-топ, уравнения для токов алгебраические и линейные.

и не соответствуют реальным токам? то есть настолько, что элементы отрабатывать не будут

pseudo-cat ★★★
() автор топика
Ответ на: комментарий от pseudo-cat

на протяжении всего этого топика, у тебя пытаются узнать глубину симуляции. И все никак не можем понять, если тебе все надо на уровне логики посмотреть, то что за сожаления по поводу трансформаторов, в которых ты не сможешь увидеть переходные процессы. ну а сообщение на которое я отвечаю надо записать в перлы. спайс модель позволяет упростить расчеты, до требуемых тебе, увидишь свои токи, увидишь, всего остального нет, но оно тебе и не надо похоже.

anonymous
()
Ответ на: комментарий от pseudo-cat

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

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.