3. Протоколы информационно-вычислительных сетей : Справочник / Под ред. Мизина И.А. и Кулишова А.П., М.: Радио и связь, 1990.
4. Зелигер Н.Б., Чугреев О.С., Янковский Г.Г. Проектирование сетей и систем передачи дискретных сообщений”, М. Радио и связь, 1984.
5. Microchip PIC16/17. Микроконтроллер, Data Book 1996, Microchip Technology Inc.
Приложение 1
Программа ликвидации ЛС
Title“Ликвидация ЛС”
Listp=16C64
ErrorLevel0 ; вывод всех ошибок при компиляции
N2 equH’A’ ; число попыток разъединения
NequH’1’ ; начальное значение счетчика
TzadequH’FF’ ; заданное значение таймера
Org0 ; вектор сброса
ClrfIntCon; очистка регистра IntCon
ClrfPCLath; очистка регистра хранение старших бит для PC
ClrfStatus; очистка регистра состояния
CallInitPort; инициализация портов
Goto Begin
InitPort
Bsf Status, RP0 ; выборбанка 1
ClrfPortC; инициализация порта С
MovLW0хFF; значение, используемое для инициализации
; направления обмена данными
MovFWTrisC; установка RC <7:0> как входов
ClrfPortD; инициализация порта D
MovLW0х00 ; значение, используемое для инициализации
; направления обмена данными
MovWFTrisD; установка RD <7:0> как выходов
BсfStatus, RP0 ; выбор банка 0
Return; возврат из подпрограммы
; Для инициирующей станции:
Begin
CallP_DISC; передача команды DISC
BsfStatus, RP0 ; выбор банка 1
ClrfTMR0 ; сброс таймера
MovLWB’00000101’ ; выбор TMR0, новой величины
; предделителя, источника синхронизации
MovWFOption
BсfStatus, RP0 ; выбор банка 0
L1: MovFPortC, 0 ; чтение порта С ( UA или DM )
SubLWH’C8’, 0 ; сравнение значения с протокольным значением
BtwssStatus, 2 ; проверка результата
GoToLLS; если UA то LLS
MovFTMR0, 0 ; иначе проверяем таймер
SubLWTzad, 0 ; сравниваем с заданным
BtwssStatus, 2 ; проверка результата
GoToL1 ; если время не истекло, то опять
; получаем кадр
IncfN, 1 ; иначе N:=N+1
MovfN, 0 ; N в аккумулятор
SubLWN2, 0 ; W:=W-N2
BtwssStatus, 2 ; сравниваем N и N2
GoToBegin;если N < N2 идем на начало
GoToError; иначе ошибка
LLS:ClrfTMR0 ; сброс таймера
CallUst_R_Raz; вызов процедуры “установление режима
; разъединения “
GoToEnd
End: Nop
; Для приемной станции:
Begin: MovfPortC, 0 ; чтение порта С
MovWfR1 ; значение в R1
DecfszR1, 1 ; сравнение с протокольным значением
GoToUA; if <> 0, то передача UA
GoToDM; передача DM
UA: CallF_Reg; процедура формирования КД для UA
MovfR_Apr; адрес приемной стороны загруж-ся в ак-
MovWfPortD; кумулятор и передается в порт D
MovfR_APer; адрес передающей стороны
MovWfPortD
MovfR_DSAP; запись команды DSAP
MovWfPortD
MovfR_SSAP; запись команды SSAP
MovWfPortD
MovfR_UA; запись команды UA
MovWfPortD
GoToEnd
DM: CallF_Reg; процедура формирования КД для DM
MovfR_Apr; адрес приемной стороны загруж-ся в ак-
MovWfPortD; кумулятор и передается в порт D
MovfR_APer; адрес передающей стороны
MovWfPortD
MovfR_DSAP; запись команды DSAP
MovWfPortD
MovfR_SSAP; запись команды SSAP
MovWfPortD
MovfR_DM; запись команды DM
MovWfPortD
End: CallUst_R_Raz; вызов процедуры “установление режима ; разъединения"
Приложение 2
Программа расчета коэффициента использования среды и среднеговремени задержки для ИМД2 и МД2 на структуре шинаи построение сравнительной характеристики
format long ;
v=4.33e-9; % задержка распространения сигнала, с/м
L=1000 ; % длина кабеля, м
dp = [512,1024,2048] ; % длина пакета, бит
fd = 1e6 ; % скорость передачи, bit/с
N = 75 ; % число узлов в сети
taum = v * L ; % задержка распространения по всей сети
tp = dp * 1/fd ; % время передачи пакета
tm = 64/fd ; % время передачи маркера
i=1;
for ro0=0.001:0.005:0.9,
a1 = taum /tp(1) ;
b1 = tm / tp(1) ; a2 = taum /tp(2) ; b2 = tm / tp(2) ; a3 = taum /tp(3) ; b3 = tm / tp(3) ;
% расчет параметров для маркерного доступа на шине с произвольным расположением узлов.
tet1(i) = ro0 / ( ro0 + a1/2 + b1 ) ;
tet2(i) = ro0 / ( ro0 + a2/2 + b2 ) ;
tet3(i) = ro0 / ( ro0 + a3/2 + b3 ) ;
tau1(i)=( 1 + ro0*(N-1) + N * ( a1/2 + b1 ) ) / ( 1 - ro0 ) ; tau2(i)=( 1 + ro0*(N-1) + N * ( a2/2 + b2 ) ) / ( 1 - ro0 ) ; tau3(i)=( 1 + ro0*(N-1) + N * ( a3/2 + b3 ) ) / ( 1 - ro0 ) ;
% расчет параметров для интервально-маркерного доступа на шине с произвольным расположением узлов.
tet4(i)=ro0 / ( ro0 + a1 * ( 5/2 - 2*ro0 + 0.1 * ( 1-ro0) ) ) ; tet5(i)=ro0 / ( ro0 + a2 * ( 5/2 - 2*ro0 + 0.1 * ( 1-ro0) ) ) ; tet6(i)=ro0 / ( ro0 + a3 * ( 5/2 - 2*ro0 + 0.1 * ( 1-ro0) ) ) ;
tau4(i)=(1+ro0*(N-1))*(a1/2+1)/(1-ro0) + a1*(5/2 + 0.1)*(N-1) ; tau5(i)=(1+ro0*(N-1))*(a2/2+1)/(1-ro0) + a2*(5/2 + 0.1)*(N-1) ; tau6(i)=(1+ro0*(N-1))*(a3/2+1)/(1-ro0) + a3*(5/2 + 0.1)*(N-1) ; i=i+1 ;
end ;
% вывод графиков на экран
clg;
axis([0,1,0,2]) ; % выбор масштаба вывода
semilogy(tet1,tau1,'-',tet2,tau2,'-.',tet3,tau3,'--'),hold;
semilogy(tet4,tau4,'-',tet5,tau5,'-.',tet6,tau6,'--'),grid;
title('Сравнительная характеристика ИМДШ и МДШ') ;
xlabel('Коэффициент использования среды') ; % название оси абсцисс ylabel('Среднее время задержки') ; % название оси ординат