Опубликован: 07.11.2014 | Доступ: свободный | Студентов: 442 / 37 | Длительность: 15:17:00
ISBN: 978-5-9556-0161-8
Тема: САПР
Лекция 5:

Модель функционирования сети связи

< Лекция 4 || Лекция 5: 123456 || Лекция 6 >
Построение модели сети связи

Все необходимое для построения модели сети из активных объектов Абонент, Канал и Маршрутизатор нами создано. Приступим к построению модели сети.

  1. Перейдите на Main к области просмотра облСеть.
  2. Из окна Проекты перетащите объект абонент1 и поместите как на Рис. 4.18.
  3. Объект абонент1 имитирует абонента 1. В свойствах абонент1 записан код для расчёта коэффициентов пропускной способности абонентов 2…6 с абонентом 1. Следовательно, абонент2 должен иметь код для расчёта коэффициентов пропускной способности абонентов 1, 3…6 с абонентом 2 и т.д.
  4. Создайте типы агентов Абонент2…Абонент6.
  5. Откройте Абонент1. Скопируйте все объекты.
  6. Вставьте скопированные объекты на объекты Абонент2 … Абонент6.
  7. Внесите правки в коды согласно Табл. 4.9.
  8. Из окна Проекты перетащите объекты абонент2 … абонент6.
  9. Из окна Проекты перетащите объект канал и поместите вверху (см. Рис. 4.18). В поле Имя: добавьте к предложенному имени 1.
  10. Скопируйте объект канал1. Вставьте пять объектов. Разместите их как на Рис. 4.18. Нам потребуются ещё несколько каналов связи, но мы их образуем позже после создания второго маршрутизатора.
  11. Выходы объектов абонент1…абонент6 соедините с соответствующими входами объектов канал1…канал6.
  12. Из окна Проекты перетащите объект маршрутизатор. В поле Имя: установите маршрут1.
  13. Соедините выходы первого и второго абонентов с вх1, выходы третьего и четвёртого - с вх2, пятого - с вх3, шестого - с вх4 объекта маршрут1.
Элементы модели функционирования сети связи

