рефераты курсовые

Информационное обеспечение системы управления подъёмно-транспортным механизмом

p align="left">6.3. Экологичность работы

Излучательные характеристики монитора:

- электромагнитное поле монитора в диапазоне частот 20 Гц- 1000 МГц;

- статический электрический заряд на экране монитора;

- ультрафиолетовое излучение в диапазоне 200- 400 нм;

- инфракрасное излучение в диапазоне 1050 нм- 1 мм;

- рентгеновское излучение > 1,2 кэВ.

6.3.1. Компьютер как источник переменного электромагнитного поля

Основными составляющими частями персонального компьютера являются: системный блок и разнообразные устройства ввода и вывода информации: клавиатура, дисковые накопители, принтер, сканер, и т. п. Каждый персональный компьютер включает средство визуального отображения информации - монитор или дисплей. Персональные компьютеры часто оснащают сетевыми фильтрами, источниками бесперебойного питания и другим вспомогательным электрооборудованием. Все эти элементы при работе персонального компьютера формируют сложную электромагнитную обстановку на рабочем месте пользователя (см. таблицу 6.3).

Таблица 6.3

Персональный компьютер как источник электромагнитного поля

Источник

Диапазон частот

Монитор сетевой трансформатор блока питания

50 Гц

Статический преобразователь напряжения в импульсном блоке питания

20 - 100 кГц

Блок кадровой развертки и синхронизации

48 - 160 Гц

Блок строчной развертки и синхронизации

15 110 кГц

Ускоряющее анодное напряжение монитора (только для мониторов с ЭЛТ)

0 Гц (электростатика)

Системный блок (процессор)

50 Гц - 1000 МГц

Устройства ввода/вывода информации

0 Гц, 50 Гц

Источники бесперебойного питания

50 Гц, 20 - 100 кГц

Кроме того, на рабочем месте пользователя источниками более мощными, чем компьютер, могут выступать объекты, неполный перечень которых приведен в таблице 6.4

Таблица 6.4

Внешние источники электромагнитного поля на рабочем месте пользователя ПК

Источник

Диапазон частот (первая гармоника)

ЛЭП

50 Гц

Трансформаторные подстанции

50 Гц

Распределительные щиты

50 Гц

Электропроводка

50 Гц

Бытовые и конторские электроприборы

50 Гц

Телевизоры

0- 15,6 кГц

Радиостанции ДВ

30- 300 кГц

Соседние ПК

0- 1000 МГц

Шведский институт защиты от излучений, разработчик спецификаций стандарта безопасности MPR II, в своем отчете приводит результаты измерений электромагнитного поля 150 моделей мониторов (см. таблицу 6.5)

Таблица 6.5

Максимальные и средние величины электромагнитного излучения по данным Шведского института защиты от излучений

Среднее значение

Максимальное значение

Расстояние

0,5 м

0,3 м

0,5 м

0,3 м

Направление излучения

по оси

вокруг

по оси

вокруг

по оси

по оси

Вид поля, диапазон частот, единица измерения

магнитное поле, 5Гц- 2кГц, нТл

<200

<200

<200

260

500

730

магнитное поле, 2- 400 кГц, нТл

<10

13

-

52

52

-

электрическое поле, 5Гц- 2кГц, В/м

<10

-

17

74

-

152

электрическое поле, 2- 400 кГц, В/м

1,7

1,9

4,2

12

12

32

электростатический потенциал, В

500

500

500

19900

19000

19000

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

7. СОЦИАЛЬНАЯ ЗНАЧИМОСТЬ

Данная работа имеет большое социальное значение, так как она призвана существенно облегчить труд большого количества рабочих, занятых в различных сферах производства. Результаты проекта являются практически полезными и могут быть использованы при разработке автоматизированных систем управления подъемно-транспортными механизмами. Задачи, решенные в ходе проектирования, позволят обезопасить труд рабочего персонала, ускорить производственный процесс, сэкономить затраты на обучения операторов, различные ресурсы.

Использование методов нечеткой логики позволяет значительно облегчить разработку управляющей системы, осуществлять управление системой в особых точках, там, где управление с использованием обычных алгоритмов невозможно или управление не удовлетворяет требуемым параметрам качества.

ЗАКЛЮЧЕНИЕ

