04.06.2018, 18:25
|
|
Временная регистрация
Регистрация: 26.12.2005
Сообщений: 55
Сказал спасибо: 23
Сказали Спасибо 11 раз(а) в 8 сообщении(ях)
|
Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только
Объясните откуда такие значения?
Почему не получается задать начальный ток индуктивности через PRECHARGE?
Последний раз редактировалось joogorden; 13.06.2018 в 20:40.
|
|
|
|
18.09.2018, 10:18
|
|
Прохожий
Регистрация: 23.10.2009
Сообщений: 2
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только
Здравствуйте, столкнулся с такой проблемой: создал активный компонент с кнопками INC, DEC и окном отображения температуры, собрал MDF файл, накидал DLL файлик. Но при чтении с SETPOINT читается температура которая была установлена при остановленной симуляции, а при рабочей не изменяется. Но стоит остановить и снова запустить, читается последняя выставленная и тоже самое, перехватывает ранее установленную. Установлен Proteus 7.10 на Win7 x64 компилятор VS 2008 писал в MFC. Почему не изменяет в реальном времени не пойму уже неделю бодаюсь. Прошу помочь сильно не пинайте, а скажите хотя бы в какую сторону копать. Заранее благодарен. все файлы во вложении (в папке debug - релизовский файл dll).
|
|
|
|
19.09.2018, 03:22
|
|
Прописка
Регистрация: 17.03.2015
Сообщений: 296
Сказал спасибо: 0
Сказали Спасибо 220 раз(а) в 126 сообщении(ях)
|
Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только
Сообщение от remden
|
Но при чтении с SETPOINT читается температура которая была установлена при остановленной симуляции, а при рабочей не изменяется.
|
У Вас применяется иерархическая схема модели:
- Сверху: Родительский компонент: маркеры INC, DEC и SETPOINT.dll
- Снизу: Дочерний компонент: MDF-файл, на котором расположен компонент с Вашей MAX31855.dll
При этом, сверху вниз, передается переменная SETPOINT, которую Вы и пытаетесь считывать своей dll-кой. Т.е., Вы своей dll-кой считываете переданную в дочерний компонент переменную.
Дело в том, что в Proteus, переменные из родительской в дочернюю части передается ТОЛЬКО при СТАРТЕ симуляции.
Поэтому Вы и получили достаточно закономерный результат.
Попробуйте использовать функцию IACTIVEMODEL *IINSTANCE::getactivemodel (VOID)
Честно говоря, мне не приходилось использовать данную функцию, но, судя по описанию:
Цитата:
|
If the instance is not directly associated with a component on the schematic
PROSPICE will search up the design hierarchy for the parent component and then return its
IACTIVEMODEL interface, if any.
|
это именно то, что Вам нужно.
По коду вижу, что Вы пытались применить данную функцию - сможете описать возникшие проблемы с ее использованием. А завтра, попробую поэксперементировать с Вашим кодом уже в VS.
|
|
|
|
19.09.2018, 13:38
|
|
Прописка
Регистрация: 17.03.2015
Сообщений: 296
Сказал спасибо: 0
Сказали Спасибо 220 раз(а) в 126 сообщении(ях)
|
Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только
remden
В Вашем случае, есть простейший способ получить значение из SETPOINT.dll, давно описанный Halex07 (см. FAQ (ЧаВО) по PROTEUS для начинающих и не только часть IV, 8.3).
Т.е. необходимо в компоненте MAX31855_MDF сделать еще два контакта и подсоединить к нему любой компонент с двумя выводами (+ и -), заменив все поле All Properties на значения, приведенные на рис.1.
Тогда считывание значений с этих контактов и даст текущее значение переременной SETPOINT.
В данном случае, меня больше, все же, интересует использование функции getactivemodel. Поэтому, сейчас продублирую вопрос по ее использованию в ветку Создание DLL-моделей в Proteus. Описание VSM API..
|
|
|
Сказали "Спасибо" ProtAS-13
|
|
|
19.09.2018, 23:17
|
|
Прохожий
Регистрация: 23.10.2009
Сообщений: 2
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только
Спасибо ProtAS-13 но я к тому времени решил свою проблему, но идея тоже интересна, в дальнейшем попробую. Так как на сайте не много описаний работы с DLL файлами, вложу свою лепту по ним и активным компонентам на основе микросхемы MAX31855. Возможно на форуме аналогичное описывалось в разных темах, но на данный вопрос я ответа не нашел и решил объединить и расписать, так как многие могут столкнутся с аналогичной проблемой. Это демонстрационная рабочая модель, за исключением некоторых тайминговых задержек и нелинейность получения показаний с термопары. Ответственность за использование модели и/или программного кода автор не несет.
И так приступим: создаем как ранее не раз было описано графический элемент из 2D graphics -› Box mode -› COMPONENT - задний фон элемента, указываем маркер ORIGIN и сразу создаем из этого символ Library-›Make symbol с именем SENS_0 в библиотеке USERSYM. Рисуем зону отображения данных 2D graphics -› Box mode -› INDIKATOR, после чего удаляем задний фон элемента оставив маркер 2D graphics -› Markers mode -› ORIGIN и снова создаем символ Library-›Make symbol с именем SENS_1 в той же библиотеке. Удаляем всю графику и переходим в 2D graphics -› Symbols mode, где наши свежеиспеченные символы. Теперь добавляем их начиная с SENS_0 на рабочую область совместив точку вставки (если добавить в обратном порядке, то задний фон перекроет индикатор, тогда надо будет выделить задний фон и переместить его на задний план нажав Ctrl+B). Добавим кнопки инкремента и декремента из 2D graphics -› Markers mode -› IN-CREMENT и DECREMENT. Назначим модели выводы из Device Pins mode -› DEFAULT после чего их подпишем T+, T-, CS, CLK с типом IP input и SDO с типом OP output.
Добавляем рядом с моделью скрипт из Text script mode и добавляем следующее:
{*DEVICE}
NAME=MAX31855K
{PREFIX=DA}
{ACTIVE=SENS,2,DLL}
{DATA=pdfs/maxim/MAX31855.pdf}
{*PROPDEFS}
{MODDLL="VSM Model DLL",HIDDEN STRING}
{STEP="Temperature step",FLOAT}
{SETPOINT="Temperature",FLOAT}
{FORMAT="Displey format",STRING}
{MAX="Max. temperature",FLOAT}
{MIN="Min. teperature",FLOAT}
{PACKAGE="PCB Package",PACKAGE,1,DIP8}
{PRIMITIVE="Primitive Type",HIDDEN STRING}
{*INDEX}
{CAT=Data Converters}
{SUBCAT=Temperature Sensors}
{MFR=USERS}
{DESC=Конвертор температуры}
{*COMPONENT}
{MODDLL=MAX31855}
{STEP=0.5}
{SETPOINT=20.0}
{FORMAT=3.1}
{MAX=127}
{MIN=-55}
{PACKAGE=DIP8}
{PRIMITIVE=DIGITAL,MAX31855}
*PINOUT DIP8
{ELEMENTS=1}
{PIN "CLK" = 5}
{PIN "CS" = 6}
{PIN "SDO" = 7}
{PIN "T+" = 3}
{PIN "T-" = 2}
{PP (Vcc) = 4}
{PP (GND) = 1}
{COMMON=Vcc,GND}
Это избавит меня и вас заполнением всех полей при создании устройства.
Теперь можно создать модель, выделяем, то что натворили с скриптом и жмем Library-›Make devices и мы уведем что необходимые поля у нас уже заполнены, нам остается жать Next до конца. Если кто-то желает изменить месторасположение элемента, то на последней вкладке можно это сделать или оставить так как есть. Жмем OK. Но нас далее ждет неприятный выпад со стороны Proteus, он смачно ругнется и выкинет окно, что мол не может он отобразить элемент, так как не может найти файл DLL. Если проигнорировать это предупреждение и нажать кнопку OK и попробовать вставить нашу модуль, элемент вставится, но без индикатора и кнопок и снова ругнется ISIS.
Если долго не мучатся и сразу скопировать в папку MODELS вложенный DLL файл, то модель сразу начнет работать, либо запускаем Visual Studio и начинаем пыхтеть над кодом.
Запускаем Visual Studio и создаем новый проект выбрав тип Win32 или MFC (кому как нравится, я использовал MFC, не надо заморачиватся с stdafx и пропиской дополнительных классов) -› Библиотека DLL либо проект Win32 DLL. Название MAX31855, если использовать другое название, тогда придется либо переименовывать выходной файл, либо в модели в MODDLL изменить подключаемый файл. На вкладке "Параметры приложения" выбираем Обычная DLL со статической связью, чтобы не заботится о дополнительных включений, если потребуются. Жмем OK. Сразу заходим в свойства проекта нажав Alt+F7 и в Свойства конфигурации -› Общие -› в строке Набор знаков меняем кодировку - Использовать многобайтовую кодировку, для того чтобы можно было писать, преобразовывать строки и месседжи без лишних танцев с бубнами.
Смотрим в обозреватель решений, за нас все сделала студия создав минимальный набор файлов. Их не трогаем вообще и создаем два файла через Проект -› Добавить новый элемент... заголовочный файл например Max_conv.h и файл С++ Max_conv.cpp. Копируем в папку с проектом файл vsm.hpp и добавляем его к проекту Проект -› Добавить существующий элемент выбрав в паке этот файл.
Писать программный код здесь я не буду, кому интересно в вложении в файлах Max_conv.h/cpp подробно с комментариями все описано его достаточно скопировать и вставить в созданные файлы, остановлюсь только на некоторых моментах.
Так как у нас цифровая и аналоговая модель используется класс IMIXEDMODEL который объединяет оба параметра и отвечает за инициализацию выводов и установку/чтение их состояния, реакцию на изменение их состояния, установку скорости нарастания/спада перехода из состояния в состояние. Для аналоговых цепей предусмотрены функции расчета напряжения и тока. А также связь с графической частью.
Для работы с графикой используется класс IACTIVEMODEL, он работает как в симуляции так и в режиме моделирования (поэтому компилятор у нас ругался). Соответственно если вы отлаживаете код с этим классом, то вам придется полностью закрывать окно ISIS для замены DLL файла после компиляции, иначе он будет не доступен для перезаписи. В этом классе можно с нуля нарисовать требуемый элемент зная основы вывода графики в С++. Он имеет непосредственную связь с аналоговым, цифровым и микс классами. Также входят функции которые вызываются: перед перерисовкой области при ее изменении; при нажатии кнопок мыши или клавиатуры; при изменении электрической модели.
Файл vsm.hpp - является связующим с Proteus, в нем можно посмотреть все классы и входящие функции, флаги и структуры, кто пишет на С++ не составит труда разобраться. Это другая тема и есть много аналогичных форумов по программированию.
Немного об отладке для просмотра куда и от куда что берется и кто кого посылает. После написания кода и сборки проекта в Debug не спешите жать зеленую кнопку выполнения программы, это вам ничего не даст, так как это не приложение, а библиотека. Для запуска симуляции запустите сам ISIS и в компиляторе выберите Сервис -› Присоединится к процессу... в списке процессов найдите ISIS.exe выберите его и нажмите кнопку присоединится. Поставьте на интересующих строках точки останова (двойным кликом или кнопкой F9), у меня они при запуске как будто не активные, но все равно перехватывают со-бытия. Теперь можно мучить модель и смотреть переменные. Редактирование во время выполнения возможно, если про-грамма остановилась на точке останова, если отредактировать код во время работы, то изменения не примутся и придется перезаписывать DLL-ку.
На этом я остановлюсь, проект и модель во вложении, а также описание функций на английском языке в pdf файле (автора и ресурса откуда он был взят не помню, так что за ранее извиняюсь).
|
|
|
|
24.01.2019, 21:50
|
|
Прохожий
Регистрация: 24.01.2019
Сообщений: 1
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только
Сообщение от Halex07
|
Лёд тронулся (!!!), господа присяжные заседатели.
FAQ возобновляется и продолжается. Материал пока буду выкладывать применительно к версии 7.10, как наиболее стабильной и последней из седьмых.
По прежнему напоминаю, что в этой ветке чужие посты с просьбами, пожеланиями и прочей ерундой типа: "купите мне очки - не вижу куды тыкать" удаляются мною без лишних предупреждений, когда выкладывается свежий материал.
Личные просьбы на мыло: Halex0560@mail.ru - отвечаю по мере возможностей.
Вопросы и замечания по FAQ сюда:
https://kazus.ru/forums/showthread.php?t=13585&page=29
И убедительная просьба не тыкать кнопку Спасибо конкретно под этим постом, я его все-равно удалю, когда выкладываю новый материал.
|
Почему так внезапно прервался сей великий труд?
Надеюсь, с автором всё хорошо?
|
|
|
|
17.11.2019, 03:13
|
|
Прохожий
Регистрация: 18.01.2009
Адрес: г.Иваново
Сообщений: 2
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только
Спасибо за отличное руководство по Протеусу
|
|
|
|
24.11.2019, 15:49
|
|
Прохожий
Регистрация: 23.11.2019
Сообщений: 7
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только
Доброго времени суток. Как реализовать К147УД2 в Proteus 8.
|
|
|
|
24.11.2019, 17:34
|
|
Вид на жительство
Регистрация: 07.11.2016
Сообщений: 485
Сказал спасибо: 117
Сказали Спасибо 138 раз(а) в 90 сообщении(ях)
|
Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только
Уверен, что не нужна 157-я.
Можно поставить любую другую.
|
|
|
|
24.11.2019, 18:18
|
|
Прохожий
Регистрация: 23.11.2019
Сообщений: 7
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только
Приведите пример какую. Это металлоискатель пират/
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 06:05.
|
|