- •Аннотация
- •Содержание:
- •Введение
- •1 Объекты системы моделирования сим-си
- •1.1 Общая классификация
- •1.2 Системные константы, типы и переменные
- •Системные типы
- •Скалярные типы данных
- •Множественные типы данных
- •Системные переменные
- •2 Принципы и методы построения моделей
- •2.1 Создание транзактов
- •2.2 Уничтожение транзактов
- •2.3 Продвижение транзактов
- •2.4 Задержка транзактов. Функцияdelayt
- •2.5 Блокировка транзактов
- •2.5.1 Функцияwait
- •2.5.2 Функцииacceptиsend
- •2.6 Изменение порядка осуществления событий. Функцияnехt
- •2.7 Использование приборов
- •2.7.1 Функции ввода транзактов в прибор
- •2.7.1.1 Захват прибора. Функцияinfac
- •2.7.1.2 Занятие прибора. Функцияseize
- •2.7.2 Функцияoutfac. Вывод транзакта из прибора
- •2.8 Регистрация очередей. Функцииinqueue,outqueue
- •2.9 Накопители (многоканальные устройства). Функцииenterиleave
- •2.10 Построение гистограмм. Функцииtabulate,newhist,prnhist
- •2.11. Создание, использование и обработка списков
- •2.11.1 Создание списков
- •2.11.2 Включение объектов в списки
- •2.11.3 Удаление объектов из списков
- •2.11.4 Просмотр элементов списка. Сканирование
- •2.11.5 Списки пользователя. Организация различных дисциплин обслуживания с помощью списков пользователя
- •2.12 Модельная среда
- •2.12.1 Создание модельной среды
- •2.12.2 Уничтожение очередей, приборов, накопителей и гистограмм
- •2.13 Ансамбли
- •2.13.1 Создание ансамблей. Функцияsplit
- •2.13.2 Сбор членов ансамбля. Функцияassemble
- •2.13.3 Изменение приоритета всех членов ансамбля. Функцияpriority
- •2.13.4 Изменение значения параметра всех членов ансамбля. Функцияparmans
- •2.14 Генераторы случайных чисел
- •2.15 Процесс моделирования. Функцияplan
- •2.16 Создание системной среды. Функцияinitlist
- •2.17 Структура модели
- •2.18 Сброс статистики и очистка системной и модельной среды. Функцииresetallиclear
- •3 Вывод результатов моделирования
- •4 Отладочные средства
- •4.1 Диагностика ошибок
- •4.2 Трассировка
- •Приложение 1. Коды и сообщения об ошибках
- •Приложение 2. Сообщения в режиме трассировки
- •Приложение 3. Системные константы и типы данных
- •Приложение 4. Системные переменные
- •Приложение 5 Заголовки системных функций
- •Приложение6. Примеры моделей Пример 1.
- •Пример 2.
- •Пример 3.
- •Диагностика ошибок
- •Системные списки Список current
- •Список прибора Fac f
- •Список future
2.10 Построение гистограмм. Функцииtabulate,newhist,prnhist
Построение гистограмм в системе возможно для любого типа скалярных данных, переводимых к типу double.
С понятием "гистограмма" связывается объект типа histogram. В модели он определяется ссылка на него:
phistogram h;
Перед использованием переменной hдля табулирования значений некоторой случайной величины необходимо создать гистограмму. Для этого служит функция void newhist(phistogram&,double,double,hint2,bool,alfa):
newhist(<ссылка на гистограмму>,
<нижний предел изменения табулируемой величины>,
<верхний предел изменения табулируемой величины>,
<число интервалов табулирования>,
<"ключ" печати графика>,
<символьное имя гистограммы>);
Максимальное число точек табулирования задается системной константой hint=33.
Функция tabulateимеет формат записи:
void tabulate(phistogram hist,double r),гдеhist- ссылка на гистограмму,r- табулируемая величина. Функция записывается в той части модели, где измеряется интересующая программиста величинаr.
Функция void prnhist(phistogram)служит для печати гистограммы.
2.11. Создание, использование и обработка списков
В системе моделирования определены понятия списков транзактов, приборов, очередей, накопителей, гистограмм и списка списков транзактов.
Для работы с этими типами списков (кроме списка списков транзактов) определены функции создания списков, включения в них элементов и их исключение. На списках заданы функции следования: выбор следующего и предыдущего элементов из списка. Все списки в системе моделирования имеют кольцевую структуру: первый элемент списка указывает на второй и последний, второй - на первый и третий... последний - на предпоследний и первый. Элементы списка не нумеруются. Чтобы выделить в списке первый элемент, на него указывает ссылка firstпеременной типа список:[ссылка на список]->first. Кольцевая структура обеспечивает поиск нужного элемента в любом из двух выбранных программистом направлений.
Понятие списков определяется в СИ, поэтому ниже дается лишь краткий обзор функций, список их параметров и способ обращения к ним.
2.11.1 Создание списков
Для создания списка необходимо определить соответствующую переменную типа ссылки на него:
plistt ltссылка на список транзактов
plistq lqссылка на список очередей
plistf lfссылка на список приборов
plists lsссылка на список накопителей
plisth lhссылка на список гистограмм
Cписки создаются с помощью следующих функций:
void newtlist(plistt&)создание списка транзактов;
void newqlist(plistq&)создание списка очередей;
void newflist(plistf&)создание списка приборов;
void newslist(plists&)создание списка накопителей;
void newhlist(plisth&)создание списка гистограмм.
Списки создаются пустыми без каких-либо наполняющих их объектов. Для того, чтобы поместить объект в список, необходимо предварительно его сгенерировать.
2.11.2 Включение объектов в списки
Для включения объекта в список используются следующие функции:
void inlt(plistt&,ptransact) для транзактов
void inlf(plistf&,pfacility) для приборов
void inlq(plistq&,pqueue) для очередей
void inls(plists&,pstorage) для накопителей
void inlh(plisth&,phistogram) для гистограмм
2.11.3 Удаление объектов из списков
На удаляемый объект всегда указывает голова списка. например: l->first- ссылка на первый элемент спискаl.
Такое определение позволяет до удаления элемента из списка запомнить его присваиванием рl=l->first; гдерl- переменная ссылочного типа (ptransact, pfacility, pqueue, pstorage, phistogram).
Исключить элемент из списка можно посредством следующих функций:
void outtlist(plistt&)
void outflist(plistf&)
void outqlist(plistq&)
void outslist(plists)
void outhlist(plisth)
Указатель списка firstпосле удаления указывает на следующий по порядку объект в списке. Если удаляемый объект единственный в спискеl, то устанавливаетсяl->first=nil.
