- •Аннотация
- •Содержание:
- •Введение
- •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
Приложение 4. Системные переменные
//variables
booltrace, ключ включения трассировки
errtest; ключ расширенной (аварийной) выдачи
doubleresettime, время последнего сброса статистики
systime; системное время
eventievemax, последнее выполняемое событие
sysevent; текущее событие
intitransmax; количество транзактов вdelist
array<1,evemax,bool>waitevent; признаки совершения событий
array<1,evemax,int>maxevent; количества выполнений событий
listluserlist; список списков пользователя
ptransacttrans; ссылка на продвигаемый транзакт
plisttdelist, ссылка на пассивный буфер
current, ссылка на цепь текущих событий
future; ссылка на цепь будущих событий
plistqquelist; ссылка на сист. список очередей
plistffaclist; ссылка на сист. список приборов
plistsstlist; ссылка на сист. список накопителей
plisthhistlist; ссылка на сист. список гистограмм
array<min_signal,max_signal,plistt> signlist ссылки на списки транзактов, ожидающ. сигналов
array<1,evemax,plistt>ass, ссылки на списки собираемых ансамблей
waitl; ссылки на списки транзактов, ожидающ. событий
longv0, источники генераторов случайных чисел
v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15;
typtracetracerec; управление трассировкой
doubleeventall; общее число совершившихся событий
ofstreamoutfile;
ofstream f;
doublectime1,ctime2,realtime;
doublemsystime,mrealtime,evespeed;
Приложение 5 Заголовки системных функций
Функция печати заголовка списка транзактов
void prnlt1(plistt&);
Функция печати списка транзактов
void prnlt(plistt&);
Функция печати гистограммы
void prnhist(phistogram);
Функция печати полей очереди
void prnq(pqueue);
Функция печати полей накопителя
void prns(pstorage);
Функция печати полей прибора
void prnf(pfacility);
Функция печати списков транзактов, ожидающих событий
void prwaitl(void);
Функция печати списков пользователя
void prnuserlt(void);
Функция печати списков транз., ожидающ. освобожд. приборов
void lfprint(plistf);
Функция печати списков транз., ожидающ. освоб. накопителей
void lsprint(plists);
Функция печати списка очередей. lq- ссылка на список
void prnlq(plistq lq);
Функция печати списка накопителей. ls- ссылка на список
void prnls(plists ls);
Функция печати списка приборов. lf- ссылка на список
void prnlf(plistf lf);
Функция печати списка гистограмм. lh- ссылка на список
void prnlh(plisth lh);
Функция печати всей статистики и состояния системы
void printall();
Функция выдачи сообщений в режиме трассировки
void tracer(int);
Функция выдачи сообщений об ошибках. errcode- код ошибки
void error(int errcode);
Функция генератора случайных чисел,равномерно распределенных на интервале [0..1). v- число-источник
double rand01(long& v);
Функция генератора случайных чисел, распределенных по экспоненциальному закону.
double randexp(double,long&);
Функция генератора случайных чисел, равномерно распределенных на интервале от aдоb.
double randab(double a,double b,long&);
Функция генератора случайных чисел, распределеных по нормальному закону
double randnorm(double,double,long&);
Функция распределения Пуассона:
int randpoisson(double,long &);
Функция распределения:
double randdtable(table,long &);
Функция распределения
double randtable(table,long &);
Функции включения объектов в списки:
void inlt(plistt&,ptransact); транзактов
void inlf(plistf&,pfacility); приборов
void inlq(plistq&,pqueue); очередей
void inls(plists&,pstorage); накопителей
void inlh(plisth&,phistogram); гистограмм
Функции изъятия объектов из списков:
void outtlist(plistt&); транзактов
void outflist(plistf&); приборов
void outqlist(plistq&); очередей
void outslist(plists); накопителей
void outhlist(plisth); гистограмм
Функция включения транзакта в список delist
void indelist(ptransact&);
Функция включения транзакта в список future
void infuture(ptransact&);
Функция включения транзакта в список current
void incurrent(ptransact&);
Функция включения активного транзакта в список пользователя в режиме FIFO. lt- ссылка на список пользователя
void inlfifo(plistt lt);
Функция включения активного транзакта в список пользователя в режиме LIFO. lt- ссылка на список пользователя
void inllifo(plistt lt);
Функция перевода первого транзакта из списка пользователя в список current
void outuserlt(plistt);
Функция инициализации генератора транзактов. e- событие, в котором происходит генерация,r- время генерации первого транзакта
void initcreate(event e,double r);
Функция создания транзактов. r- временной интервал между моментами создания транзактов
void create(double r);
Функция уничтожения активного транзакта
void destroy();
Функция задержки активного транзакта на время r
void delayt(double r);
Функция включения транзакта в список waitl[e]
void inwaitl(ptransact&,event e);
Функция блокировки продвижения активного транзакта до совершения события e
void wait(event e);
Функция назначения следующим события e
void next(event e);
Функция захвата прибора. f- ссылка на прибор
void infac(pfacility& f);
Функция освобождения прибора. f- ссылка на прибор
void outfac(pfacility& f);
Функция выхода из очереди. q- ссылка на очередь
void outqueue(pqueue& q);
Функция входа в очередь. q- ссылка на очередь
void inqueue(pqueue& q);
Функция занятия прибора. f- ссылка на прибор
void seize(pfacility& f);
Функция занятия накопителя. st- ссылка на накопитель
void enter(pstorage st,int);
Функция освобожд. накопителя. st- ссылка на накопитель
void leave(pstorage st,int);
Функции создания списков по ссылкам :
void newtlist(plistt&); транзактов
void newflist(plistf&); приборов
void newqlist(plistq&); очередей
void newslist(plists&); накопителей
void newhlist(plisth&); гистограмм
Функции создания объектов по ссылкам:
void newfac(pfacility&,alfa); прибора
void newqueue(pqueue&,alfa) очереди
void newstorage(pstorage&,alfa,int s1); накопителя. s1 - емкость накопителя
void newhist(phistogram&,double,double,hint2,bool,alfa); гистограммы
void newuserlt(plistt&,alfa);
Функции уничтожения объектов по ссылкам :
void destrlt(plistt&);списков транзактов
void destrf(pfacility&); прибора
void destrq(pqueue&); очереди
void destrs(pstorage&); накопителя
void destrh(phistogram&); гистограммы
void split(int,event);
void assemble(int);
void priority(prtyrange);
void tabulate(phistogram,double);
void accept(signal);
void send(signal);
void resetall();
void clear();
void initlist(int);
void plan();
