- •Содержание
- •Введение
- •1. Управляющий комплекс танкера
- •1.1 Группы комплексной автоматизации судов
- •1.2 Комплексная автоматизация управления вспомогательными механизмами энергетических установок и судовых систем
- •1.3 Структура управляющего комплекса
- •1.4 Конструктивное построение управляющего комплекса
- •2. Описание систем нефтеналивного танкера "победа"
- •2.1 Общие сведения
- •2.2 Общее расположение и архитектура судна
- •2.3 Техническое описание системы кондиционирования воздуха
- •2.4 Противопожарная система
- •2.5 Осушительно-балластная система
- •3. Анализ подсистем судна
- •3.1 Подсистема пожаротушения
- •3.1.1 Водяное пожаротушение
- •3.1.2 Спринклерная система пожаротушения
- •3.1.3 Система орошения палубы водой
- •3.1.4 Система инертных газов
- •3.1.5 Система пенотушения
- •3.2 Подсистема кондиционирования воздуха
- •3.3 Осушительно-балластная подсистема
- •4. Алгоритмическая структура контроля и управления
- •4.1 Алгоритм первичной обработки сигналов с датчиков и выработки экстренных сообщений
- •4.2 Алгоритм проверки на достоверность
- •4.3 Алгоритмы фильтрации
- •4.4 Алгоритм проверки на технологические границы
- •5. Техническая структура системы
- •5.1 Выбор датчиков
- •5.2 Выбор исполнительных механизмов
- •5.3 Расчет разрядности ацп и мк
- •5.4 Схема соединения устройств автоматизации
- •5.4.1 Общие характеристики модулей серии adam-4000
- •5.4.2 Ibm pc-совместимый контроллер связи adam-4500
- •5.4.3 Модули аналогового ввода серии adam-4000
- •5.4.4 Восьмиканальный модуль аналогового ввода adam-4017
- •5.4.5 Модули аналогового вывода серии adam-4000 Модуль аналогового вывода adam-4021
- •Модуль adam-4561 - преобразователь интерфейса rs-232/422/485 в usb
- •5.5 Конструктивное исполнение разработки
- •6. Техническая реализация системы контроля
- •6.1 Реализация диспетчерского уровня системы
- •7. Технико-экономическое обоснование проекта
- •7.1 Обоснование необходимости и актуальности работы
- •7.2 Обоснование выбора аналога для сравнения
- •7.3 Обоснование критериев сравнения разрабатываемого устройства с аналогом
- •7.4 Расчет затрат на этапе проектирования
- •7.5 Расчет трудоемкости разработки программного продукта
- •7.6 Стоимостная оценка разработки
- •7.7 Расчет экономического эффекта
- •7.8 Сравнительная технико-экономическая эффективность разработки
- •8. Безопасность и экологичность проекта
- •8.1 Оценка напряженности работы оператора пэвм
- •8.2 Санитарно-гигиенические требования к условиям труда операторов
- •8.3 Оценка возможности возникновения чрезвычайной ситуации
- •8.4 Экологичность проекта
- •9. Социальная значимость работы
- •Заключение
- •Список использованной литературы
- •Приложения Приложение 1
- •Приложение 2
- •Приложение 3
- •Приложение 4
Приложения Приложение 1
Листинг MatLab-программы для моделирования сигналов с датчиков.
F = 500;
Ngroup = 21;
Nvar =9;
mox = 21;
sigma = sqrt( 0.01 * (9+5)^2 );
Apom = 20*mox;
Akz = 25*mox;
Aobr = 0;
x = mox + sigma*randn(1, F);
D0 = cov(x);
subplot(5, 1, 1)
plot(x)
grid on
ylim([mox-sigma*10 mox+sigma*10])
text(1, mox-sigma*10+1, strcat('Дисперсия погрешности измерений:', num2str(D0)))
legend('Сигнал датчика');
pomnum = F/50; %кол-во импульсных помех с амплитудой Apom
for m = 1:pomnum
t = round(3 + (F-3) * rand(1)); %индекс элемента массива, где будет помеха. Лежит в интервале [3;F];
x(t) = Apom;
end
t = round(3 + (F-5) * rand(1)); %индекс элемента массива, где будет короткое замыкание. Лежит в интервале [3;F-2];
x(t) = Akz;
x(t+1) = Akz;
x(t+2) = Akz;
t = round(3 + (F-5) * rand(1)); %индекс элемента массива, где будет обрыв. Лежит в интервале [3;F-2];
x(t) = Aobr;
x(t+1) = Aobr;
x(t+2) = Aobr;
%D1 = cov(x);
subplot(5, 1, 2)
plot(x)
grid on
ylim([mox-sigma*10 mox+sigma*10])
legend('Сигнал в канале измерений');
%проверка на достоверность
errorcount = 0; %счетчик нарушений
j = 3;
XB = mox + (Nvar+2);
XH = mox - (Nvar+2);
last = x(1); %последнее достоверное значение
for k = j:F
if x(k)<XH | x(k)>XB
errorcount = errorcount + 1;
if errorcount == 3
razn = x(k)-x(k-j);
if razn < 0
obr = k;
else
kz = k;
end
errorcount = 0; %так как программа продолжает выполнение
x(k)=last;
else
x(k) = last;
end
else
errorcount = 0;
last = x(k);
end
end
D2 = cov(x);
subplot(5, 1, 3)
plot(x)
grid on
ylim([mox-sigma*10 mox+sigma*10])
text(1, mox-sigma*10+1, strcat('Дисперсия:', num2str(D2), '; КЗ на отсчете:', int2str(kz), '; Обрыв в канале на отсчете:', int2str(obr)))
legend('Сигнал после проверки на достоверность');
% Algoritmi sglajivaniya
Nzad = 10;
sigmazad = 0.00001;
% Sglajivaniye "skolzashego srednego"
M = ceil(Nzad);
for t = 1:M
xc(t) = x(t);
end
for k = M:F
sum = 0;
for j = k-M+1:k-M+M
sum = sum + x(j);
end
sum = sum / M;
xc(k) = sum;
end
xcd = xc(M:F);
D3 = cov(xcd);
subplot(5, 1, 4)
plot(xc)
grid on
ylim([mox-sigma*10 mox+sigma*10])
text(1, mox-sigma*10+1, strcat('Дисперсия:', num2str(D3), '; Коэфф. ослабления :', num2str(D2/D3), '; Тск.ср.=', int2str(M), '*Tопр'))
legend('Скользящее сглаживание');
% Exponencialnoye sglajivaniye
alpha = 2/(Nzad+1);
xe(1)=alpha*x(1);
for k = 2:F
xe(k) = xe(k-1) + alpha*(x(k)-xe(k-1));
end
Teks = 0.5*log(sigmazad)/log(1-alpha);
xed = xe(ceil(Teks):F);
D4 = cov(xed);
subplot(5, 1, 5)
plot(xe)
grid on
ylim([mox-sigma*10 mox+sigma*10])
text(1, mox-sigma*10+1, strcat('Дисперсия:', num2str(D4), '; Коэфф. ослабления :', num2str(D2/D4), '; Тэкс.сгл.=', num2str(Teks), '*Tопр'))
legend('Экспоненциальное сглаживание');
Программный модуль для реализации функции аналогового ввода сигналов от датчиков.
//измерение температуры
begin
open "com1: 9600, n, 8, 1, rs, cs, cd, ds" as #1;
writeln "конфигурация, ждите";
cmd: = "%01020е0600";
writeln #1,cmd;
result:=input(4,#1);
temp:=mid(result,1,3);
if temp<>"102" then goto ent;
delay = 7 goto dela;
vver:
cmd:= "@02lo+140.00";
writeln #1,cmd;
results:=inputs (4, #1);
temps:= mto(result,1,3);
if tempo"102" then goto vver;
delay:= 2 goto dela;
cmd:= "@02еам";
vver2:
writeln #1,cmd;
results:=inputs (4, #1);
temp:= mid(temp,1,3);
if temp<>"102" then goto vver2
delay = 2: goto dela
writeln " температура: °";
writeln " *контрольная температура:";
writeln " * сигнал управления:";
writeln " текущее время:";
while true do
begin
cmd:= "#02";
writeln #1,cmd;
temps;= inputs (9, #1);
temps:= mid(temp,2,7);
writeln temps;
writeln times;
cmos:= "@02d1";
writeln #1,cmd;
alarms:= inputs (9, #1);
alarms:= mid( alarm,6,1);
if (alarms ="2" or alarms ="3") then writeln "on"
else writeln "off";
end;
dela:
//"процедура временной задержки"
begin
start:= int(timer)
while delay>-1 do
begin
if (startoint(timer)) then delay = delay-1
end;
end;
end;
