Ошибка открытия файла с таблицами температурной линеаризации

Тема: Настройка блока линеаризация для температурных датчиков других производителей  (Прочитано 4279 раз)

Закупили датчики другого производителя (во вложении столбец NTC 10, производитель Trend). Есть зависимость между температурой и сопротивлением, как связать это с кодом АЦП для настройки блока линеаризации?


Записан


Код АЦП рассчитывается по формуле КОД_АЦП=1023*Rдатчика/(Rдатчика+10000), где Rдатчика — сопротивление датчика в омах.

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


Записан


В табличке, которая во вложении Sensor_characteristics.pdf , сопротивление указано в Омах?


Записан


В табличке, которая во вложении Sensor_characteristics.pdf , сопротивление указано в Омах?

Да, в Омах


Записан


кстати на М100 на первом выходе есть переключение на высокоомный вход… тогда подставлять 110000 вместо 10000
и кто будет пользовать формулу, следить при разорваной цепи, на АЦП будет 1023, следовательно в формуле будет деление на 0… отслеживать этот момент


Записан


Здравствуйте друзья, меня уже давно не было. Я вернулся, чтобы предложить очередную больную идею.
Да, я всё ещё брежу UniMod и речь пойдёт именно о его дальнейшем развитии.
У первой версии UniMod есть масса проблем. Они касаются не только безопасности выполнения скриптов, но и поддержки разработки — весь процесс крайне неудобный и небезопасный.

Ещё года три назад у меня была идея как это преодолеть — использовать lua 5.2. Я начал другой проект, назвал его UniMod2. Идея была в том, чтобы собрать функционал с первого UniMod, но сделать всё безопаснее и красивее. С его помощью я хотел создать sandbox-ы для каждой карты: отдельно sandbox для модов, и отдельно глобальный. То есть выстроить некую иерархию, где скрипты карты не могли бы нарушить выполнение более высокоуровневых скриптов (допустим после смены карты, все таймеры должны были бы отключаться. Ещё была идея добавить события как объекты). Перейти на full userdata для внутриигровых объектов, там образом добавить им контекст, как следствие сделать безопаснее (playerLook мог бы проверять какой параметр игрок, а какой — объект, и не вызывать падение игры, если их перепутать).
Так же у проекта была четкая цель — как минимум создать альтернативу внутренним скриптам Nox. Как результат работы — переписать скрипты какой-нибудь карты из компании на UniMod2.

Прошло уже много времени, я увидел возможность сделать сам процесс разработки более продуктивным и понятным. Для связывания lua кода и C++ существуют разные проекты. Год назад я впервые услышал о sol2.

Что я предлагаю?
UniMod3!

Под спойлером я приведу ключевые идеи UniMod3, все они являются объектом для обсуждения. В целом если наберётся команда, дальнейшее документирование считаю целесообразным перенести на некую wiki (ту же с github).

Что я жду в качестве помощи?

  • Основное и самое болезненное для меня — помощь в дизассемблировании Nox. Конечно, многое уже сделано в этом направлении, но много всё ещё не хватает. Это было самой большой проблемой во время разработки UniMod2 (не считая моей безграмотности)
  • Разработчик С++. Любая помощь или идеи
  • Если наберётся больше одного человека, необходимо будет как-то организовывать процесс разработки. С этим тоже нужна помощь.
  • Знаю, что идея UniMod не новая в мире игр. Уже есть подобные примеры (Garry’s mod?). Если кто знает как они работают внутри, было бы интересно послушать

Хотел бы выделить некие цели для проекта. Достижение этих целей будет означать что проект дошёл до версии 1.0. Это не означает что кроме этого больше ничего не будет, но предлагаю сконцентрировать усилия именно в этих направлениях.

Куда писать?
Пишите в эту тему. Или мне на почту: Darkclainer@gmail.com
Если наберутся люди — придумаем как лучше организовать связь.

Ещё момент…
Зная, что осталось мало людей интересующихся Nox, планирую перевести этот призыв на английский и опубликовать ещё где. Расскажите, какие сейчас есть популярные международные форумы посвящённые Nox, а я пока сделаю перевод.
UPD: Нашёл noxcommunity.com, пост там. Перевод немного отличается, чуть более чётко сформулирвал мысли, но не уверен, что мой английский очень понятный.

А теперь неприятный момент…
Я потерял свою IDA бд для Nox. Надеюсь у кого осталась..?
UPD2: БД вернулась! Большое спасибо KirConjurer!

За последние несколько недель некоторые из наших пользователей поверили ошибкам линеаризации Simulink.

