Начало работы |
Ответы на часто задаваемые вопросы
Ответ: «Вставка» - «Базовые блоки» - «Субмодель» или взять блок из палитры блоков, из вкладки «Субструктуры».
О: «Правка» - «Изменить блок». Меню доступно только если в главном меню в подменю Вид установить галочку «Режим разработчика». Подобное редактирование блоков часто довольно сильно упрощает выполнение некоторых действий, т.к. с помощью свойств и скриптов можно напрямую присваивать и менять имена свойств, внутренних переменных, их значения и пр.
О: Вероятно, эти свойства заведены в графическом контейнере субмодели в виде глобальных свойств. Проверить это, и при необходимости внести изменения, можно открыв редактор изображения субмодели (Свойства объекта – вкладка Общие – Графическое изображение) и в нем выполнить команду меню Сервис – Глобальные свойства.
О: Свойство - это атрибут блока, задаваемый пользователем и влияющий на работу блока (настройка блока). Параметр - это атрибут блока, задаваемый самим блоком, то есть содержащий результат его работы.
О: Скрипт "Действие" это макрокоманда, выполняемая при изменении значения свойства блока; задается текст скрипта в поле "Действие", которое есть у каждого свойства блока.
О: Выделяем блок, затем «Файл» - «Сохранить в библиотеку», потом «Файл» - «Редактировать библиотеку», в появившемся окне находим созданный элемент (он будет в самом низу списка) и редактируем его свойства.
О: Вероятно, когда Вы выбирали «Сохранить в библиотеку», блок не был выделен, повторите сохранение.
О: По умолчанию библиотеки блоков хранятся по адресу «%PROGRAMDIR%» - «Bin» - «<имя_библиотеки>.csl». Файл библиотеки можно переносить между рабочими машинами, тем самым устанавливать существующие библиотеки блоков на другие копии SImInTech.
О: Таблицы характеристик хранятся в виде файлов с расширением .tbl, рассортированных по соответствующим папкам (напорные характеристики насосов, материалы и т.п.), расположенным по адресу «%PROGRAMDIR%» - «Bin» - «DataBase».
О: Для этого изменяем свойство одного элемента, выделяем его и выбираем «Файл» - «Добавить в список обновлений», затем сохраняем проект и закрываем SimIntech, во время следующего открытия проекта, у всех элементов этого типа изменится отредактированное свойство.
О: Можно обратиться в службу поддержки по адресу info@3v-services.com Если для формулировки вопроса или получения ответа необходимо передать файл модели SimInTech, то можно разместить его в открытых облачных сервисах и приложить ссылку к письму.
О: В SImInTech отсутствуют внутренние константы для типа данных «Цвет». Скорее всего, эти переменные (cl_Open и cl_Close) определены в списке сигналов проекта. Список сигналов можно посмотреть, выбрав в главном меню пункт «Графика» - «Сигналы...».
О: Для задания цвета в SimInTech используются тип данных «Целые». Если известны RGB-компоненты нужного вам цвета, то число, соответствующее этому цвету, можно вычислить по формуле:
Color = R+256·G+65536·B
О: Главное меню программы «Файл» - «Параметры...». На первой вкладке «Вид» ищем пункт «Показать поле "Имя" в редакторе свойств блока», ставим напротив него галочку. Также полезно изучить содержание остальных вкладок. То же самое можно сделать, установив галочку напротив пункта главного меню «Вид» - «Показать поле "Имя" в редакторе свойств блока».
О: Руководствуясь физикой процесса, первым рекомендуется ставить гидравлику (чтобы не было гидроударов при резком изменении положений клапанов из автоматики). При этом в гидравлической схеме должны быть выставлены начальные значения положений клапанов.
О: Вообще говоря, появление алгебраической петли является нехорошей ситуацией для расчета схемы, т.к. на первом (нулевом) шаге интегрирования отсутствует ясность о начальных значениях одного или нескольких блоков. В случае, когда входные параметры схемы, блока или субмодели напрямую (алгебраически) зависят от выходных значений этой же схемы, блока или субмодели, ядро SimInTech пытается «распутать» эту петлю (петли) самостоятельно, и расчет может начаться с неверных значений. На практике в большинстве случаев это НЕ приводит к ошибкам, т.к. через несколько шагов интегрирования всё встает на свои места. Просто нужно обращать особое внимание на петли в расчетной схеме. Один из вариантов ухода от алгебраических петель: вставить в подходящем месте петли динамический блок (в месте где предполагается пусть и небольшое, но запаздывание сигнала). Например, апериодическое звено первого порядка, с заранее заданным начальным условием. Этим достигается развязывание петли с явным указанием начального значения в линии. Апериодическое звено, с коэффициентом усиления равным единице, на выходе будет генерировать такой же сигнал, как и на входе, просто с небольшим запаздыванием, соответствующим постоянной времени T. Также в большинстве случаев хватает вставки блока «Запаздывание на шаг интегрирования» из закладки нелинейные, но это может породить неустойчивости в некоторых моделях.
О: В этом случае нужно использовать сигнал с типом данных «команда управления», а не «двоичные», в нем автосброс происходит автоматически и устанавливать это свойство отдельно не нужно, при этом в блоке входа алгоритма свойство «выбор по максимуму» устанавливается в положение «нет», а в блоке «чтение сигналов», если таковой все-таки есть (просто Вам по какой-то причине удобнее не пользоваться автосбросом) нужно свойство «рассчитывать с задержкой на шаг» установить в положение «да».
О: После того как была создана структура базы данных и более не планируется изменять количество сигналов (по крайней мере добавлять новые сигналы), в настройках базы данных можно снять галочку напротив «Сохранять базу данных». После этого при закрытии проекта или при его перезапуске в базу данных не будут записываться значения, оставшиеся после последнего расчета. НО! Этот вариант не совсем хорош, идеологически верным будет использовать механизм рестартов. Это позволяет создавать несколько (столько сколько нужно) начальных состояний, а не одно исходное которое записано в базе данных.
О: Объединение базы данных возможно либо в самом начале проекта (использовать общий файл для базы данных, с доступом к нему по сети, и аккуратно - не одновременно - его обновлять). Либо, при использовании разных баз данных, можно соединять их в одну путём нажатия кнопок «Сохранить в файл» и «Загрузить из файла», расположенных на панели редактирования базы данных.
О: Эта проблема решается в каждой конкретной ситуации по-разному, в зависимости от сложности задачи и поставленных целей - иногда достаточно и обычных «офисных» компьютеров, иногда целесообразнее разместить промышленную большую модель на отдельном расчетном сервере, иногда, в некоторых случаях расчет ведется на отдельной машине с процессором (несколькими процессорами) требуемой производительности. Также возможно распараллеливание вычисления, путем кодогенераци и т.д.
О: Да, это возможно - для этого существует механизм сохранения рестартов или. В окне «Параметры расчета» есть вкладка «Рестарт», на которой можно настроить имя файла, в который будет записываться состояние системы, а также шаг сохранения рестарта. Исходных состояний (рестартов) можно подготовить столько, сколько требуется для модели.
О: Да, это возможно. Для этого в окне свойств объекта, на вкладке «Общие» имеются свойства «Ссылка», «Ссылка при редактировании» и «Действие для вывода ссылки». В первом из них можно выбрать элемент, который будет выведен. Второе и третье указанные свойства управляют выводом ссылки в режиме редактирования схемы, а также устанавливают действие, требуемое для вывода ссылки.
О: Да, такая возможность реализована. При двойном щелчке на линии связи - значение изменяется либо на 1 шаг интегрирования, либо на более длительное время, если поставить там же галочку «заморозить блок».
О: Для этого надо выделить блок на схеме, в меню «Вставка» в главном окне выбрать «Режим замены блоков» и в палитре блоков нажать на пиктограмму блока, на которую требуется заменить выделенный блоки.
О: Скрипты следует программировать рационально и экономно: большинство операций можно отнести к секции initialization … end; также следует избегать использования функций типа eval( ); в теле программы, которые очень требовательны к процессорному времени и сильно замедляют выполнение скриптов.
О: Замена цвета обусловлена прохождением сигнала по линии связи, соединяющей объекты. В SimInTech за цветовое отображение линий отвечают несколько параметров и команд: команда «Подсвечивать линии связи», параметры «Значение перехода подсветки», «Цвет подсвеченной линии», «Цвет неподсвеченной линии». Данные параметры находятся в меню “Параметры расчета” каждого проекта.
О: Можно установить подсказку для блока, с помощью свойства «Подсказка» на вкладке «Общие» окна редактирования свойств блока. Если же необходимо создать полноценную справку для блока, то для этого надо создать отдельный файл справки (с использованием программ Microsoft Office Word, Open Office либо подготавливая сразу в формате html). После чего выделить блок, выполнить команду главного меню «Правка» - «Изменить блок» и на вкладке «Расчет», в поле «Файл справки» установить путь к созданному файлу справки. Указанный файл справки будет открываться при нажатии клавиши F1 на выделенном блоке.
О: Для отладки проекта существует возможность пошагового расчета схемы с помощью кнопок «Инициализация», «Пауза», «Сделать шаг» на панели инструментов «Расчет». В ходе пошагового расчета проекта можно отслеживать значения сигналов и переменных на схемах и в скриптах, а также следить за отладочной информацией для проекта, доступной по команде главного меню «Расчет» - «Отладочная информация». Величина шага зависит от пунктов «Минимальный шаг», «Максимальный шаг» и «Шаг синхронизации задачи» окна параметров расчета, а также от выбранного метода интегрирования.
integrator_1.x0 = 5; //назначение начальных условий для блока интегратора с именем "integrator_1" amp = Sinus_Source.a; //чтение значение амплитуды из блока синусоиды с именем "Sinus_Source_1" FillCircle_1.color = 65536; //установка кода цвета для примитива типа "круг" с именем "FillCircle_1"
О: К сожалению, прямой такой возможности пока нет. Но имеется возможность указания значения, идущего по линии. Для включения этой опции нужно в окне «Параметры расчета» найти команду «Показать все значения линий» и изменить его значение на «Да». Кроме того, функцию произвольной подписи линий связи можно реализовать с помощью графического примитива «Текст». Но при этом надо иметь в виду, что текст не будет привязан к линии связи и при перемещении траектории линии, нужно корректировать и положение текста.
О: Да, можно. Для этого достаточно в качестве начальных условий блока указать значение «w#0». Такая запись будет эквивалентна [0, 0, 0, 0, 0... 0, 0] где w - кол-во элементов в векторе (одномерном массиве).
О: Для обновления субмоделей надо выполнить следующую процедуру:
О: Для этого необходимо, на вкладке «Рестарт» окна настройки каждого проекта, вписать $PACKRESTART_<произвольное имя рестарта, уникальное для каждого проекта>. Для того, чтобы рестарт для проекта загружался сразу при пуске пакета, надо выставить галочку «Загружать рестарт при инициализации» для тех проектов, где это необходимо. Чтобы сохранить рестарт для всех проектов в пакете в необходимый момент времени расчета, необходимо в окне пакета нажать кнопку «Настройки пакета» и в появившемся окне нажать кнопку «Сохранить сейчас».
Подробнее про работу с рестартами проектов и пакетов можно узнать в разделе справочной системы Рестарты проекта и пакета
О: Проблемы с отображением элементов библиотек блоков, а также отсутствие некоторых опции в меню Файл → Новый проект, может служить признаком того, что сбились системные настройки SimInTech, хранящиеся в реестре Windows. Для устранения данной проблемы, предлагается следующий алгоритм:
О: Синтаксис сложного условия выглядит так:
if (условие1) логический оператор (условие2) then оператор т.е. if (a>b) and (a<c) then a=b+c
О: Это можно сделать с помощью ключевых слов begin и end; то есть:
begin строка 1; строка 2; ... строка n; ... end;
О: Специальных ключевых слов для констант true и false в SimInTech нет, следует использовать число 1 для значения "Истина" (наличие сигнала) и 0 для значения "Ложь" (отсутствие сигнала).
О: В скрипте SImInTech проверить факт выбора пункта можно следующим образом:
if radiogroup1.valve = 0 then ....; if radiogroup1.valve = 1 then ....;
здесь radiogroup1 - имя элемента «радиогруппа», а цифры соответствуют пунктам минус один, т.е., если выбран первый пункт радиогруппы, выполнится условие if radiogroup1.valve = 0.
О: Для этого используется служебное слово mouseincontainer в скрипте к графическому отображению блока, например:
if mouseincontainer and isrun then Rectangle.Visible=1 else Rectangle.Visible=0;
О: Да, возможно. Для этого необходимо выполнить такие же действия, как и для создания/редактирования свойств для блока типа «Субмодель». То есть выделить блок, выполнить команду главного меню «Правка» - «Изменить блок», где в открывшемся окне можно изменять список и атрибуты свойств блока.
О: Для того, чтобы прочитать список объектов внутри изображения блока надо сделать следующее:
var pProj: IEditorInterface;
objid,objid2,
pBlockImage ,
pPage: Pointer;
fImageInfo,
fPageInfo: TPageInfo;
EInfo: TElementInfo;
Получить текущую или главную страницу проекта:
pProj := DllInfo.Main.ActiveProjectInterface;
pPage := pProj.PrjMainPage; //Главная страница, если надо текущую:
pPage := pProj.ActivePage;
Получить перечисление объектов страницы:
DllInfo.Main.GetPageInfo(pPage, fPageInfo); for i:=0 to fPageInfo.ObjList.Count - 1 do begin objid:=fPageInfo.ObjList[i]; //Получаем информацию об объекте DllInfo.Main.GetElementInfo(objid,EInfo); //Получаем ссылку на внутренний контейнер с изображением блока: pBlockImage:=EInfo.BlockImagePointer; if pBlockImage <> nil then begin //Получаем список объектов внутри блока: DllInfo.Main.GetPageInfo(pBlockImage , fImageInfo); //Ну и дальше как и в предыдущем цикле: for j:=0 to fImageInfo.ObjList.Count - 1 do begin objid2:=fImageInfo.ObjList[i]; DllInfo.Main.GetElementInfo(objid2,EInfo); //Ну и тут используем доступ к свойствам через EInfo aName:=AsString(EInfo.GraphProps,'Name'); //Ну и если там внутри объекта ещё чего - то см. выше end; end;
О: И в автоматике, и в теплогидравлике положение задвижки задается в процентах, при этом 100% ─ задвижка полностью открыта, 0% ─ задвижка полностью закрыта.
О: Такой насос моделируется, как два разных насоса с соответствующими характеристиками, размещенные на двух последовательно соединенных участках канала, разделенных между собой внутренним узлом, при этом, если работает один насос, второй должен быть выключен.
О: Направление работы насоса совпадает с направлением потока в канале.
О: Канал - направленный элемент и, если поток течет в противоположном направлении, то G будет отрицательна.
О: Можно, для этого необходимо выполнить команду Инструменты - Редактор таблиц, и там заполнить таблицу характеристик материала по аналогии с уже существующими примерами, после чего разместить созданный файл в структуре папки %PROGRAMDIR%\bin\DataBase\.
О: «Тепловое граничное условие» используется, например, для учета теплообмена между каналом или баком с внешней средой. В этом случае задается граничное условие 3-го рода, то есть температура внешней среды и коэффициент теплоотдачи от этой среды к каналу (баку). Другой пример: где-то снаружи рассчитывается тепловой поток к каналу (баку) или внутреннее энерговыделение в канале (баке). Тогда используется граничное условие 2-го рода (задается плотность теплового потока q [ккал/(с*м2)]), умножаемая затем в программе на поверхность теплообмена канала. В зависимости от типа граничного условия (2 или 3 рода) в блоке игнорируются или значения плотности теплового потока (ГУ 3 рода) или температуры и коэффициента теплоотдачи (ГУ 2 рода). Граничные условия задаются в табличном виде как функции какого-то аргумента (независимой величины). Физический смысл аргументу придает сам пользователь. Табличная функция задается в виде двух массивов - массива значений аргумента и массива значений функции. Между узлами табличной функции используется линейная интерполяция. В данном случае заданы три функции (Т,alfa,q) от одного аргумента. Обязательно все массивы должны иметь одинаковую размерность. В зависисимости от значения аргумента, которое задает пользователь (например, с помощью языка программирования) находятся индексы точек в массиве аргумента, между которыми находится заданное значение аргумента. Зная эти индексы, находятся значения функции в массиве функции.
О: В таблице приведены единицы измерения основных величин в теплогидравлическом коде HS:
Величина | Единица измерения |
Давление | Па |
Энтальпия | Дж/кг |
Температура | °С |
Плотность | кг/м3 |
Удельный объем | м3/кг |
Теплоемкость (изобарная) | Дж/(кг*°K) |
Теплоемкость (изохорная) | Дж/(кг*°K) |
Коэффициент теплопроводности | Вт/(м*°К) |
Динамическая вязкость | Па·с |
Кинематическая вязкость | м2/с |
Число Прандтля | - |
Производная плотности по давлению | - |
Производная плотности по энтальпии | - |