- •Аннотация
- •Содержание:
- •Введение
- •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
Приложение 3. Системные константы и типы данных
// Константы и структуры
const intevemax = 1024;
const intsignmax = 64;
const inthint = 33;
/*ТрАНЗАКтНО-ОрИЕНтИрОВАННыЕ КОНстАНты*/
const intprtymax = 10;
const intmptb = 2;
const intmptr = 3;
const intmpti = 3;
const intmptf = 2;
const intmptq = 2;
const intmpts = 2;
typedef signed char prtyrange;
const intmin_prtyrange = -prtymax;
const intmax_prtyrange = prtymax;
typedef array<1,8,char> alfa;
typedef unsigned short event;
const intmin_event = 0;
const intmax_event = evemax;
typedef unsigned char signal;
const intmin_signal = 1;
const intmax_signal = signmax;
typedef unsigned char hint2;
const intmin_hint2 = 2;
const intmax_hint2 = hint;
typedef array<0,hint,int> harr;
enum parmtype {parmb,parmi,parmr,parmf,parmq,parms, last_parmtype};
typedef struct transact* ptransact;
typedef struct facility* pfacility;
typedef struct queue* pqueue;
typedef struct histogram* phistogram;
typedef struct storage* pstorage;
typedef struct listt* plistt;
typedef struct listf* plistf;
typedef struct listq* plistq;
typedef struct lists* plists;
typedef struct listl* plistl;
typedef struct listh* plisth;
struct facility {
enum {free,seized,preempted} status;
pfacility sled,pred;
ptransact transpoint;
int p,ci;
alfa name;
double timef,pretime,mtime,pro;
plistt fl,inter;
bool test;
};
struct storage {
int s,ss,sf,sm,ci;
double ut,smean,mtime,times,pretime;
alfa name;
pstorage pred,sled;
plistt slt;
bool test;
};
struct queue {
enum {empty,full} status;
int lq,mq,size,ci,co;
pqueue sled,pred;
alfa name;
double timeq,pretime,lm,mtime;
bool test;
};
struct transact {
array<1,mptb,bool> pb;
array<1,mpti,int> pi;
array<1,mptr,double> pr;
array<1,mptf,pfacility> pf;
array<1,mptq,pqueue> pq;
array<1,mpts,pstorage> ps;
int nans,nom,ans;
ptransact predans,sledans,pred,sled;
event eve;
prtyrange prty;
double nexttime;
plistt translist;
bool testprty;
};
struct listl {
plistt first;
int ll;
};
struct parml {
double timel,pretime;
int ci,co,ll,lm;
alfa name;
};
struct lists {
pstorage first;
parml p;
plists sled,pred;
};
struct listt {
ptransact first;
parml p;
plistt sled,pred;
};
struct listq {
pqueue first;
parml p;
plistq sled,pred;
};
struct listh {
phistogram first;
parml p;
plisth sled,pred;
};
struct listf {
pfacility first;
parml p;
plistf sled,pred;
};
struct histogram {
bool graf;
alfa name;
unsigned total;
hint2 ihint;
double sum,sumsqr,maxx,minx;
phistogram sled,pred;
harr x;
};
struct table {
array<1,hint,double> x,p;
hint2 ihint;
};
struct typtrace {
pfacility f;
pqueue q;
ptransact t;
pstorage s;
event e;
double r;
int n;
};
typedef array<1,10,char> a10;
struct typdata {
a10 menu;
int act,x,y;
};
enum typsel {nch,mch,rch, last_typsel};
struct typnmr {
int i,x,y;
bool test;
};
struct typdiarec {
array<1,10,typdata> data;
a10 menubase,menubuf;
bool stoptest,endtest,test,errinput;
alfa name;
typnmr n,m,r;
int k,nom,number,actbase,actbuf,xbase,ybase;
double endtime,time,stoptime,steptime;
plistt lt;
pqueue que;
pfacility fac;
pstorage st;
phistogram hist;
};