Рекомендуется: ASR Pro

  • 1. Скачайте и установите ASR Pro
  • 2. Откройте программу и нажмите «Сканировать»
  • 3. Нажмите «Восстановить», чтобы начать процесс восстановления.
  • Загрузите это программное обеспечение и почините свой компьютер за считанные минуты. г.

    <ч><ч><ч><ч>

    #одинБазз1024

    <ул>

  • Ошибка линеаризации Simulink

    A0005062, за которой следует современный Win32..
    A0005099 новый Win32..
    A0005100 новый Win32..
    A0005101 новый Win32..
    A0005102 new Win32..
    A0005103 new Win32.. < >A0005109 br New Win poly..
    A0005120 New Poly Win..
    A0005131 New Poly Win32..file

    Рекомендуется: ASR Pro

    Вы устали от медленной работы компьютера? Он пронизан вирусами и вредоносными программами? Не бойся, друг мой, ASR Pro здесь, чтобы спасти положение! Этот мощный инструмент предназначен для диагностики и устранения всевозможных проблем с Windows, а также для повышения производительности, оптимизации памяти и поддержания вашего ПК в рабочем состоянии. Так что не ждите больше — скачайте ASR Pro сегодня!

  • 1. Скачайте и установите ASR Pro
  • 2. Откройте программу и нажмите «Сканировать»
  • 3. Нажмите «Восстановить», чтобы начать процесс восстановления.
  • Поиск и устранение проблем с результатами линеаризации в командной строке

    В этом примере показано, как отлажить линеаризацию модели Simulink ® в командной строке с помощью LinearizationAdvisor объект. Можно также диагностировать результаты линеаризации в интерактивном режиме. Для получения дополнительной информации смотрите Поиск и устранение проблем с результатами линеаризации в Model Linearizer.

    Откройте модель.

    mdl = 'scdpendulum';
    open_system(mdl)
    

    Начальное условие угла маятника 90 степени против часовой стрелки от вертикального нестабильного равновесия 0 степени. Начальное условие скорости вращения маятника 0 град/с. Номинальный крутящий момент для поддержания этого состояния -49.05 N м. Это строение сохранено как начальное условие модели.

    Линеаризация модели

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

    io = getlinio(mdl);
    linsys = linearize(mdl,io);
    

    Чтобы проверить результат линеаризации, постройте график его отклика Bode.

    Модель линеаризировалась до нуля, так что крутящий момент, tau, не влияет на угол или скорость вращения. Чтобы найти источник нулевой линеаризации, можно использовать LinearizationAdvisor объект.

    Линеаризация модели с включенным Advisor

    Чтобы собрать диагностическую информацию во время линеаризации и создать советника для поиска и устранения проблем, сначала создайте linearizeOptions набор опций, задающий StoreAdvisor опция как true.

    opt = linearizeOptions('StoreAdvisor',true);
    

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

    [linsys1,~,info] = linearize(mdl,io,opt);
    

    Извлечение LinearizationAdvisor объект.

    Подсветка пути линеаризации

    Чтобы показать путь линеаризации для текущей линеаризации, используйте highlight.

    Просмотрите подсистему маятника.

    Как показано в диалоговом окне Путь линеаризации, блоки подсвечены в:

    • Синий численно влияет на линеаризацию модели.

    • Красный цвет находится на пути линеаризации, но не влияет на линеаризацию модели для текущей рабочей точки и параметров блоков.

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

    Исследуйте потенциально проблематичные блоки

    Чтобы получить диагностическую информацию для блоков, которые могут быть проблематичными для линеаризации, используйте advise. Эта функция возвращает новое LinearizationAdvisor объект, который содержит информацию о блоках в пути линеаризации, которые удовлетворяют, по крайней мере, одному из следующих критериев:

    • Иметь диагностические сообщения относительно их линеаризации

    • Линеаризируйте в нуль

    • Иметь замещенные линеаризации

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

    ans = 
    
    Linearization Diagnostics for the Blocks:
    
    Block Info:
    -----------
    Index   BlockPath                                           Is On Path   Contributes To Linearization   Linearization Method   
    1.      scdpendulum/pendulum/Saturation                     Yes          No                             Exact                  
    2.      scdpendulum/angle_wrap/Trigonometric Function1      Yes          No                             Perturbation           
    3.      scdpendulum/pendulum/Trigonometric Function         Yes          No                             Perturbation           
    

    В этом случае советник сообщает о трех потенциально проблематичных блоках, блоке Насыщения и двух блоках Тригонометрической Функции. Когда вы запускаете этот пример в MATLAB, пути к блокам отображаются как гиперссылки. Чтобы перейти к одному из этих блоков в модели, щелкните соответствующую гиперссылку пути блока.

    Чтобы просмотреть дополнительные сведения об определенной линеаризации блоков, используйте getBlockInfo. Для получения информации о доступной диагностике смотрите BlockDiagnostic.

    Для примера получите диагностическую информацию для блока Насыщения.

    diag = getBlockInfo(adv1,1)
    
    diag = 
    
    Linearization Diagnostics for scdpendulum/pendulum/Saturation with properties:
    
                          IsOnPath: 'Yes'
        ContributesToLinearization: 'No'
               LinearizationMethod: 'Exact'
                     Linearization: [1×1 ss]
                    OperatingPoint: [1×1 linearize.advisor.BlockOperatingPoint]
    
    

    Этот блок имеет два диагностических сообщения относительно его результата линеаризации. Первое сообщение указывает, что блок линеаризируется вне нижнего предела насыщения -49, так как рабочая точка входа -49.05.

    Сообщение также указывает, что блок может быть линеаризирован как усиление, что линеаризирует блок как 1 независимо от входа рабочей точки.

    Когда вы запускаете этот пример в MATLAB, текст, линеаризирующий блок как усиление, отображается как гиперссылка. Чтобы открыть диалоговое окно Параметров блоков для блока Насыщения и выделить опцию для линеаризации блока как усиления, щелкните эту гиперссылку.

    При линеаризации выберите Обработку как коэффициент усиления и нажмите кнопку ОК.

    Также можно задать этот параметр из командной строки.

    set_param('scdpendulum/pendulum/Saturation','LinearizeAsGain','on')
    

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

    ans =
     
      D = 
           u1
       y1   0
     
    Name: Saturation
    Static gain.
    
    

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

    Релинеаризация модели

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

    [linsys2,~,info] = linearize(mdl,io,opt);
    bode(linsys2)
    

    Линеаризация модели теперь ненулевая.

    Чтобы проверить, все ли блоки все еще потенциально проблематичны для линеаризации, извлеките объект advisor и используйте advise функция.

    advisor2 = info.Advisor;
    adv2 = advise(advisor2);
    

    Просмотрите диагностическую информацию блока.

    ans = 
    
    Linearization Diagnostics for the Blocks:
    
    Block Info:
    -----------
    Index   BlockPath                                           Is On Path   Contributes To Linearization   Linearization Method   
    1.      scdpendulum/angle_wrap/Trigonometric Function1      Yes          No                             Perturbation           
    2.      scdpendulum/pendulum/Trigonometric Function         Yes          No                             Perturbation           
    

    Два блока Тригонометрических функций все еще перечислены.

    Выделите путь линеаризации для обновленной линеаризации.

    Просмотрите подсистему маятника.

    Чтобы понять, почему эти блоки не способствуют линеаризации, смотрите их соответствующую диагностическую информацию блока. Для примера получите диагностическую информацию для второго блока Trigonometric Function.

    diag = getBlockInfo(adv2,2)
    
    diag = 
    
    Linearization Diagnostics for scdpendulum/pendulum/Trigonometric Function with properties:
    
                          IsOnPath: 'Yes'
        ContributesToLinearization: 'No'
               LinearizationMethod: 'Perturbation'
                     Linearization: [1×1 ss]
                    OperatingPoint: [1×1 linearize.advisor.BlockOperatingPoint]
    
    

    Просмотрите линеаризацию этого блока.

    ans =
     
      D = 
           u1
       y1   0
     
    Name: Trigonometric Function
    Static gain.
    
    

    Блок линеаризован до нуля. Чтобы увидеть, ожидается ли этот результат для текущего рабочего условия блока, проверьте его рабочую точку.

    ans = 
    
    Block Operating Point for scdpendulum/pendulum/Trigonometric Function
    
    
    Inputs:
    -------
    Port   u        
    1      1.5708   
    
    

    Входная рабочая точка блока.$pi/2 = 1.5708$

    Можно найти линеаризацию блока аналитически, взяв первую производную функции sin относительно входа.

    Поэтому при оценке при$u = pi/2$ линеаризации блока равен нулю. Источником входа является первый выход интегратора второго порядка, который зависит от состояния theta. Поэтому этот блок линеаризируется в нуль, если, $theta = pi/2 + kpi$где$k$ является целым числом. То же условие применяется и к другому блоку Trigonometric Function в подсистеме angle_wrap. Если эти блоки не должны линеаризироваться в нуль, можно изменить состояние рабочей точки theta, и релинеаризируйте модель.

    Создание и выполнение пользовательских запросов

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

    • Имеет один вход

    • Имеет один выход

    • Численно возмущен

    qIn = linqueryHasInputs(1);
    qOut = linqueryHasOutputs(1);
    qPerturb = linqueryIsNumericallyPerturbed;
    

    Создайте CompoundQuery объект путем объединения этих объектов запросов с помощью логических операторов.

    sisopert = qIn & qOut & qPerturb;
    

    Поиск диагностики блоков в advisor2 для блоков, соответствующих этим критериям.

    sisopertBlocks = find(advisor2,sisopert)
    
    sisopertBlocks = 
    
      LinearizationAdvisor with properties:
    
                   Model: 'scdpendulum'
          OperatingPoint: [1×1 opcond.OperatingPoint]
        BlockDiagnostics: [1×3 linearize.advisor.BlockDiagnostic]
               QueryType: '((Has 1 Inputs & Has 1 Outputs) & Perturbation)'
    
    

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

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

    См. также

    Функции

    • advise | find

    Похожие темы

    • Идентифицируйте и устраните общие проблемы линеаризации
    • Поиск и устранение проблем с результатами линеаризации в Model Linearizer
    • Поиск блоков в результатах линеаризации, соответствующих определенным критериям

    Main Content

    Fix systems and blocks that do not linearize as expected,
    linearize blocks for specialized applications

    If your model does not linearize as expected, you can use the Simulink®
    Control Design™
    troubleshooting tools to diagnose and fix linearization issues.
    For more information, see Linearization Troubleshooting Overview. When
    linearizing models in the Model Linearizer or at the command line,
    you can find blocks in your model that are potentially problematic for
    linearization. For more information, see Identify and Fix Common Linearization Issues.

    Some Simulink blocks can produce poor linearization results. Typically, you must
    specify custom linearizations for such blocks. For more information, see When to Specify Individual Block Linearization.

    Functions

    expand all

    Linearization Advisor

    advise Find blocks that are potentially problematic for linearization
    find Find blocks in linearization results that match specific criteria
    highlight Highlight linearization path in Simulink model
    getBlockInfo Obtain diagnostic information for block linearizations
    getBlockPaths Obtain list of blocks in LinearizationAdvisor
    object

    Custom Queries

    Topics

    Troubleshooting Basics

    • Linearization Troubleshooting Overview

      If you do not get expected results when you linearize your Simulink model, you can diagnose and fix potential linearization issues
      using Simulink
      Control Design
      troubleshooting tools.

      • Check Operating Point
      • Check Analysis Point Placement
    • Identify and Fix Common Linearization Issues

      Troubleshoot Simulink model linearizations using the Linearization Advisor.

      • Troubleshoot Linearization Results in Model Linearizer
      • Troubleshoot Linearization Results at Command Line
      • Find Blocks in Linearization Results Matching Specific Criteria
      • Block Linearization Troubleshooting
    • Speed Up Linearization of Complex Models
      Large Simulink models and blocks with complex initialization functions can cause
      slow linearization.

    Custom Block Linearizations

    • When to Specify Individual Block Linearization

      Some Simulink blocks, including those with sharp
      discontinuities, can produce poor linearization results. Typically,
      you must specify custom linearizations for such blocks.

      • Specify Linear System for Block Linearization Using MATLAB Expression
      • Specify D-Matrix System for Block Linearization Using Function
      • Augment Block Linearization
    • Specify Custom Linearizations for Simulink Blocks
      You can specify a custom linearization for a Simulink block or subsystem that cannot
      be linearized.
    • Specify Linearization for Model Components Using System Identification
      You can use System Identification Toolbox™ software to identify a linear system for a model component that does not
      linearize well, and use the identified system to specify its linearization.
    • Change Perturbation Level of Blocks Perturbed During Linearization
      Blocks that do not have preprogrammed analytic Jacobians linearize using numerical
      perturbation. You can change the perturbation level for your application, which changes
      the linearization results.

    Models and Blocks with Special Characteristics

    • Configure Models with Pulse Width Modulation Signals
      Subsystems that contain PWM signals do not linearize
      well due to discontinuities in the signal.
    • Models with Time Delays
      You can linearize models using exact representations or Padé approximations of
      continuous-time delays.
    • Linearize Multirate Models
      You can linearize a Simulink model that contains blocks with different sample times.
    • Linearize Event-Based Subsystems (Externally Scheduled Subsystems)
      Since linearization occurs at a specific moment in time, the trigger event for an
      externally scheduled subsystem never happens.
    • Linearize Blocks with Non-Floating-Point Signals or States
      Blocks that have non-floating-point signals or states and have no preprogrammed exact
      linearization automatically linearize to zero. Linearizing such blocks requires converting
      all signals to double precision.
    • Linearize Simscape Networks
      You can linearize models with Simscape™ components using Simulink
      Control Design
      software.

    Понравилась статья? Поделить с друзьями:
  • Ошибка открытия файла с помощью excel
  • Ошибка открытия файла с настройками
  • Ошибка открытия файла 1с документооборот
  • Ошибка открытия устройства воспроизведения sprecord 3
  • Ошибка открытия устройства воспроизведения device not registered known