увеличить изображение
Рис. 4.18. Элементы модели функционирования сети связи
Таблица 4.9.
Абонент2
Свойство selectOutput
Тип заявки: Message
Выход true выбирается При выполнении условия
Условие entity.numAbPol == numAbonent
numAbonent 2
Свойство selectOutput1
Тип заявки: Message
Использовать: Условия
Условие 1 entity.numAbPol==1
Действия При выходе 1 отпрАб1++;
main.отпр21=отпрАб1;
Условие 2 entity.numAbPol==2
Условие 3 entity.numAbPol==3
Действия При выходе 3 отпрАб3++;
main.отпр23=отпрАб3;
Условие 4 entity.numAbPol==4
Действия При выходе 4 отпрАб4++;
main.отпр24=отпрАб4;
Свойство selectOutput2
Тип заявки: Message
Использовать: Условия
Условие 1 entity.numAbPol==5
Действия При выходе 1 отпрАб5++;
main.отпр25=отпрАб5;
Условие 2 entity.numAbPol==6
Действия При выходе 2 отпрАб6++;
main.отпр26=отпрАб6;
Свойство selectOutput5
Тип заявки: Message
Использовать: Условия
Условие 1 entity.numAbOtpr==1
Действия При выходе 1 отАб1++;
main.кПрСп12=отАб1/main.отпр12;
main.КПрСп12.setText(main.кПрСп12, true);
Условие 2 entity.numAbOtpr==2
Условие 3 entity.numAbOtpr==3
Действия При выходе 3 отАб3++;
main.кПрСп32=отАб3/main.отпр32;
main.КПрСп32.setText(main.кПрСп32, true);
Условие 4 entity.numAbOtpr==4
Действия При выходе 4 отАб4++;
main.кПрСп42=отАб4/main.отпр42;
main.КПрСп42.setText(main.кПрСп42, true);
Свойство selectOutput6
Тип заявки: Message
Использовать: Условия
Условие 1 entity.numAbOtpr==5
Действия При выходе 1 отАб5++;
main.кПрСп52=отАб5/main.отпр52;
main.КПрСп52.setText(main.кПрСп52, true);
Условие 2 entity.numAbOtpr==6
Действия При выходе 2 отАб6++;
main.кПрСп62=отАб6/main.отпр62;
main.КПрСп62.setText(main.кПрСп62, true);
Абонент3
Свойство selectOutput
Тип заявки: Message
Выход true выбирается При выполнении условия
Условие entity.numAbPol == numAbonent
numAbonent 3
Свойство selectOutput1
Тип заявки: Message
Использовать: Условия
Условие 1 entity.numAbPol==1
Действия При выходе 1 отпрАб1++;
main.отпр31=отпрАб1;
Условие 2 entity.numAbPol==2
Действия При выходе 3 отпрАб2++;
main.отпр32=отпрАб2;
Условие 3 entity.numAbPol==3
Условие 4 entity.numAbOtpr==4
Действия При выходе 4 отпрАб4++;
main.отпр34=отпрАб4;
Свойство selectOutput2
Тип заявки: Message
Использовать: Условия
Условие 1 entity.numAbPol==5
Действия При выходе 1 отпрАб5++;
main.отпр35=отпрАб5;
Условие 2 entity.numAbPol==6
Действия При выходе 2 отпрАб6++;
main.отпр36=отпрАб6;
Тип заявки: Message
Использовать: Условия
Условие 1 entity.numAbOtpr==1
Свойство selectOutput5
Действия При выходе 1 отАб1++;
main.кПрСп13=отАб1/main.отпр13;
main.КПрСп13.setText(main.кПрСп13, true);
Условие 2 entity.numAbOtpr==2
Действия При выходе 2 отАб2++;
main.кПрСп23=отАб2/main.отпр23;
main.КПрСп23.setText(main.кПрСп23, true);
Условие 3 entity.numAbOtpr==3
Условие 4 entity.numAbOtpr==4
Действия При выходе 4 отАб4++;
main.кПрСп43=отАб4/main.отпр43;
main.КПрСп43.setText(main.кПрСп43, true);
Свойство selectOutput6
Тип заявки: Message
Использовать: Условия
Условие 1 entity.numAbOtpr==5
Действия При выходе 1 отАб5++;
main.кПрСп53=отАб5/main.отпр53;
main.КПрСп53.setText(main.кПрСп53, true);
Условие 2 entity.numAbOtpr==6
Действия При выходе 2 отАб6++;
main.кПрСп63=отАб6/main.отпр63;
main.КПрСп63.setText(main.кПрСп63, true);
Абонент4
Свойство selectOutput
Тип заявки: Message
Выход true выбирается При выполнении условия
Условие entity.numAbPol == numAbonent
numAbonent 4
Свойство selectOutput1
Тип заявки: Message
Использовать: Условия
Условие 1 entity.numAbPol==1
Действия При выходе 1 отпрАб1++;
main.отпр41=отпрАб1;
Условие 2 entity.numAbPol==2
Действия При выходе 3 отпрАб2++;
main.отпр42=отпрАб2;
Условие 3 entity.numAbPol==3
Действия При выходе 3 отпрАб3++;
main.отпр43=отпрАб3;
Условие 4 entity.numAbOtpr==4
Свойство selectOutput2
Тип заявки: Message
Использовать: Условия
Условие 1 entity.numAbPol==5
Действия При выходе 1 отпрАб5++;
main.отпр45=отпрАб5;
Условие 2 entity.numAbPol==6
Действия При выходе 2 отпрАб6++;
main.отпр46=отпрАб6;
Свойство selectOutput5
Тип заявки: Message
Использовать: Условия
Условие 1 entity.numAbOtpr==1
Действия При выходе 1 отАб1++;
main.кПрСп14=отАб1/main.отпр14;
main.КПрСп14.setText(main.кПрСп14, true);
Условие 2 entity.numAbOtpr==2
Действия При выходе 2 отАб2++;
main.кПрСп24=отАб2/main.отпр24;
main.КПрСп24.setText(main.кПрСп24, true);
Условие 3 entity.numAbOtpr==3
Действия При выходе 3 отАб3++;
main.кПрСп34=отАб3/main.отпр34;
main.КПрСп34.setText(main.кПрСп34, true);
Условие 4 entity.numAbOtpr==4
Свойство selectOutput6
Тип заявки: Message
Использовать: Условия
Условие 1 entity.numAbOtpr==5
Действия При выходе 1 отАб5++;
main.кПрСп54=отАб5/main.отпр54;
main.КПрСп54.setText(main.кПрСп54, true);
Условие 2 entity.numAbOtpr==6
Действия При выходе 2 отАб6++;
main.кПрСп64=отАб6/main.отпр64;
main.КПрСп64.setText(main.кПрСп64, true);
Абонент5
Свойство selectOutput
Тип заявки: Message
Выход true выбирается При выполнении условия
Условие entity.numAbPol == numAbonent
numAbonent 5
Свойство selectOutput1
Тип заявки: Message
Использовать: Условия
Условие 1 entity.numAbPol==1
Действия При выходе 1 отпрАб1++;
main.отпр51=отпрАб1;
Условие 2 entity.numAbPol==2
Действия При выходе2 отпрАб2++;
main.отпр52=отпрАб2;
Условие 3 entity.numAbPol==3
Действия При выходе 3 отпрАб3++;
main.отпр53=отпрАб3;
Условие 4 entity.numAbOtpr==4
Действия При выходе 4 отпрАб4++;
main.отпр54=отпрАб4;
Свойство selectOutput2
Тип заявки: Message
Использовать: Условия
Условие 1 entity.numAbPol==5
Условие 2 entity.numAbPol==6
Действия При выходе 2 отпрАб6++;
main.отпр56=отпрАб6;
Тип заявки: Message
Использовать: Условия
Свойство selectOutput5
Условие 1 entity.numAbOtpr==1
Действия При выходе 1 отАб1++;
main.кПрСп15=отАб1/main.отпр15;
main.КПрСп15.setText(main.кПрСп15, true);
Условие 2 entity.numAbOtpr==2
Действия При выходе 2 отАб2++;
main.кПрСп25=отАб2/main.отпр25;
main.КПрСп25.setText(main.кПрСп25, true);
Условие 3 entity.numAbOtpr==3
Действия При выходе 3 отАб3++;
main.кПрСп35=отАб3/main.отпр35;
main.КПрСп35.setText(main.кПрСп35, true);
Условие 4 entity.numAbOtpr==4
Действия При выходе 4 отАб4++;
main.кПрСп45=отАб4/main.отпр45;
main.КПрСп45.setText(main.кПрСп45, true);
Свойство selectOutput6
Тип заявки: Message
Использовать: Условия
Условие 1 entity.numAbOtpr==5
Условие 2 entity.numAbOtpr==6
Действия При выходе 2 отАб6++;
main.кПрСп65=отАб6/main.отпр65;
main.КПрСп65.setText(main.кПрСп65, true);
Абонент6
Свойство selectOutput
Тип заявки: Message
Выход true выбирается При выполнении условия
Условие entity.numAbPol == numAbonent
numAbonent 6
Свойство selectOutput1
Тип заявки: Message
Использовать: Условия
Условие 1 entity.numAbPol==1
Действия При выходе 1 отпрАб1++;
main.отпр61=отпрАб1;
Условие 2 entity.numAbPol==2
Действия При выходе 2 отпрАб2++;
main.отпр62=отпрАб2;
Условие 3 entity.numAbPol==3
Действия При выходе 3 отпрАб3++;
main.отпр63=отпрАб3;
Условие 4 entity.numAbPol==4
Действия При выходе 4 отпрАб4++;
main.отпр64=отпрАб4;
Свойство selectOutput2
Условие 1 entity.numAbPol==5
Действия отпрАб5++;
При выходе 1 main.отпр65=отпрАб5;
Условие 1 entity.numAbPol==6
Свойство selectOutput5
Тип заявки: Message
Использовать: Условия
Условие 1 entity.numAbOtpr==1
Действия При выходе 1 отАб1++;
main.кПрСп16=отАб1/main.отпр16;
main.КПрСп16.setText(main.кПрСп16, true);
Условие 2 entity.numAbOtpr==2
Действия При выходе 2 отАб2++;
main.кПрСп26=отАб2/main.отпр26;
main.КПрСп26.setText(main.кПрСп26, true);
Условие 3 entity.numAbOtpr==3
Действия При выходе 3 отАб3++;
main.кПрСп35=отАб3/main.отпр35;
main.КПрСп35.setText(main.кПрСп35, true);
Условие 4 entity.numAbOtpr==4
Действия При выходе 4 отАб3++;
main.кПрСп36=отАб3/main.отпр36;
main.КПрСп36.setText(main.кПрСп36, true);
Свойство selectOutput6
Тип заявки: Message
Использовать: Условия
Условие 1 entity.numAbOtpr==5
Действия При выходе 1 отАб5++;
main.кПрСп56=отАб5/main.отпр56;
main.КПрСп56.setText(main.кПрСп56, true);
Условие 2 entity.numAbOtpr==6

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

  1. Создайте ещё тип агента Маршрутизатор1.
  2. Откройте объект Маршрутизатор.
  3. Выделите все объекты и скопируйте их.
  4. Вставьте на Маршрутизатор1 скопированные объекты.
  5. Выделите элемент exit и в поле Действия При выходе замените имеющийся там код следующим кодом:
    int i;
    	i=entity.numAbPol;
    	 {
    			switch (i) {
    				case 1:if (emkBuferNapr1-tekEmkNapr1>=entity.dlina) 
    {enter1.take(entity);
    							break;}
    						else {enter.take(entity);
    							break;}  
    				case 2:if (emkBuferNapr2-tekEmkNapr2>=entity.dlina) {
    							enter2.take(entity);
    							break;}
    						else {enter.take(entity);
    		    				break;}  
    				case 3:if (emkBuferNapr3-tekEmkNapr3>=entity.dlina) {
    							enter3.take(entity);
    							break;}
    						else {enter.take(entity);
    						    break;}  
    				case 4:if (emkBuferNapr4-tekEmkNapr4>=entity.dlina) {
    							enter4.take(entity);
    							break;}
    						else {enter.take(entity);
    	    					break;}
    	    	}
    		}
  6. Теперь Маршрутизатор1 настроен так, что сообщения от абонентов 1…4 будут направляться на его выходы 1…4.
  7. Из окна Проекты перетащите элемент маршрутизатор1. В поле Имя: установите маршрут2.
  8. Соедините вых1 маршрут1 с вх1 маршрут2, а вых2 с вх2.
  9. Скопируйте элемент канал1. Вставьте шесть элементов. Разместите их как на Рис. 4.18.
  10. Соедините вых3 маршрут1 с вх канал11, вых4 - с вх канал12.
  11. Соедините вых1…вых4 маршрут2 с вх канал7…канал10 соответственно.
  12. Соедините вых канал7…канал12 с входами абонент1…абонент6 соответственно.

Построение модели сети связи завершено. Но надо ещё организовать переключение между областями просмотра.

< Лекция 4 || Лекция 5: 123456 || Лекция 6 >
Игорь Маникин
Игорь Маникин

Коллеги, спасибо за очень информативный и полезный курс. Прошёл три лекции. Столкнулся с проблемой, что обе модели не могут закончить расчёт по причине ограничения бесплатной версии "создано максимально допустимое число динамически создаваемых агентов (50000)". По скриншотам Лекции 2 видно, что да, модель создает гораздо больше 50000 агентов. В принципе, мне то и диплом не особо нужен. Но хотелось бы выполнить практические работы. Нет ли возможности откорректировать эту проблему? Или может я чего не так делаю?

Еще раз спасибо за прекрасный курс!

Артём Нагайцев
Артём Нагайцев

Выдает ошибку "entity cannot be resolved to a variable" при попытке запуска. В чем может быть причина? Ошибка в строках

entity.time_vxod=time(); 

time_obrabotki.add(time()-entity.time_vxod);