Jump to content

    
Sign in to follow this  
Voyager

PSpice моделирование в OrCAD

Recommended Posts

Там должно быть умножение Variable admittance: Yout = Yref * V

 

Здравствуйте!

 

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

Столкнулся c такой проблемой: некорректно работают аналоговые функциональные блоки e(g)value в многовариантном анализе (точнее, в Monte-Carlo).

Правильно, гарантированно работает e(g)value только один первый раз при номинальном значении изменяемого параметра,

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

Строка с логикой предельно простая:

 

E_control 10 0

+ value {if((abs(I(V3))>{Ihold}),1,0)}

 

Даже когда условие abs(I(V3))>{Ihold} не выполняется, т.е. ток меньше заданного (Ihold), нуль на выходе блока evalue выставляется далеко не всегда. - Мистика.

В Probe я наблюдаю ток по точкам, он вблизи нуля и меньше порога Ihold, а команда "0" не выдается. Возможно это баг версии 9.2?

 

В прикрепленном файле-осциллограмме блок работает правильно только один (первый) раз (порог - 20 мА). В остальных двух случаях evalue не работает.

 

У кого-нибудь были подобные глюки? Поделитесь, пожалуйста, опытом.

 

Заранее спасибо.

post-38519-1363664751_thumb.jpg

Share this post


Link to post
Share on other sites
Здравствуйте!

 

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

Столкнулся c такой проблемой: некорректно работают аналоговые функциональные блоки e(g)value в многовариантном анализе (точнее, в Monte-Carlo).

Правильно, гарантированно работает e(g)value только один первый раз при номинальном значении изменяемого параметра,

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

Строка с логикой предельно простая:

 

E_control 10 0

+ value {if((abs(I(V3))>{Ihold}),1,0)}

 

Даже когда условие abs(I(V3))>{Ihold} не выполняется, т.е. ток меньше заданного (Ihold), нуль на выходе блока evalue выставляется далеко не всегда. - Мистика.

В Probe я наблюдаю ток по точкам, он вблизи нуля и меньше порога Ihold, а команда "0" не выдается. Возможно это баг версии 9.2?

 

В прикрепленном файле-осциллограмме блок работает правильно только один (первый) раз (порог - 20 мА). В остальных двух случаях evalue не работает.

 

У кого-нибудь были подобные глюки? Поделитесь, пожалуйста, опытом.

 

Заранее спасибо.

 

Ошибка найдена!

Оказывается PSpice в многовариантных расчетах (кроме первого) не всегда умеет точно вычислять модуль значения (abs(x)). Например:

X Abs(X)

13A 13 A

. .

. .

76mA 76mA

41mA 70 mA !

0 85 mA !

-14mA 94mA !

-49mA 108mA !

-67mA 116mA !

 

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

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

Интересно, как это реализовано в тиристорах и как обойти проблему.

 

 

Таким образом, в многовариантных расчетах (Parametric, WC, Monte-Carlo) можно ожидать неверной работы моделей.

Edited by Vlad01

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this