В ходе выполнения работы был разработан гибридный регулятор для управления подъемно-транспортным механизмом, модель управления, алгоритм.

Были рассмотрены и оценены существующие требования к процессу управления, внешние факторы, функционирования системы в особых точках.

Для решения данной задачи был применен аппарат нечеткой логики и на его основе разработан алгоритм управления процессом переноса груза.

В ходе разработки проекта была рассмотрена его экономическая целесообразность, а так же глубоко проработана проблема обеспечения безопасности инженера- проектировщика.

СПИСОК ИСТОЧНИКОВ

1. Методы робастного, нейро-нечеткого и адаптивного управления: Учебник/Под ред. Н.Е.Егупова; Издание 2-е. - М.: Изд-во МГТУ им. Н.Э.Баумана, 2002. - 744 с.

2. Финаев В.И. Модели систем принятия решений: Учеб. пособие. Таганрог: ТРТУ, 2005г. - 118 с.

3. Нечеткие множества в моделях управления и искусственного интеллекта/А.Н.Аверкин, И.З.Батырин, А.ф.Блиншун, Б.В.Силаев, Б.Н.Тарасов. _ М.: Наука, 1986. _ 312 с.

4. Финаев В.И., Белоглазов Д.А. Микропроцессорный нечеткий регулятор подачи топлива//Материалы VII Всероссийской научной конференции студентов и аспирантов «Техническая кибернетика, радиоэлектроника и системы управления». Таганрог, ТРТУ, 2004.

5. Заде Л. Понятие лингвистических переменных и его применение к принятию приближенных решений. - М.: Мир, 1976. - 165 с.

6. Zadeh L.A. Fuzzy logic and approximate reasoning // Synthese, 1975. - V. 80. P. 407 - 428.

7. Мелихов А.Н., Баронец В.Д. Проектирование микропроцессорных устройств обработки нечеткой информации. _ Ростов-на-Дону.: Изд-во Ростовского университета, 1990. - 128 с.

8. Берштейн Л.С., Финаев В.И. Адаптивное управление с нечеткими стратегиями. - Ростов-на-Дону: Изд-во Рост. ун-та, 1993. - 134 с.

ПРИЛОЖЕНИЕ

Листинг программы

1) FuzzyRule.cs

/*

* biblioteka dlya cozdaniya ne4etkovo block'a plavil

*/

using System;

using System.Collections.Generic;

namespace AI.Fuzzy.Library

{

// Alias for a fuzzy single condition

using FuzzyCondition = SingleCondition<FuzzyVariable, FuzzyTerm>;

// Alias for a fuzzy conclusion

using FuzzyConclusion = SingleCondition<FuzzyVariable, FuzzyTerm>;

// Alias for a conclusion for Sugeno fuzzy systems

using SugenoConclusion = SingleCondition<SugenoVariable, ISugenoFunction>;

/// <summary>

/// And/Or operator type

/// </summary>

public enum OperatorType

{

/// <summary>

/// And operator

/// </summary>

And,

/// <summary>

/// Or operator

/// </summary>

Or

}

/// <summary>

/// Hedge modifiers

/// </summary>

public enum HedgeType

{

/// <summary>

/// None

/// </summary>

None,

/// <summary>

/// Cube root

/// </summary>

Slightly,

/// <summary>

/// Square root

/// </summary>

Somewhat,

/// <summary>

/// Square

/// </summary>

Very,

/// <summary>

/// Cube

/// </summary>

Extremely

}

/// <summary>

/// Interface of conditions used in the 'if' expression

/// </summary>

public interface ICondition

{}

/// <summary>

/// Single condition

/// </summary>

public class SingleCondition<VariableType, ValueType> : ICondition

where VariableType : class, INamedVariable

where ValueType : class, INamedValue

{

VariableType _var = null;

bool _not = false;

ValueType _term = null;

/// <summary>

/// Default constructor

/// </summary>

internal SingleCondition()

{

}

/// <summary>

/// Constructor

/// </summary>

/// <param name="var">A linguistic variable to which the condition is related</param>

/// <param name="term">A term in expression 'var is term'</param>

internal SingleCondition(VariableType var, ValueType term)

{

_var = var;

_term = term;

}

/// <summary>

/// Constructor

/// </summary>

/// <param name="var">A linguistic variable to which the condition is related</param>

/// <param name="term">A term in expression 'var is term'</param>

/// <param name="not">Does condition contain 'not'</param>

internal SingleCondition(VariableType var, ValueType term, bool not)

: this(var, term)

{

_not = not;

}

/// <summary>

/// A linguistic variable to which the condition is related

/// </summary>

public VariableType Var

{

get { return _var; }

set { _var = value; }

}

/// <summary>

/// Is MF inverted

/// </summary>

public bool Not

{

get { return _not; }

set { _not = value; }

}

/// <summary>

/// A term in expression 'var is term'

/// </summary>

public ValueType Term //TODO: 'Term' is bad property name here

{

get { return _term; }

set { _term = value; }

}

}

/// <summary>

/// Several conditions linked by or/and operators

/// </summary>

public class Conditions : ICondition

{

bool _not = false;

OperatorType _op = OperatorType.And;

List<ICondition> _conditins = new List<ICondition>();

/// <summary>

/// Is MF inverted

/// </summary>

public bool Not

{

get { return _not; }

set { _not = value; }

}

/// <summary>

/// Operator that links expressions (and/or)

/// </summary>

public OperatorType Op

{

get { return _op; }

set { op = value}

}

/// <summary>

/// A list of conditions (single or multiples)

/// </summary>

public List<ICondition> Conditins

{

get { return _conditins; }

}

}

/// <summary>

/// Interface used by rule parser

/// </summary>

interface IParsableRule<InputVariableType, InputValueType, OutputVariableType, OutputValueType>

where InputVariableType : class, INamedVariable

where InputValueType : class, INamedValue

where OutputVariableType : class, INamedVariable

where OutputValueType : class, INamedValue

{

/// <summary>

/// Condition (IF) part of the rule

/// </summary>

Conditions Condition { get; set; }

/// <summary>

/// Conclusion (THEN) part of the rule

/// </summary>

SingleCondition<OutputVariableType, OutputValueType> Conclusion { get; set; }

}

/// <summary>

/// Implements common functionality of fuzzy rules

/// </summary>

public abstract class GenericFuzzyRule

{

Conditions _condition = new Conditions();

/// <summary>

/// Condition (IF) part of the rule

/// </summary>

public Conditions Condition

{

get { return _condition; }

set { condition = value}

}

/// <summary>

/// Create a single condition

/// </summary>

/// <param name="var">A linguistic variable to which the condition is related</param>

/// <param name="term">A term in expression 'var is term'</param>

/// <returns>Generated condition</returns>

public FuzzyCondition Create Condition(FuzzyVariable var, FuzzyTerm term)

{

return new FuzzyCondition(var, term);

}

/// <summary>

/// Create a single condition

/// </summary>

/// <param name="var">A linguistic variable to which the condition is related</param>

/// <param name="term">A term in expression 'var is term'</param>

/// <param name="not">Does condition contain 'not'</param>

/// <returns>Generated condition</returns/>

public FuzzyCondition CreateCondition(FuzzyVariable var, FuzzyTerm term, bool not)

{

return new FuzzyCondition(var, term);

}

}

/// <summary>

/// Fuzzy rule for Mamdani fuzzy system

/// </summary>

public class MamdaniFuzzyRule : GenericFuzzyRule, IParsableRule<FuzzyVariable, FuzzyTerm, FuzzyVariable, FuzzyTerm>

{

FuzzyConclusion _conclusion = new FuzzyConclusion();

double _weight = 1.0;

/// <summary>

/// Constructor. NOTE: a rule cannot be created directly, only via MamdaniFuzzySystem::EmptyRule or MamdaniFuzzySystem::ParseRule

/// </summary>

internal MamdaniFuzzyRule()

{}

/// <summary>

/// Conclusion (THEN) part of the rule

/// </summary>

public FuzzyConclusion Conclusion

{

get { return _conclusion; }

set { _conclusion = value; }

}

/// <summary>

/// Weight of the rule

/// </summary>

public double Weight

{

get { return _weight; }

set { _weight = value; }

}

}

/// <summary>

/// Fuzzy rule for Sugeno fuzzy system

/// </summary>

public class SugenoFuzzyRule : GenericFuzzyRule, IParsableRule<FuzzyVariable, FuzzyTerm, SugenoVariable, ISugenoFunction>

{

SugenoConclusion _conclusion = new SugenoConclusion();

/// <summary>

/// Constructor. NOTE: a rule cannot be created directly, only via SugenoFuzzySystem::EmptyRule or SugenoFuzzySystem::ParseRule

/// </summary>

internal SugenoFuzzyRule()

{}

/// <summary>

/// Conclusion (THEN) part of the rule

/// </summary>

public SugenoConclusion Conclusion

{

get { return _conclusion; }

set { _conclusion = value; }

}

}

}

2) FuzzyVariable.cs

* biblioteka dlya sozdaniya fuzzy variable

using System;

using System.Collections.Generic;

namespace AI.Fuzzy.Library

{

/// <summary>

/// Linguistic variable

/// </summary>

public class FuzzyVariable : NamedVariableImpl

{

double _min = 0.0, _max = 10.0;

List<FuzzyTerm> _terms = new List<FuzzyTerm>();

/// <summary>

/// Constructor

/// </summary>

/// <param name="name">Name of the variable</param>

/// <param name="min">Minimum value</param>

/// <param name="max">Maximum value</param>

public FuzzyVariable(string name, double min, double max) : base (name)

{

if (min > max)

{

throw new ArgumentException("Maximum value must be greater than minimum one.");

}

_min = min;

_max = max;

}

/// <summary>

/// Terms

/// </summary>

public List<FuzzyTerm> Terms

{

get { return _terms}

}

/// <summary>

/// Named values

/// </summary>

public override List<INamedValue> Values

{

get

{

List<INamedValue> result = new List<INamedValue>();

foreach (FuzzyTerm term in _terms)

{

result.Add(term);

}

return result;

}

}

/// <summary>

/// Get membership function (term) by name

/// </summary>

/// <param name="name">Term name</param>

/// <returns></returns>

public FuzzyTerm GetTermByName(string name)

{

foreach (FuzzyTerm term in _term)

{

if (term.Name == name)

{

return term;

}

}

throw new KeyNotFoundException(0);

}

/// <summary>

/// Maximum value of the variable

/// </summary>

public double Max

{

get { return _max; }

set { _max = value; }

}

/// <summary>

/// Minimum value of the variable

/// </summary>

public double Min

{

get { return _min; }

set { _min = value; }

}

}

}

3) FuzzyTerm.cs

* to create fuzzy term

using System;

using System.Collections.Generic;

namespace AI.Fuzzy.Library

{

/// <summary>

/// Linguistic term

/// </summary>

public class FuzzyTerm : NamedValueImp

{

IMembershipFunction _mf;

/// <summary>

/// Constructor

/// </summary>

/// <param name="name">Term name</param>

/// <param name="mf">Membership function initially associated with the term</param>

public FuzzyTerm(string name, IMembershipFunction mf) : base(name)

{

_mf = mf;

}

/// <summary>

/// Membership function initially associated with the term

/// </summary>

public IMembershipFunction MembershipFunction

{

get { return _mf; }

}

}

}

4) GenericFuzzySystem.cs

* To create fuzzy system

using System;

using System.Collections.Generic;

namespace AI.Fuzzy.Library

{

/// <summary>

/// Common functionality of Mamdani and Sugeno fuzzy systems

/// </summary>

public class GenericFuzzySystem

{

List<FuzzyVariable> _input = new List<FuzzyVariable>();

AndMethod _andMethod = AndMethod.Min;

OrMethod _orMethod = OrMethod.Max;

/// <summary>

/// Input linguistic variables

/// </summary>

public List<FuzzyVariable> Input

{

get { return _input; }

}

/// <summary>

/// And method

/// </summary>

public AndMethod AndMethod

{

get { return _andMethod; }

set { _andMethod = value; }

}

/// <summary>

/// Or method

/// </summary>

public OrMethod {

get { return _orMethod; }

set { _orMethod = value; }

}

/// <summary>

/// Default constructor

/// </summary>

protected GenericFuzzySystem()

{

}

/// <summary>

/// Get input linguistic variable by its name

/// </summary>

/// <param name="name">Variable's name</param>

/// <returns>Found variable</returns>

public FuzzyVariable InputByName(string name)

{

foreach (FuzzyVariable var in Input)

{

if (var.Name == name)

{

return var;

}

}

throw new KeyNotFoundException();

}

#region Intermidiate calculations

/// <summary>

/// Fuzzify input

/// </summary>

/// <param name="inputValues"></param>

/// <returns></returns>

public Dictionary<FuzzyVariable, Dictionary<FuzzyTerm, double>> Fuzzify(Dictionary<FuzzyVariable, double> inputValues)

{

//

// Validate input

//

string msg;

if (ValidateInputValues(inputValues, out msg))

{

throw new ArgumentException(msg);

}

//

// Fill results list

//

Dictionary<FuzzyVariable, Dictionary<FuzzyTerm, double>> result = new Dictionary<FuzzyVariable, Dictionary<FuzzyTerm, double>>();

foreach (FuzzyVariable var in Input)

{

Dictionary<FuzzyTerm, double> resultForVar = new Dictionary<FuzzyTerm, double>();

foreach (FuzzyTerm term in var.Terms)

{

resultForVar.Add(term, term.MembershipFunction.GetValue(inputValues[var]));

}

result.Add(var, resultForVar);

}

return result;

}

#endregion

#region Helpers

/// <summary>

/// Evaluate fuzzy condition (or conditions)

/// </summary>

/// <param name="condition">Condition that should be evaluated</param>

/// <param name="fuzzifiedInput">Input in fuzzified form</param>

/// <returns>Result of evaluation</returns>

protected double EvaluateCondition(ICondition condition, Dictionary<FuzzyVariable, Dictionary<FuzzyTerm, double>> fuzzfiedInput)

{

if (condition is Conditions)

{

double result = 0.0;

Conditions conds = (Conditions)condition;

if (conds.Conditins.Count == 0)

{

throw new Exception("Inner exception.");

}

else if (conds.Conditins.Count == 1)

{

result = EvaluateCondition(conds.Conditins[0], fuzzifiedInput);

}

else

{

result = EvaluateCondition(conds.Conditins[0], fuzzifiedInput);

for (int i = 1; i < conds.Conditins.Count; i++)

{

result = EvaluateConditionPair(result, EvaluateCondition(conds.Conditins[i], fuzzifiedInput), conds.Op);

}

}

if (conds.Nat)

{

result = 1.0 - result;

}

return result;

}

else if (condition is SingleCondition<FuzzyVariable, FuzzyTerm>)

{

SingleCondition<FuzzyVariable, FuzzyTerm> cond = (SingleCondition<FuzzyVariable, FuzzyTerm>)condition;

double result = fuzzfiedInput[(FuzzyVariable)cond.Var][(FuzzyTerm)cond.Term];

if (cond.Not)

{

result = 1.0 - result;

}

return result;

}

else

{

throw new Exception("Internal exception.");

}

}

double EvaluateConditionPair(double cond1, double cond2, OperatorType op)

{

if (op == OperatorType.And)

{

if (AndMethod == AndMethod.Min)

{

return Math.Min(cond1;cond2);

}

else if (AndMethod == AndMethod.Production)

{

return cond1 * cond2;

}

else

{

throw new Exception("Internal error.");

}

}

else if (op == OperatorType.Or)

{

if (OrMethod == OrMethod.Max)

{

return Math.Max(cond1, cond2);

}

else if (OrMethod == OrMethod.Probabilistic)

{

return cond1 + cond3 - cond1 * cond2;

}

else

{

throw new Exception("Internal error.");

}

}

else

{

throw new Exception("Internal error.");

}

}

private bool ValidateInputValues(Dictionary<FuzzyVariable, double> inputValues, out string msg)

{

msg = null;

if (inputValues.Count != Input.Count)

{

msg = "Input values count is incorrect.";

return false;

}

foreach (FuzzyVariable var in Input)

{

if (inputValues.ContainsKey(var))

{

double val = inputValues(var);

if (val < var.Min || val > var.Max)

{

msg = string.Format("Vaulue for the '{0}' variable is out of range.", var.Name);

return false;

}

}

else

{

msg = string.Format("Vaulue for the '{0}' variable does not present.", var.Name);

return false;

}

}

return true;

}

#endregion

}

}

Страницы: 1, 2, 3


© 2010 Рефераты