71032

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

Дипломная

Информатика, кибернетика и программирование

Недостатком промышленной сети является то, что при обрыве кабеля теряется возможность получать данные и управлять не одним, а несколькими устройствами (в зависимости от места обрыва и топологии сети остается возможность автономного функционирования сегмента сети и схемы управления).

Русский

2015-01-11

3.78 MB

25 чел.

СОДЕРЖАНИЕ

ВВЕДЕНИЕ 7

1 ОБЗОР ПРЕДМЕТНОЙ ОБЛАСТИ, СВЯЗАННОЙ С МОДУЛЬНЫМИ……………………. СИСТЕМАМИ, ПРЕДНАЗНАЧЕННЫМИ ДЛЯ ОРГАНИЗАЦИИ ПРОМЫШЛЕННОЙ…….. ШИНЫ 11

1.1 Понятие и сущность модульной системы, предназначенной для организации……………. промышленной шины 11

1.2 Обзор существующих решений модульных систем, предназначенных для организации…. промышленной шины 12

2 ПОСТАНОВКА ЗАДАЧИ ДИПЛОМНОГО ПРОЕКТИРОВАНИЯ 17

3 ПРОЕКТИРОВАНИЕ ПРОГРАММНОЙ ЧАСТИ модульной системы,…………….. предназначенной для организации промышленной шины 18

3.1 Разработка концептуальной модели устройства 18

3.1.1 Построение структурной схемы организации модульной системы 18

3.1.2 Построение структурной схемы универсального модуля 21

3.1.3 Определение основных параметров универсального модуля 23

3.2 Выбор стандарта физического уровня и протокола передачи данных 24

3.2.1 Выбор стандарта физического уровня общей сети 24

3.2.2 Выбор протокола передачи данных 26

3.3 Выбор основных элементов схемы 33

3.3.1 Выбор подходящего микроконтроллера 33

3.3.2 Выбор микросхемы приемопередатчика RS-485 35

3.4 Физическое проектирование модульной системы, предназначенной для организации……. промышленной шины 36

3.4.1 Выбор среды разработки, языка программирования и инструментальных средств……… разработки 36

3.4.2 Физическое проектирование программной части 38

4 РЕАЛИЗАЦИЯ И ТЕСТИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ 39

4.1 Назначение и описание компонентов программного обеспечения, и их исходные………… тексты… 39

4.1.1 Подпрограмма «Настройки» 40

4.1.2 Подпрограмма «Сканирование сети» 41

4.1.3 Подпрограмма «Опрос модулей сети» 41

4.1.4 Подпрограммы «Чтение с USART» и «Запись в USART» 42

4.1.5 Подпрограмма «Обработка принятых MODBUS данных» 42

4.1.6 Подпрограммы «Передача сообщения MODBUS slave» и «Передача сообщения……….. MODBUS master» 42

4.1.7 Подпрограмма «Подсчет CRC кода» 43

4.2 Тестирование программного обеспечения 43

5 РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ 45

6 ОПРЕДЕЛЕНИЕ ЭКОНОМИЧЕСКОЙ ЭФФЕКТИВНОСТИ РАЗРАБОТКИ……………… ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ 46

7 ОХРАНА ТРУДА 55

7.1 Производственная санитария 55

7.1.1 Микроклимат в помещениях вычислительного центра 55

7.1.2 Шум и вибрация в помещениях вычислительного центра 56

7.1.3 Электромагнитные излучения 56

7.1.4 Освещение в вычислительном центре 57

7.1.5 Рабочее место программиста 61

7.2 Техника безопасности 62

7.3 Пожарная безопасность 63

ЗАКЛЮЧЕНИЕ 64

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 65

ПРИЛОЖЕНИЕ А. АЛГОРИТМ РАБОТЫ УНИВЕРСАЛЬНОГО МОДУЛЯ 66

ПРИЛОЖЕНИЕ Б. ЛИСТИНГ ПРОГРАММЫ 75

ПРИЛОЖЕНИЕ В. ПРИМЕР ВАРИАНТА ИСПОЛНЕНИЯ АППАРАТНОЙ ЧАСТИ 86

ПРИЛОЖЕНИЕ Г. ПЕРЕЧЕНЬ ЛИСТОВ ГРАФИЧЕСКОЙ ЧАСТИ ДИПЛОМНОГО……….. ПРОЕКТА 87

 

ВВЕДЕНИЕ

Промышленная сеть – сеть передачи данных, связывающая различные датчики, исполнительные механизмы, промышленные контроллеры и используемая в промышленной автоматизации. Термин употребляется преимущественно в автоматизированной системе управления технологическими процессами (АСУТП). Описывается стандартом IEC 61158.

Устройства используют промышленную сеть для:

  •   передачи данных, между датчиками, контроллерами и исполнительными механизмами;
  •   диагностики и удаленного конфигурирования датчиков и исполнительных механизмов;
  •   калибрования датчиков;
  •   питания датчиков и исполнительных механизмов;
  •   связи между датчиками, исполнительными механизмами, ПЛК и АСУ ТП верхнего уровня.

В промышленных сетях для передачи данных применяют:

  •   электрические линии;
  •   волоконно-оптические линии;
  •   беспроводную связь (радиомодемы и Wi-Fi).

Промышленные сети могут взаимодействовать с обычными компьютерными сетями, в частности использовать глобальную сеть Internet.

Термин «полевая шина» является дословным переводом английского термина fieldbus. Термин «промышленная сеть» является более точным переводом и в настоящее время именно он используется в профессиональной технической литературе.

В сравнении с подключением периферийного оборудования к контроллеру отдельными проводами промышленная сеть имеет следующие достоинства:

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

Недостатком промышленной сети является то, что при обрыве кабеля теряется возможность получать данные и управлять не одним, а несколькими устройствами (в зависимости от места обрыва и топологии сети остается возможность автономного функционирования сегмента сети и схемы управления). Для повышения надежности приходится резервировать каналы связи или использовать кольцевую топологию сети.

Виды промышленных сетей:

1) Физический уровень на базе асинхронного интерфейса:

– Modbus – один из самых известных открытых стандартов промышленных сетей;

– P-NET – электрическая спецификация P-NET основана на стандарте RS-485;

– LIN – интерфейс для автомобильных систем.

2) Промышленный Ethernet:

  •   Profinet;
  •   FOUNDATION Fieldbus HSE (High Speed Ethernet) (FF H2) – вариант промышленного Ethernet, разработанный FOUNDATION Fieldbus (FF);
  •   EtherCAT;
  •   Ethernet Powerlink;
  •   Ether/IP;
  •   SERCOS III;
  •   MODBUS TCP – разновидность известного стандарта для TCP/IP сетей.

3) HART – стандарт передачи данных через токовую петлю 4-20мА.

4) FF H1 – полевой протокол, аналог ProfiBus PA, разработанный FOUNDATION Filedbus (FF).

5) AS-Interface – дешевая и помехозащищенная сеть для дискретных датчиков малой производительности.

6) CC-Link (англ.) русск. – семейство промышленных сетей (СС-Link, CC-Link LT, CC-Link IE), созданных при участии корпорации Mitsubishi Electric. В настоящее время развитием этого семейства сетей занимается международный консорциум CLPA.

7) CAN – спецификация физического и транспортного уровней промышленной сети для автоматизации транспорта и машиностроения. К нему существуют множество дополнений, уточняющих и дополняющих стандарт для определенных задач:

– CANbus;

– CANopen;

– DeviceNet;

– SDS;

– J1939.

8) ProfiBus – промышленная сеть, международный стандарт, созданный с активным участием фирмы Siemens AG, содержащий ряд профилей, например:

– ProfiBus DP;

– ProfiBus FMS;

– ProfiBus PA.

Промышленные сети для автоматизации зданий:

– LonWorks – промышленная сеть для автоматизации зданий;

– BACnet – промышленная сеть для автоматизации зданий;

– EIB – промышленная сеть для автоматизации зданий.

Несмотря на всестороннее исследование промышленных сетей и их установку по всему миру, они не являются столь распространенными, как можно было бы ожидать. Действительно, в мире насчитывается гораздо больше предприятий, не имеющих сетей, чем предприятий, пользующихся ими. Большинство компаний все еще пользуются отдельными измерительными приборами и устройствами управления, которые подключаются проводами к ПЛК или другим менее сложным системам. Когда датчик давления и устройство считывания отделены друг от друга и работают автономно, «сетью» служит человек, который курсирует между устройствами, выступая в роли буфера обмена данными.

Ведущие поставщики предоставляют бесконечные возможности для создания промышленной сети. Например, существуют не менее 50 различных платформ для реализации шин передачи данных. Сеть любого размера будет практически всегда использовать, по крайней мере, две технологии, в зависимости от того, насколько велико расстояние от отдельных приборов до систем управления ресурсами предприятия или корпоративной сети.

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

По мере совершенствования сетей также расширились причины, по которым стоит их использовать:

  •   системы производственной безопасности теперь используют ту же самую сеть, которая применяется для целей управления;
    •   контроллеры предлагают различные способы диагностики возникающих в системе проблем и изменения конфигурации оборудования без де-монтирования его;
    •   новые приборы могут сообщать гораздо больше информации, если имеются соответствующие возможности;
    •   программы управления производственными активами (PAM) работают с сетями управления;
    •   по мере того, как сети опускаются на уровень производства, способность обмениваться данными с заводскими цехами побуждает связать их друг с другом.

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

Таким образом, целью дипломного проекта является разработка универсальной модульной системы, предназначенной для организации промышленной шины, и решаются следующие задачи:

  •   анализ предметной области;
  •   разработка концептуальной модели универсального модуля ввода/вывода;
  •   выбор стандарта физического уровня и протокола передачи данных;
  •   разработка алгоритма работы модуля;
  •   выбор основных элементов схемы (от них будет зависеть выбор среды разработки, языка программирования и инструментальных средств разработки);
  •   создание программы (прошивки) на основе разработанного алгоритма;
  •   тестирование, отладка и настройка, разработанного ПО;
  •   техника–экономическое обоснование разработки программного продукта.

1 ОБЗОР ПРЕДМЕТНОЙ ОБЛАСТИ, СВЯЗАННОЙ С МОДУЛЬНЫМИ СИСТЕМАМИ, ПРЕДНАЗНАЧЕННЫМИ ДЛЯ ОРГАНИЗАЦИИ ПРОМЫШЛЕННОЙ ШИНЫ

1.1 Понятие и сущность модульной системы, предназначенной для организации промышленной шины

Универсальная модульная система – это система состоящая из некоторого количество универсальных модулей ввода-вывода подключенных к общей сети. Эти модули выполняет функцию сбора информации о работе оборудования в цеху, и передают данные по общей шине, либо на другие универсальные модули ввода-вывода, управляющие исполнительными устройствами, либо  в компьютерную программу сбора и отображения информации (SCADA – систему).

К этой шине также могут подключаться и взаимодействовать с универсальными модулями ввода-вывода другие устройства, использующие этот же интерфейс, стандарт и скорость передачи данных. Это могут быть датчики, специализированные устройства, ПЛК, другие модули ввода-вывода.

Таким образом, создается автоматизированная система управления производством.

Также универсальность модулей заключается в том, что они могут предварительно перед установкой конфигурироваться как «входные» (использоваться для сбора информации), либо как «выходные» (использоваться для вывода информации).

«Входная» информация будет зависеть от типа используемого дополнительного модуля ввода. Виды входных сигналов дополнительных модулей ввода:

  •   дискретный сигнал переменного напряжения 220 В (8 дискретных входов);
    •   дискретный сигнал  постоянного напряжения 24 В (8 дискретных входов);
    •   аналоговый сигнал от 0 до 10 В (1 аналоговый вход, с 8 разрядным АЦП);
    •   аналоговый сигнал от 4 до 20 мА (1 аналоговый вход, с 8 разрядным АЦП);
    •   аналоговый сигнал от термопреобразователей сопротивления, термопар, сопротивление до 5 кОм (1 аналоговый вход, с 8 разрядным АЦП).

«Выходная» информация будет зависеть от типа используемого дополнительного модуля вывода:

  •   э/м реле 4 А 250 В;
    •   транзисторная оптопара,  400мА  60 В, возможность выдачи ШИМ-сигнала;
    •   аналоговый сигнал от 0 до 10В (1 аналоговый выход, с 8 разрядным ЦАП);
    •   аналоговый сигнал от 4 до 20 мА (1 аналоговый выход, с 8 разрядным ЦАП).

1.2 Обзор существующих решений модульных систем, предназначенных для организации промышленной шины

Изготовлением модулей ввода-вывода занимаются такие компании, как ОВЕН, Moxa Inc., АКОН, ICP DAS, ADVANTECH, FASTWEL, WAGO, SLIO.

Довольно известной российской компанией, занимающейся изготовлением модулей ввода-вывода, является компания ОВЕН.

Модуль ввода ОВЕН МВ110 представлен на рисунке 1.1.

Рисунок 1.1 – Модуль ввода ОВЕН МВ110

МВ110 применяется для сбора данных с дискретных или аналоговых входов с передачей их в сеть RS-485.

Может использоваться совместно со всеми моделями ПЛК ОВЕН или контроллерами других производителей, а также со SCADA-системами. Поддерживаемые протоколы ModBus-RTU, ModBus-ASCII, DCON, ОВЕН.

МВ110 работает в сети RS-485 при наличии в ней «мастера», при этом сам МВ110 не является «мастером» сети.

Модуль ввода/вывода ОВЕН МК110 представлен на рисунке 1.2.

Рисунок 1.2 – Модуль ввода/вывода ОВЕН МК110

ОВЕН МК110 применяется для управления по сигналам из сети RS-485 исполнительными механизмами, подключенными к встроенным дискретным выходам, и сбора данных с дискретных входов модуля с передачей их в сеть RS-485.

Может использоваться совместно со всеми моделями ПЛК ОВЕН или контроллерами других производителей, а также со SCADA-системами. Поддерживаемые протоколы ModBus-RTU, ModBus-ASCII, DCON, ОВЕН.

ОВЕН МК110 работает в сети RS-485 при наличии в ней «мастера», при этом сам МК110 не является «мастером» сети.

Модуль дискретного вывода МУ110 представлен на рисунке 1.3.

Рисунок 1.3 – Модуль дискретного вывода МУ110

Новая линейка модулей ввода/вывода, выполненных в форм-факторе ОВЕН ПЛК110. Может применяться совместно с контроллерами ОВЕН или других производителей, а также со SCADA-системами.

Основные функциональные возможности:

  •   компактный корпус для крепления на DIN-рейку или на стену;
    •   программа-конфигуратор, общая для всей линейки модулей;
    •   гальванически развязанный интерфейс RS485;
    •   поддержка распространенных протоколов передачи данных через интерфейс RS485: ОВЕН, Modbus (RTU и ASCII), DCON;
    •   съемные клеммы;
    •   напряжения питания 220 В переменного тока и 24 В постоянного тока.

Недостатком приведённых модулей является необходимость присутствия в сети ПЛК выполняющего функцию «мастера», либо компьютера со SCADA-системой.

Контроллер WAGO I/O серии 750, представлен на рисунке 1.4.

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

Рисунок 1.4 – Контроллер WAGO I/O серии 750

Программируемые логические контроллеры (PLC) могут самостоятельно реализовывать управляющий алгоритм, что делает построенную на их основе систему более надежной ввиду меньшей зависимости от аварий в сетях передачи данных. Параметры объема памяти определяются выбранной промышленной шиной. Программирование PLC осуществляется с помощью специального компилятора WAGO I/O PRO 32, являющегося полноценной средой программирования, которая поддерживает 5 стандартных языков IEC 61131.3. Загрузка программ может осуществляться как через диагностический порт контроллера, так и дистанционно по сети.

Разработчик может подключиться к любой существующей промышленной сети, просто выбрав соответствующий контроллер. Конструкция системы не требует применения объединительного шасси: она монтируется на стандартную DIN рейку, электрическое соединение модулей осуществляется надежными лепестковыми контактами внутренней шины.

Контроллер обязательно состоит из трех компонентов: контроллера узла сети, модулей ввода-вывода, служебных модулей.

Коммуникационная подсистема предназначается для работы в различных промышленных сетях: Ethernet TCP, PROFIBUS DP/FMS, PROFIBUS DP/V1, PROFI-BUS DP/optic, Interbus, Interbus LWL, CANopen, Modbus, DeviceNet, CAL, LonWorks, II/OOLIGHTBUS. Использование контроллеров в существующих промышленных сетях PROFIBUS, Interbus, CANopen упрощается за счет наличия конфигурационных файлов для интеграции в программные пакеты для этих сетей.

Основные технические характеристики контроллеров:

  •   число программных инструкций до 3000;
    •   количество одновременно выполняемых программ 1;
    •   время цикла исполнения программы из 1000 инструкций, включая обмен с модулями ввода-вывода, около 3 мс;
    •   диапазон рабочих температур 0…+55°С;
    •   диапазон температур хранения –25…+85°С.

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

Модули можно разделить на 5 основных групп: дискретного ввода, дискретного вывода, аналогового ввода, аналогового вывода, специальные.

Модули ввода-вывода со штекерным подключением представлены на рисунке 1.5.

Новая серия 753 создана для наибольшего удобства при монтаже и настройке систем. Модули этой серии являются полными функциональными аналогами серии 750, но имеют разъемную штекерную часть. Это позволяет производить подключение проводников отдельно от модуля, упрощает тестирование линий связи с датчиками и исполнительными устройствами.

Рисунок 1.5 – Модули ввода-вывода со штекерным подключением серии 753

Модули дискретного ввода позволяют подключать любые датчики с  рабочим напряжением 5, 24, 48, 220 В по 22, 33, 44 проводной схеме, а также датчики с выходом типа «сухой» контакт. Модули выпускаются в 22, 44 и 88 канальном исполнениях, могут содержать входной шумоподавляющий фильтр и работать с сигналами положительной и отрицательной полярности. Модули маркируются флажком желтого цвета.

Модули дискретного вывода позволяют управлять нагрузками постоянного тока как положительной, так и отрицательной полярности напряжением 5, 24, 48, 120 В. Выпускаются релейные модули, модули для коммутации цепей переменного тока. Модули маркируются флажком красного цвета.

Модули аналогового вывода обеспечивают вывод стандартных сигналов управления (0…20, 4...20 мА; 0…10, –10…+10 В). Модули выпускаются в 22 и 44 канальном варианте и маркируются флажком синего цвета.

Модули аналогового ввода обеспечивают прием сигналов с аналоговых датчиков, имеющих стандартные уровни входных сигналов: 0…20, 4…20 мА; 0…10, –10…+10, 0…30В, токового сигнала 0…1 А, а также нормализацию сигналов термопар, термометров сопротивления и тензомостов. Модули маркируются флажком зеленого цвета.

Недостатком данных модулей является высокая стоимость.

2 ПОСТАНОВКА ЗАДАЧИ ДИПЛОМНОГО ПРОЕКТИРОВАНИЯ

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

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

Задачи, стоящие на пути разработки универсального модуля ввода/вывода:

  •   разработка концептуальной модели устройства;
    •   выбор стандарта физического уровня и протокола передачи данных;
    •   разработка алгоритма работы модуля;
    •   выбор основных элементов схемы (от них будет зависеть выбор среды разработки, языка программирования и инструментальных средств разработки);
    •   создание программы (прошивки) на основе разработанного алгоритма.

Универсальный модуль должен удовлетворять следующим требованиям:

  •   совместимость с большинством из существующих промышленных сетей;
    •   возможность работы с другими видами электронных устройств, такими как программируемые логические контроллеры (ПЛК);
    •   возможность контроля и управления с компьютера (SCADA-системой);
    •   максимальное количество модулей в сети не менее 200;
    •   максимальная протяженность сети (без применения дополнительных устройств – повторителей сигнала) не менее 100 м;
    •   возможность обновления состояния выходов модуля вывода не менее 1 раза в секунду;
    •   возможность, перед началом эксплуатации, простой смены типа работы: модуль ввода/модуль вывода;
    •   достаточная надежность.

3 ПРОЕКТИРОВАНИЕ ПРОГРАММНОЙ ЧАСТИ модульной системы, предназначенной для организации промышленной шины

3.1 Разработка концептуальной модели устройства

Разработка концептуальной модели устройства включает в себя следующие этапы:

– построение структурной схемы организации модульной системы;

– построение структурной схемы универсального модуля;

– определение основных параметров универсального модуля.

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

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

Основными параметрами универсального модуля, кроме требований указанных во втором разделе, являются:

– количество входов/выходов;

– напряжение питания.

3.1.1 Построение структурной схемы организации модульной системы

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

Вариант 1

Структурная схема организации модульной системы с полным контролем и управлением с панели управления человеком, представлена на рисунке 3.1. При этом логику управления и контроля организовывает сам человек. Это удобно если предприятие постепенно переходит на автоматическую систему управления.

 

Рисунок 3.1 – Структурная схема организации модульной системы с полным контролем и управлением с панели управления человеком

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

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

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

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

Помещение для службы контроля, представляет собой помещение специально оборудованное для длительного (в течении смены)  нахождения персонала. Данный персонал в случае необходимости следит за работоспособностью оборудования, а также выполняет «ручные операции» с оборудованием.

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

При автоматизации производства, именно в щитовую помещают универсальные модули. Старые контрольные провода отбрасывают, предварительно изолировав, а новые подключают к дополнительным модулям ввода/вывода.  

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

Вариант 2

Структурная схема организации модульной системы с полным контролем и управлением системой компьютером, с частичным участием человека, представлена на рисунке 3.2. При этом логику управления и контроля организовывает компьютер по прописанной логике работы, учитывая вносимые человеком коррективы. Это просто достигается, если мы уже имеем систему модулей, представленную в предыдущем пункте, добавлением компьютера со SCADA системой и прописанной логикой работы.

В данном случае панель управления демонтируется, а вместо нее устанавливается персональный компьютер со SCADA системой и преобразователем интерфейса RS-485 в COM, либо RS-485 в USB.

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

Рисунок 3.2 – Структурная схема организации модульной системы с полным контролем и управлением системой компьютером, с частичным участием человека

3.1.2 Построение структурной схемы универсального модуля

Т.к. разрабатываемый универсальный модуль должен быть универсальным, т.е. перед монтажом конфигурироваться как модуль ввода, либо как модуль вывода, то он должен иметь универсальные функциональные блоки. В данном случае он будет иметь 2 функциональных блока:

  •   приемо-передатчик (преобразователь интерфейсов);
  •   основной элемент – микроконтроллер, который и будет совершать все логические операции.

Микроконтроллер будет заниматься следующими операциями:

  •   организовывать связь между другими устройствами в промышленной сети;
  •   производить операции ввода/вывода на дополнительный модуль;
  •   в случае использования в качестве мастера сети, производить опрос состояния всех универсальных модулей данной сети и установку соответствующих состояний на выходах универсальных модулей данной сети сконфигурированных как модули вывода.

Структурная схема универсального модуля, сконфигурированного как модуль ввода, представлена на рисунке 3.3.

Рисунок 3.3 – Структурная схема универсального модуля, сконфигурированного как модуль ввода

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

Схема оптоэлектронной развязки гальванически развязывает входные цепи и универсальный модуль.

Преобразователь питания является универсальным и преобразует переменное напряжение 220 В, либо постоянное напряжение 24 В в постоянное напряжение 5 В.

Структурная схема универсального модуля, сконфигурированного как модуль вывода, представлена на рисунке 3.4.

Рисунок 3.4 – Структурная схема универсального модуля, сконфигурированного как модуль вывода

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

Ключевые элементы могут быть разные: транзисторные ключи, электромагнитные реле, твердотельные реле, семисторы, опто-транзисторы, опто-семисторы и т.д. С каким типом ключевого элемента выбрать дополнительный модуль вывода, зависит от типа подключаемой нагрузки.

Преобразователь питания является универсальным и преобразует переменное напряжение 220 В, либо постоянное напряжение 24 В в постоянные напряжения 5 В и 24 В.

3.1.3 Определение основных параметров универсального модуля

После рассмотрения модулей ввода/вывода других производителей был сделан вывод, что оптимальное количество входов/выходов равняется 8. Это число выводов оптимально использовать и при передаче данных по сети, т.к. в одном байте 8 бит, соответственно состояния входов/выходов можно передать 1 байтом. Чем меньше по объему посылка, тем больше за единицу времени будет обслужено модулей сети.

В случае же необходимости большего количества выводов можно установить несколько универсальных модулей ввода/вывода.

Таким образом, одна промышленная сеть из универсальных модулей может заменить около 1000 проводов контрольных кабелей.

Т.к. напряжения питания большинства микроконтроллеров и микросхем приема-передачи равно 5 В, то оно и было выбрано как основное напряжение для модуля.

3.2 Выбор стандарта физического уровня и протокола передачи данных

3.2.1 Выбор стандарта физического уровня общей сети

Основные требования, предъявляемые к стандарту физического уровня общей сети:

  •   использование одной витой пары;
  •   максимальная протяженность (без применения дополнительных устройств - повторителей сигнала) не менее 100м;
  •   максимальное количество модулей подключаемых к сети не менее 200;
  •   надежная работа в промышленных цехах;
  •   скорость работы достаточная для обеспечения обновления состояния выходов двухсот выходных модулей не реже 1 раза в секунду;
  •   широко используемый в промышленной автоматизации.

С учетом предъявляемых требований был выбран стандарт RS-485.

RS-485 (англ. Recommended Standard 485), EIA-485 (англ. Electronic Industries Alliance-485) – стандарт физического уровня для асинхронного интерфейса. Регламентирует электрические параметры полудуплексной многоточечной дифференциальной линии связи типа «общая шина».

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

В стандарте RS-485 для передачи и приема данных используется одна витая пара проводов, иногда сопровождаемая экранирующей оплеткой или общим проводом. Передача данных осуществляется с помощью дифференциальных сигналов. Разница напряжений между проводниками одной полярности означает логическую единицу, разница другой полярности – ноль.

Стандарт RS-485 оговаривает только электрические и временные характеристики интерфейса.

Стандарт RS-485 не оговаривает:

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

Электрические и временные характеристики интерфейса RS-485:

  •   до 32 приемопередатчиков в одном сегменте сети (современные микросхемы приема-передатчиков обеспечивают возможность подключения до 250 приёмопередатчиков в одном сегменте сети);
  •   максимальная длина одного сегмента сети: 1200 метров;
  •   только один передатчик активный;
  •   максимальное количество узлов в сети – 250 с учетом магистральных усилителей.

Характеристика скорость обмена/длина линии связи (зависимость экспоненциальная):

  •   62,5 кбит/с 1200 м (одна витая пара);
  •   375 кбит/с 300 м (одна витая пара);
  •   500 кбит/с;
  •   1000 кбит/с;
  •   2400 кбит/с 100 м (две витых пары);
  •   10000 кбит/с 10 м.

На скоростях обмена свыше 500 кбит/с рекомендуется использовать экранированные витые пары.

Тип приемопередатчиков – дифференциальный, потенциальный. Изменение входных и выходных напряжений на линиях A и B: Ua (Ub) от −7В до +12В (+7В).

Сетевые протоколы, работающие поверх RS-485:

– LanDrive;

– ProfiBus DP;

– ModBus;

– DMX512;

HDLC;

– DCON.

3.2.2 Выбор протокола передачи данных

Основные требования, предъявляемые к протоколу передачи данных:

  •   открытый коммуникационный протокол;
  •   использование клиент-серверной модели;
  •   широкое применение в промышленности для организации связи между электронными устройствами;
  •   использование для передачи данных последовательной линии связи RS-485;
  •   обеспечение высокой надежности;
  •   максимальное количество модулей подключаемых к сети не менее 200;
  •   скорости работы достаточные для обеспечения обновления состояния выходов двухсот выходных модулей не реже 1 раза в секунду;

С учетом предъявляемых требований был выбран протокол MODBUS.

MODBUS — открытый коммуникационный протокол, основанный на архитектуре «клиент-сервер». Широко применяется в промышленности для организации связи между электронными устройствами. Может использовать для передачи данных через последовательные линии связи RS-485, RS-422, RS-232, а также сети TCP/IP (MODBUS TCP).

Modbus был разработан компанией Modicon (в настоящее время принадлежит Schneider Electric) для использования в ее контроллерах с программируемой логикой. Впервые спецификация протокола была опубликована в 1979 году. Это был открытый стандарт, описывающий формат сообщений и способы их передачи в сети, состоящей из различных электронных устройств.

Первоначально контроллеры MODICON использовали последовательный интерфейс RS-232. Позднее стал применяться интерфейс RS-485, так как он обеспечивает более высокую надежность, позволяет использовать более длинные линии связи и подключать к одной линии несколько устройств.

В настоящее время развитием Modbus занимается некоммерческая организация Modbus-IDA.

Специфическая терминология:

PDU (Protocol Data Unit) – общая для всех физических уровней часть пакета MODBUS. Включает в себя код функции и данные пакета.

ADU (Application Data Unit) – полный пакет MODBUS. Включает в себя специфичную для физического уровня часть пакета и PDU.

MODBUS специфицирует 4 типа данных:

Discrete Inputs – однобитовый тип, доступен только на чтение.

Coils – однобитовый тип, доступен на чтение и на запись.

Input Registers – 16-битовый знаковый или беззнаковый тип, доступен только на чтение.

Holding Registers – 16-битовый знаковый или беззнаковый тип, доступен на чтение и на запись.

Основные достоинства стандарта – открытость и массовость. Огромное количество датчиков и исполнительных устройств выпущено промышленностью. Практически все промышленные системы контроля и управления имеют программные драйвера для работы с MODBUS сетями.

Стандарт в своей основе был написан очень давно и многие актуальные для современных промышленных сетей вопросы не были учтены:

  •   стандарт специфицирует метод передачи только двух типов данных. Отсутствие четкого указания в стандарте привело к тому, что с другими типами данных сторонние производители MODBUS-решений поступали по своему усмотрению;
  •   стандарт не позволяет никакой оперативной сигнализации от конечного устройства к мастеру в случае необходимости (прерывания). Нужно ждать своей очереди в опросе. Это существенно ограничивает применимость MODBUS-решений в системах управления реального времени;
  •   стандарт не позволяет конечным устройствам обмениваться фиксированными данными друг с другом без участия мастера. Это существенно ограничивает применимость MODBUS-решений в системах регулирования реального времени;
  •   стандарт не предлагает никаких решений по начальной инициализации системы. Назначение сетевых адресов и прописывание в системе параметров каждого конкретного устройства выполняются вручную.

Контроллеры на шине Modbus взаимодействуют, используя клиент-серверную модель, основанную на транзакциях, состоящих из запроса и ответа.

Обычно в сети есть только один клиент, так называемое, «главное» (англ. master) устройство, и несколько серверов – «подчиненных» (slaves) устройств. Главное устройство инициирует транзакции (передает запросы). Главный может адресоваться индивидуально к подчиненному или инициировать передачу широковещательного сообщения для всех подчиненных устройств. Подчиненное устройство отвечает на запрос, адресованный именно ему. При получении широковещательного запроса ответ не формируется.

Спецификация Modbus описывает структуру запросов и ответов. Их основа – элементарный пакет протокола, так называемый PDU (Protocol Data Unit). Структура PDU приведенная в таблице 3.1 не зависит от типа линии связи и включает в себя код функции и поле данных. Код функции кодируется однобайтовым полем и может принимать значения в диапазоне 1…127. Диапазон значений 128…255 зарезервирован для кодов ошибок. Поле данных может быть переменной длины. Размер пакета PDU ограничен 253 байтами.

Таблица 3.1 – Структура элементарного пакета протокола PDU

Modbus PDU

номер функции

данные

1 байт

N < 253 (байт)

Для передачи пакета по физическим линиям связи PDU помещается в другой пакет, содержащий дополнительные поля. Этот пакет носит название ADU (Application Data Unit). Формат ADU зависит от типа линии связи.

Существуют три основных реализации протокола Modbus, две для передачи данных по последовательным линиям связи, как медным EIA/TIA-232-E (RS-232), EIA-422, EIA/TIA-485-A (RS-485), так и оптическим и радио:

Modbus ASCII – для обмена используются только ASCII символы;

Modbus RTU;

Modbus TCP – для передачи данных по сетям Ethernet поверх TCP/IP.

Общая структура ADU представлена в таблице 3.2 (в зависимости от реализации, некоторые из полей могут отсутствовать).

Таблица 3.2 Общая структура ADU 

адрес ведомого устройства

номер функции

данные

блок обнаружения ошибок

  •   адрес ведомого устройства – адрес подчиненного устройства, к которому адресован запрос. Ведомые устройства отвечают только на запросы, поступившие в их адрес. Ответ также начинается с адреса отвечающего ведомого устройства, который может изменяться от 1 до 247. Адрес 0 используется для широковещательной передачи, его распознает каждое устройство, адреса в диапазоне 248…255 – зарезервированы;
  •   номер функции – это следующее однобайтное поле кадра. Оно говорит ведомому устройству, какие данные или выполнение какого действия требует от него ведущее устройство;
  •   данные – поле содержит информацию, необходимую ведомому устройству для выполнения заданной мастером функции или содержит данные, передаваемые ведомым устройством в ответ на запрос ведущего. Длина и формат поля зависит от номера функции;
  •   блок обнаружения ошибок – контрольная сумма для проверки отсутствия ошибок в кадре.

Максимальный размер ADU для последовательных сетей RS232/RS485 – 256 байт, для сетей TCP – 260 байт.

В действующей в настоящее время спецификации протокола определяются три категории кодов функций:

  •   стандартные команды. Их описание должно быть опубликовано и утверждено Modbus-IDA. Эта категория включает в себя как уже определенные, так и свободные в настоящее время коды;
  •   пользовательские команды. Два диапазона кодов (от 65 до 72 и от 100 до 110), для которых пользователь может реализовать произвольную функцию. При этом не гарантируется, что какое-то другое устройство не будет использовать тот же самый код для выполнения другой функции;
  •   зарезервированные. В эту категорию входят коды функций, не являющиеся стандартными, но уже используемые в устройствах, производимых различными компаниями. Это коды 9, 10, 13, 14, 41, 42, 90, 91, 125, 126 и 127.

Одно из типичных применений протокола – чтение и запись данных в регистры контроллеров. Спецификация протокола определяет четыре таблицы данных, информация о которых приведена в таблице 3.3.

Таблица 3.3 – Информация о четырех таблицах данных

Таблица

Тип элемента

Тип доступа

Дискретные входы (Discrete Inputs)

один бит

только чтение

Регистры флагов (Coils)

один бит

чтение и запись

Регистры ввода (Input Registers)

16-битное слово

только чтение

Регистры хранения (Holding Registers)

16-битное слово

чтение и запись

Доступ к элементам в каждой таблице осуществляется с помощью 16-битного адреса, первой ячейке соответствует адрес 0. Таким образом, каждая таблица может содержать до 65536 элементов. Спецификация не определяет, что физически должны представлять собой элементы таблиц и по каким внутренним адресам устройства они должны быть доступны. Например, допустимо организовать перекрывающиеся таблицы, В этом случае, команды, работающие с дискретными данными и с 16-битными регистрами, будут фактически обращаться к одним и тем же данным.

Стандартные функции протокола Modbus приведены в таблице 3.4.

Таблица 3.4 Стандартные функции протокола Modbus

PDU запроса и ответа для стандартных функций

номер функции

запрос/ответ

1 (0x01)

A1

A0

Q1

Q0

N

D (N байт)

2 (0x02)

A1

A0

Q1

Q0

N

D (N байт)

3 (0x03)

A1

A0

Q1

Q0

N

D (N байт)

4 (0x04)

A1

A0

Q1

Q0

N

D (N байт)

5 (0x05)

A1

A0

D1

D0

A1

A0

D1

D0

6 (0x06)

A1

A0

D1

D0

A1

A0

D1

D0

15 (0x0F)

A1

A0

Q1

Q0

N

D (N байт)

A1

A0

Q1

Q0

16 (0x10)

A1

A0

Q1

Q0

N

D (N байт)

A1

A0

Q1

Q0

A1 и A0 – адрес элемента;

Q1 и Q0 – количество элементов;

N – количество байт данных;

D – данные.

В таблицах 3.5 и 3.6 приведен пример команды ведущего устройства и ответа ведомого (для Modbus RTU).

Таблица 3.5 – Пример команды ведущего устройства

Направл. передачи

00 адрес подчин. устр-ва

01 номер функции

02 Адрес ст. байт

03 Адрес мл. байт

04 Кол. флагов ст. байт

05 Кол. флагов мл. байт

06 Кол. байт данных

07 Данные ст. байт

08 Данные мл. байт

09 CRC мл. байт

0A CRC ст. байт

MasterSlave

0x01

0x0F

0x00

0x13

0x00

0x0A

0x02

0xCD

0x01

0xCB

0x72

Таблица 3.6 Пример ответа ведомого

Направление передачи

00 адрес подчиненного устройства

01 номер функции

02 Адрес ст. байт

03 Адрес мл. байт

04 Кол. флагов ст. байт

05 Кол. флагов мл. байт

06  CRC мл. байт

07 CRC ст. байт

Master→Slave

0x01

0x0F

0x00

0x13

0x00

0x0A

0x09

0x24

Во время обмена данными могут возникать ошибки двух типов:

– ошибки, связанные с искажениями при передаче данных;

– логические ошибки.

Ошибки первого типа обнаруживаются при помощи фреймов символов, контроля четности и циклической контрольной суммы CRC-16-IBM (используется число-полином = 0xA001). При этом младший байт передается первым, в отличие от байтов адреса и значения регистра в PDU.

В RTU режиме сообщение должно начинаться и заканчиваться интервалом тишины – временем передачи не менее 3,5 символов при данной скорости в сети. Затем первым полем передается адрес устройства.

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

Фрейм сообщения передается непрерывно. Если интервал тишины продолжительностью 1,5 возник во время передачи фрейма, принимающее устройство должно игнорировать этот фрейм как неполный.

Таким образом, новое сообщение должно начинаться не раньше 3,5 интервала, так как в этом случае устанавливается ошибка.

Немного об интервалах (речь идет о Serial Modbus RTU): при скорости 9600 и 11 битах в кадре (стартовый бит + 8 бит данных + бит контроля четности + стоп-бит): 3.5 ∙ 11 / 9600 = 0,00401041(6), то есть более 4 мс; 1.5 ∙ 11 / 9600 = 0,00171875, то есть более 1 мс. Для скоростей более 19200 бод допускается использовать интервалы 1,75 и 0,75 мс соответственно.

Для сообщений об ошибках второго типа протокол Modbus RTU предусматривает, что устройства могут отсылать ответы, свидетельствующие об ошибочной ситуации. Признаком того, что ответ содержит сообщение об ошибке, является установленный старший бит кода команды. Пример кадра, при выявлении ошибки ведомым устройством, в ответ на запрос, приведен в таблице 3.7.

Таблица 3.7 – Кадр ответа (SlaveMaster) при возникновении ошибки modbus RTU

Направление передачи

адрес подчиненного устройства

номер функции

Данные

(или код ошибки)

CRC

Запрос (MasterSlave)

0x01

0x77

0xDD

0xC7 0xA9

Ответ (Slave→Master)

0x01

0xF7

0xEE

0xE6 0x7C

Если Slave принимает корректный запрос и может его нормально обработать, то возвращает нормальный ответ.

Если Slave не принимает какого-либо значения, никакого ответа не отправляется. Master диагностирует ошибку по тайм-ауту.

Если Slave принимает запрос, но обнаруживает ошибку (parity, LRC, or CRC), никакого ответа не отправляется. Master диагностирует ошибку по тайм-ауту.

Если Slave принимает запрос, но не может его обработать (обращение к несуществующему регистру и т. д.), отправляется ответ содержащий в себе данные об ошибке.

Стандартные коды ошибок:

  •   01 – принятый код функции не может быть обработан на подчиненном;
  •   02 – адрес данных, указанный в запросе, не доступен данному подчиненному;
  •   03 – величина, содержащаяся в поле данных запроса, является недопустимой величиной для подчиненного;
  •   04 – невосстанавливаемая ошибка имела место, пока подчиненный пытался выполнить затребованное действие;
  •   05 – подчиненный принял запрос и обрабатывает его, но это требует много времени. Этот ответ предохраняет главного от генерации ошибки тайм-аута;
  •   06 – подчиненный занят обработкой команды. Главный должен повторить сообщение позже, когда подчиненный освободится;
  •   07 – подчиненный не может выполнить программную функцию, принятую в запросе. Этот код возвращается для неудачного программного запроса, использующего функции с номерами 13 или 14. Главный должен запросить диагностическую информацию или информацию об ошибках с подчиненного;
  •   08 – подчиненный пытается читать расширенную память, но обнаружил ошибку паритета. Главный может повторить запрос, но обычно в таких случаях требуется ремонт.

3.3 Выбор основных элементов схемы

3.3.1 Выбор подходящего микроконтроллера

Микроконтроллер должен удовлетворять следующим требованиям:

  •   максимальный ток потребления 500 мА;
  •   напряжение питания 5 В;
  •   количество входов/выходов должно быть не менее 11;
  •   должен быть встроен аппаратный USART;
  •   частота работы должна обеспечивать обновление состояния выходов не реже 1 раза в секунду;
  •   должен иметь достаточно памяти для хранения основной микропрограммы и оперативной памяти для хранения оперативных данных;
  •   должен иметь достаточно энергонезависимой памяти для хранения основных настроек;
  •   должен иметь хорошее отношение цена/основные параметры;
  •   небольшие габариты.

Согласно данным требованиям был выбран микроконтроллер PIC16F628 производства фирмы MICROCHIP.

Он является высокопроизводительным RISC-процессором, со следующими характеристиками:

1) всего 35 простых для изучения односложных инструкции;

2) скорость работы – тактовая частота до 20 МГц;

3) минимальная длительность такта 200 нс;

4) 16 аппаратных регистров специального назначения;

5) 8 – уровневый аппаратный стек;

6) прямой, косвенный и относительный режимы адресации для данных и инструкций;

7) механизм прерываний.

Организация памяти микроконтроллера PIC16F628 представлена в таблице 3.8.

Таблица 3.8 Организация памяти микроконтроллера PIC16F628

Устройство

Организация памяти

FLASH программа

ОЗУ

ЭСППЗУ

PIC16F628

2048 x 14

224 x 8

128 x 8

Периферия:

  1.  timer0 – 8-разрядный таймер/счетчик реального времени с 8-разрядным предварительным делителем;
  2.  timer1 – 16-разрядный таймер/счетчик реального времени с внешним входом;
  3.  timer2 – 8-разрядный таймер/счетчик реального времени с 8-разрядным регистром периода, предварительным делителем и выходным делителем;
  4.  аналоговый модуль компаратора:

– два аналоговых компаратора;

– программируемый модуль встроенного источника опорного напряжения (VREF);

– программируемый мультиплексорный вход от входов устройства и внутреннего источника опорного напряжения;

– выходы компаратора могут быть сигнальными выходами;

  1.  15 линий ввода/вывода с индивидуальным заданием направления;
  2.  высокий втекающий/вытекающий ток для непосредственного управления светодиодными индикаторами.
  3.  универсальный синхронно-асинхронный приемопередатчик (USART/SCI);
  4.  16 байт общей памяти;
  5.  модуль захвата/компаратора/ШИМ:

– захват 16 разрядов, макс. разрешающая способность 12,5 нс;

– сравнение 16 разрядов, макс. разрешающая способность 200 нс;

– ШИМ, макс. разрешающая способность 10 разрядов.

Цоколевка микроконтроллера PIC16F628 представлена на рисунке 3.5.

Рисунок 3.5 Цоколевка микроконтроллера PIC16F628

3.3.2 Выбор микросхемы приемопередатчика RS-485

Микросхемы приемопередатчика RS-485 должна удовлетворять следующим требованиям:

– скорость не менее 115 Кбит/с;

– число устройств на шине не менее 200 шт.;

– напряжение питания 5В;

– ток потребления не более 1мА.

Согласно данным требованиям была выбрана микросхема MAX1483 приемопередатчик RS-485 производства фирмы MAXIM.

Основные параметры ее параметры приведены в таблице 3.9.

Таблица 3.9 – Основные параметры микросхемы приемопередатчика MAX1483

Скорость (макс.),МБод

0.25

Интерфейс

RS-485

Tx,шт

1

Rx,шт

1

Rx/Tx Enable

Да

Устройств на шине

256

VCC

от 4.75 до 5.25

ICC,мА

0.085

TA,°C

от -40 до 85

Корпус

DIP-8 SOIC-8 µMAX-8

Отличительные особенности:

  •   рабочий ток потребления 20 мкА;
  •   ограничение скорости нарастания напряжения выходного сигнала для снижения уровня электромагнитных помех и отражений сигнала;
  •   ток потребления в режиме Shutdown 0.1 мкА;
  •   работает от единого напряжения питания 5 Вольт;
  •   диапазон напряжения входного синфазного сигнала -7...+12 Вольт;
  •   позволяет подключать до 256 приемопередатчиков на одну шину;
  •  ограничение по току и функция отключения по температуре для защиты передатчика от перегрузки.

3.4 Физическое проектирование модульной системы, предназначенной для организации промышленной шины

3.4.1 Выбор среды разработки, языка программирования и инструментальных средств разработки

В качестве основного микроконтроллера для разрабатываемого универсального модуля был выбран микроконтроллер семейства PIC.

Для работы с PIC микроконтроллерами используются такие среды разработки, как IDE MPLAB, CCS PCWHD v4.084, HI-TECH C PRO, mikroC compiler for PIC.

Инструментальные средства MPLAB позволяют:

  •   ассемблировать, компилировать исходный текст;
  •   отлаживать логику работы, наблюдая с помощью симулятора или, в реальном времени, с эмулятором MPLAB-ICE;
  •   просматривать переменные в окнах просмотра;
  •   программировать кристаллы с помощью программаторов PICSTART Plus или PRO MATE II;
  •   и многое другое.

CCS PCWHD v4.084 (CCS C Compiler) – профессиональный компилятор языка С высокого уровня. Современная интегрированная (визуальная) среда разработки программного обеспечения Windows IDE ,включает в себя текстовый редактор, компилятор и интерпретатор, средства автоматизации сборки и отладчик. Возможность работы, как автономно, так и в интеграции с MPLAB IDE (интегрированная среда разработки фирмы MICROCHIP) делают его незаменимым при разработке программ для PIC микроконтроллеров. Поддерживает микроконтроллеры фирмы MICROCHIP PIC10/12/16/18/24 и dsPIC30/33 серий.

Компилятор mikroC PRO для PIC включает в себя всю силу и гибкость обеспечиваемую стандартом ANSI C и представляет наиболее мощный инструмент разработчика. Огромное количество практических примеров и подробная документация позволяют сразу приступить к работе с этим компилятором.

HI-TECH C PRO для PIC10, PIC12 и PIC16 – это первый OCG (Omniscient Code Generation) Си компилятор HI-TECH для 32-битных микроконтроллеров.

OCG позволяет компилятору определять какие конкретно регистры надо сохранить до того как входить в прерывание (interrupt service routineISR). Таким образом, вместо того, чтобы сохранять фиксированное количество регистров каждый раз, будут сохраняться только те, которые надо, тем самым исключаются лишние циклы, уплотняется код и увеличивается быстродействие, снижается потребляемый ток, и т.д.

Особенности HI-TECH Си компилятора для PIC32:

  •   интеграция в среду разработки HI-TIDE 3;
  •   интеграция в среду разработки MPLAB IDE;
  •   поддержка отладочных средств MPLAB ICD-2, MPLAB REAL ICE;
  •   включает исходный код библиотек и примеры проектов;
  •   включает макроассемблер, линкер, препроцессор;
  •   поддерживает различные ОС: Windows (в том числе Vista 64-bit), Linux и Mac OS X;
  •   поддерживается с командной строки, что позволяет интеграцию в среду разработки стороннего разработчика ПО.

Программы, написанные на микроассемблере, очень громоздки и сложны. На их написание необходимо затратить довольно много времени.

На языке более высокого уровня, таком как – микро C, программы более короткие и простые. Написать необходимую программу гораздо легче и быстрее. И код, в дальнейшем, проще в понимании. Поэтому для написания программы (прошивки) был выбран язык высокого уровня – микро C.

Все представленные среды разработки являются платными для использования, только компилятор mikroC PRO для PIC может использоваться бесплатно, но с ограничением в размере кода программы равном 2 кб.

Т.к. разрабатываемая программа (прошивка) будет иметь размер меньше 2 кб, то для её создания была выбрана среда разработки mikroC PRO для PIC, скриншот которой представлен на рисунке 3.6.

Рисунок 3.6 – Скриншот среды разработки  mikroC PRO для PIC

3.4.2 Физическое проектирование программной части

Алгоритм программы представлен в приложении А. Описание работы программы представлено в подразделе 4.1. Листинг программы, разработанный согласно алгоритму, представлен в приложении Б.

Компиляция программы производится в выбранной среде разработки mikroC PRO для PIC.

Запись программы в микроконтроллер производится в этой же программной среде с помощью встроенного программатора mE Programmer. Микросхема микроконтроллера вставляется в панель программатора PicKit 2. Программатор подключается к USB порту ПК.

Открываем mE Programmer, нажимаем кнопку LOAD, выбираем файл прошивку с расширением .hex и нажимаем кнопку WRITE. Дожидаемся завершения операции.

4 РЕАЛИЗАЦИЯ И ТЕСТИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

4.1 Назначение и описание компонентов программного обеспечения, и их исходные тексты

Программа состоит из основного тела программы и нескольких подпрограмм:

  •   подпрограмма «Настройки»;
  •   подпрограмма «Сканирование сети»;
  •   подпрограмма «Опрос модулей сети»;
  •   подпрограмма «Чтение с USART»;
  •   подпрограмма «Запись в USART»;
  •   подпрограмма «Обработка принятых MODBUS данных»;
  •   подпрограмма «Передача сообщения MODBUS slave»;
  •   подпрограмма «Передача сообщения MODBUS master»;
  •   подпрограмма «Подсчет CRC кода».

Алгоритм работы основного тела программы представлен в приложении А на рисунке А.1. Основное тело программы представлено на рисунке 4.1 и на рисунке 4.2.

Основное тело программы выполняется в замкнутом цикле.

 main_program:  // Начало главной программы

 if (tip_modul=0)

     {                                                                                // модуль ввода

       // Конфигурирование порта А

       TRISA = 0b00000011;      // 0 выход,1 вход set direction to be output 0-4 i/o(0-5,1-4,2-1,3-2,4-3)(5--;6,7-16MGz)

       // Конфигурирование порта В

       TRISB = 0b11110110;      // 1-2 USART, 3-вход, режим программирования.;4-выбор типа модуля;5-7 i/o

     }

 else

     {                                                                         // модуль вывода

       // Конфигурирование порта А

       TRISA = 0b00000011;      // 0 выход,1 вход set direction to be output 0-4 i/o(0-5,1-4,2-1,3-2,4-3)(5--;6,7-16MGz)

       // Конфигурирование порта В

       TRISB = 0b11110110;      // 1-2 USART, 3-вход, режим программирования.;4-выбор типа модуля;5-7 i/o

     }

 if (portB.b3=1)

    {            

Рисунок 4.1 – Основное тело программы

     setting(void);

     goto main_program;

    };

 if (usart_flag=0)

    {      //разрешаем прерывание по приему с USART

     pie1.b5=1;

     spbrg=3;

     usart_flag=1;

    };

 if (tip_modul=1)  { output(modbus_buffer[3]);  goto main_program; };

Рисунок 4.2 – Основное тело программы (продолжение)

В течении работы, основная программа может быть прервана появлением прерывания по чтению с USART, при этом выполнится подпрограмма «Чтение с USART».

Она также будет прерываться по таймеру через 1 мс. При этом прерывании будет проверяться получена ли посылка MODBUS.

4.1.1 Подпрограмма «Настройки»

Подпрограмма «Настройки» предназначена для конфигурирования универсального модуля. Она обрабатывает нажатия кнопок настройки параметров.

Алгоритм работы подпрограммы «Настройки» представлен в приложении А на рисунке А.2. Подпрограмма «Настройки» представлена на рисунке 4.3.

  

void setting(void)

 {        //запрещаем прерывание по приему с USART

     pie1.b5=0;  spbrg=3;  usart_flag=0;

     if (portA.b4=1) adres=input(void);              // адрес модуля

     if (portA.b5=1) adres_nazn=input(void);     // адрес модуля получателя данных

     tip_modul=0;                                                // модуль ввода

     if (adres_nazn=0) tip_modul=1;                   // модуль вывода

     // запись в EEPROM данных

     EEprom_Write(1,adres);   EEprom_Write(2,adres_nazn);

 } 

Рисунок 4.3 – Подпрограмма «Настройки»

4.1.2 Подпрограмма «Сканирование сети»

Подпрограмма «Сканирование сети» предназначена для того, чтобы в случае отсутствия обращений в сети («молчания») в течении 2 секунд модуль назначил себя мастером сети.

Алгоритм работы подпрограммы «Сканирование сети» представлен в приложении А на рисунке А.2.

Запускается таймер длительностью около 2 секунд. Если в течении этого времени  в сети наблюдается «молчание», то модуль назначает себя мастером сети.

После окончания работы таймера происходит выход из подпрограммы.

4.1.3 Подпрограмма «Опрос модулей сети»

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

Алгоритм работы подпрограммы «Опроса модулей сети» представлен в приложении А на рисунке А.3. Подпрограмма «Опрос модулей сети» представлена на рисунке 4.4.

Void opros(void)

   {      //Опрашиваем состояние входов входного устр-ва

     if (adres_m_in>=250) adres_m_in=1;  adres_m_in++;

     //Посылаем "запрос-in MODBUS" по адресу adres_m_in

     send_ok=modbus_send_master(adres_m_in,3,0,2,0,pered_data,1,3);

     if (send_ok=1)  {

          modul_ist=1;

          modul_adr_nazn=RX_byte[2];

          modul_in_sost=RX_byte[3];

          pered_data[0]= modul_in_sost;

          pered_data[1]= modul_in_sost;

          if (modul_adr_nazn=0) {modul_tip=1} else {modul_tip=1}   // модуль вывода/ввода

        }     else { goto main_program;  //Ошибка связи};

     //Устанавливаем состояния выходов выходного устр-ва

     send_ok=modbus_send_master(modul_adr_nazn,16,0,2,0,pered_data,1,3);

     if (send_ok=0)  { goto main_program;  //Ошибка связи};

   }

Рисунок 4.4 – Подпрограмма «Опрос модулей сети»

4.1.4 Подпрограммы «Чтение с USART» и «Запись в USART»

Подпрограмма «Чтение с USART» предназначена для принятия и сохранения данных принятых по USART.

Алгоритм работы подпрограммы «Чтение с USART» представлен в приложении А на рисунке А.4.

Принятые данные записываются в приемный буфер RX_buffer.

Если возникает пауза размером 3,5 символа (300 мкс) при приеме сигнала, то пакет данных считается принятым и передается на дальнейшую обработку.

Подпрограмма «Запись в USART» предназначена для передачи данных, находящихся в  TX_buffer, по USART.

Алгоритм работы подпрограммы «Запись в USART» представлен в приложении А на рисунке А.5.

Байты буфера TX_buffer поочередно записываются в передающий буфер USART txreg. Когда байт данных передан по USART, то  передающий буфер USART txreg очищается, и это является сигналом для записи в него следующего байта данных.

4.1.5 Подпрограмма «Обработка принятых MODBUS данных»

 

Когда пакет данных считается принятым он передаётся на обработку в подпрограмму «Обработка принятых MODBUS данных».

Алгоритм работы подпрограммы «Обработка принятых MODBUS данных» представлен в приложении А на рисунке А.6.

4.1.6 Подпрограммы «Передача сообщения MODBUS slave» и «Передача сообщения MODBUS master»

Универсальный модуль в режиме slave, передаёт ответное сообщение с помощью подпрограммы  «Передача сообщения MODBUS slave», а в сети master с помощью подпрограммы  «Передача сообщения MODBUS master».

Алгоритм работы подпрограммы «Передача сообщения MODBUS slave» представлен в приложении А на рисунке А.7.

Алгоритм работы подпрограммы «Передача сообщения MODBUS master» представлен в приложении А на рисунке А.8 и на рисунке А.9.

4.1.7 Подпрограмма «Подсчет CRC кода»

Подпрограмма «Подсчет CRC кода» предназначена для вычисления стандартного 2 байтного CRC кода. Для расчёта CRC кода производятся следующие шаги:

  1.  16-ти битовый регистр загружается числом FF hex (все 1), и используется далее как регистр CRC;
  2.  первый байт сообщения складывается по ИСКЛЮЧАЮЩЕМУ ИЛИ с содержимым регистра CRC. Результат помещается в регистр CRC;
  3.  регистр CRC сдвигается вправо (в направлении младшего бита) на 1 бит, старший бит заполняется 0;
  4.  если младший бит 0, то повторяется шаг 3 (сдвиг).
  5.  Если младший бит 1, то делается операция ИСКЛЮЧАЮЩЕЕ ИЛИ регистра CRC и полиномиального числа A001 hex;
  6.  шаги 3 и 4 повторяются восемь раз;
  7.  повторяются шаги со 2 по 5 для следующего сообщения. Это повторяется до тех пор, пока все байты сообщения не будут обработаны;
  8.  финальное содержание регистра CRC и есть контрольная сумма.

4.2 Тестирование программного обеспечения

При разработке программного продукта одним из основных этапов является тестирование программы. Тестированию обязательно должны быть подвергнуты все выполняемые операции. Функциональное тестирование заключается в тестировании отдельных функций, закрепленных за определенными элементами управления.

Т.к. результат выполнения дипломного проекта представляет собой не компьютерную программу, при выполнении которой можно видеть скриншоты её работы, а программу (прошивку) для микроконтроллера, то для её тестирования необходимо:

  •   изготовить 4 универсальных модуля ввода/вывода;
  •   сконфигурировать модули;
  •   подключить их к общей сети;
  •   произвести функциональное тестирование;
  •   свести результаты тестирования в таблицу.

Тестирование производилось в производственном цеху.

Параметры конфигурации модулей представлены в таблице 4.1.

Таблица 4.1 – Параметры конфигурации модулей

№ модуля

Сетевой адрес

Адрес назначения

Тип модуля

Разрешена работа в качестве мастера сети

1

100

125

модуль ввода

да

2

125

0

модуль вывода

да

3

150

175

модуль ввода

да

4

175

0

модуль вывода

да

Функциональное тестирование сводится к тому, что при изменении состояний входов 0/5 В модуля с сетевым адресом 100, на модуле с сетевым адресом 125 должны соответственно изменяться состояния выходов 0/5 В. Другие же модули, данной сети, не должны реагировать на их работу.  Два других модуля должны работать аналогично.

Таблица 5.1 –Тестовые случаи

Описание тестового случая

Ожидаемые результаты

Тестовый случай пройден?

Да/Нет

Комментарии

1

2

3

4

5

1

Установка на входах модуля с сетевым адресом 100 состояний – 01100100

Установка на выходах модуля с сетевым адресом 125 состояний – 01100100

Да

2

Установка на входах модуля с сетевым адресом 100 состояний – 10000100

Установка на выходах модуля с сетевым адресом 125 состояний – 10000100

Да

3

Установка на входах модуля с сетевым адресом 150 состояний – 00001001

Установка на выходах модуля с сетевым адресом 175 состояний – 00001001

Да

4

Установка на входах модуля с сетевым адресом 150 состояний – 10010100

Установка на выходах модуля с сетевым адресом 175 состояний – 10010100

Да

5

Исключение из сети модуля с адресом 125.

Установка на входах модуля с сетевым адресом 100 состояний – 01100100

Ни какой реакции

Да

 

При тестировании модулей были обнаружены мелкие ошибки, которые были быстро устранены. Также были скорректированы переменные таймеров и задержек.

Работа модулей соответствовала заложенному алгоритму.  

5 РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ

Универсальный модуль ввода/вывода, сконфигурированный как модуль вывода, предназначен для управления по сигналам из сети RS-485 встроенными дискретными выходными элементами, используемыми для подключения исполнительных механизмов с дискретным управлением.

Универсальный модуль ввода/вывода, сконфигурированный как модуль ввода, предназначен для сбора данных со встроенных дискретных входов с передачей их в сеть RS-485. Он может использоваться для контроля подачи напряжения питания на исполнительные механизмы, а также контроля состояния дискретных выходов датчиков.

Основное назначение – замена контрольных кабельных линий.

Перед использованием устройство нужно правильно сконфигурировать.

По умолчанию основные его параметры равны:

– адрес модуля – 200;

– адрес приемника – 0;

– тип модуля выходной – да (0);

– модуль может быть только slave – да (1).

Для его конфигурации нужно подключить к нему модуль конфигурации.

Через 5 секунд после подключения можно приступать к настройке.

Настройка адреса данного модуля:

  1.  выставляем DIP переключателем адрес данного модуля от 1 до 200, представив заранее десятичный код в двоичной системе;
  2.  нажимаем кнопку «Адрес данного модуля» и держим ее 5 секунд.

Настройка адреса модуля приемника:

  1.  выставляем DIP переключателем адрес модуля приемника от 1 до 200, отличный от адреса данного модуля, представив заранее десятичный код в двоичной системе;
  2.  нажимаем кнопку «Адрес модуля приемника» и держим ее 5 секунд.

Настройка параметров данного модуля:

  1.  выставляем DIP переключателем параметры данного модуля:

– 1-ый бит – тип модуля входной (1)/выходной (0);

– 2-ой бит –  модуль может быть только slave (1)/ master (0).

  1.  нажимаем кнопки «Адрес данного модуля» и «Адрес модуля приемника», и держим их 5 секунд.

Все, после этого можно подключать модуль к общей сети.

Желательно чтобы все модули сети были в этот момент обесточены!

6 ОПРЕДЕЛЕНИЕ ЭКОНОМИЧЕСКОЙ ЭФФЕКТИВНОСТИ РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ 

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

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

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

Стоимость разработки программного обеспечения для модуля (себестоимость программы) определяется по формуле:

,                           (6.1)

где  – затраты на заработную плату разработчиков программы, руб.;

– коэффициент накладных расходов проектной организации без учета эксплуатации ЭВМ (при отсутствии данных принять  = 1,16);

– затраты на отладку программы.

Затраты на заработную плату разработчиков программы определяются по формуле:

,                           (6.2)

где  – трудоемкость разработки программы, час;

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

Трудоемкость разработки программы включает время на постановку задачи и время на программирование задачи и определяется по формуле:

,                           (6.3)

где  – количество этапов разработки программы;

– трудоемкость постановки задачи на i-м этапе разработки программы, дней;

– трудоемкость программирования задачи на i-м этапе разработки программы, дней.

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

,                            (6.4)

где  – трудоемкость подготовки описания задачи и исследования алгоритма решения;

– трудоемкость разработки блок-схемы алгоритма;

– трудоемкость программирования по готовой блок-схеме;

– трудоемкость отладки программы на ЭВМ;

– трудоемкость подготовки документации по задаче в рукописи;

– трудоемкость редактирования, печати и оформления документации по задаче.

Составляющие приведенной формулы определяются, в свою очередь, через условное число операторов Q в разрабатываемом ПП по формуле:

,                                     (6.5)

где  – число операторов в программе;

– коэффициент сложности программы;

– коэффициент коррекции программы в ходе ее разработки.

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

Коэффициент коррекции программ  характеризует увеличение объема работ за счет внесения изменений в алгоритм и программу, изменения состава и структуры информации, а также уточнений, вносимых разработчиком программы для улучшения ее качества без изменения постановки задачи.  может быть принято равным 0,15...0,5.

Составляющие трудоемкости разработки программы определятся по формулам:

;                                     (6.6)

;                                          (6.7)

;                                        (6.8)

;                                         (6.9)

;                                        (6.10)

,                                        (6.11)

где  – коэффициент увеличения затрат труда вследствие недостаточного или некачественного описания задачи ( = 1,2... 1,5);

– коэффициент квалификации разработчика алгоритмов и программ (при стаже работы от трех до пяти лет =1,1…1,2).

Получаем:

;

;

;

;

=1,2;

=1,2;

;

;

;

;

;

;

.

Среднечасовая ставка работника определяется исходя из Единой тарифной системы оплаты труда в Республике Беларусь по формуле:

,                                                               (6.12)

где  – отношение среднемесячной заработной плата работника к нормативному количеству рабочих часов в месяце (=2,616);

– тарифный  коэффициент работника соответствующего разряда (=2,48).

тыс. руб.;

тыс. руб.

Нормы времени учитывают ряд  факторов, наибольшим образом влияющих на трудоемкость разработки проекта:

  •  количество разновидностей форм входной  и выходной информации;
  •  степень новизны задачи;
  •  сложность алгоритма;
  •  вид используемой информации;
  •  сложность контроля входной и выходной информации;
  •  язык программирования;
  •  объем входной информации;
  •  использование типовых решений, типовых проектов и программ, стандартных модулей.

Предусмотрено четыре степени новизны разрабатываемых задач:

А – разработка задач, предусматривающая применение принципиально новых методов разработки, проведение научно-исследовательских работ;

Б – разработка типовых проектных решений, оригинальных задач и систем, не имеющих аналогов;

В – разработка проекта с использованием типовых проектных решений при условии их изменения, разработка проектов, имеющих аналогичные решения;

Г – привязка типовых проектных решений.

Сложность алгоритма представлена тремя группами:

  1.  алгоритмы оптимизации и моделирования систем и объектов;
  2.  алгоритмы учета, отчетности, статистики и поиска;
  3.  алгоритмы, реализующие стандартные методы решения, а также не предусматривающие применения сложных численных и логических методов.

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

Затраты на отладку программы определяются по формуле:

,                                 (6.13)

где  – трудоемкость отладки программы, час ();

– стоимость одного машино-часа работы ЭВМ, тыс. руб.

Стоимость машино-часа работы ЭВМ определяется по формуле:

,                         (6.14)

где Сэ – расходы на электроэнергию за час работы ЭВМ, тыс. руб.;

– годовая величина амортизационных отчислений на реновацию ЭВМ, тыс. руб.;

– годовые затраты на ремонт и техническое обслуживание ЭВМ, тыс. руб.;

годовая величина амортизационных отчислений на реновацию производственных площадей, занимаемых ЭВМ, тыс. руб.;

 – годовые затраты на ремонт и содержание производственных площадей, тыс. руб.;

– годовая величина налога на недвижимость, тыс. руб.;

– годовой фонд времени работы ЭВМ, час.

Расходы на электроэнергию за час работы ЭВМ определяются по формуле:

,                                                 (6.15)

где  – установленная мощность электродвигателя ЭВМ, кВт ( = 0,35);

– коэффициент  использования энергоустановок по мощности (=0,9);

– стоимость 1 кВт-часа электроэнергии, тыс.руб.;

среднечасовое потребление электроэнергии ЭВМ, кВт.

=0,350,90,905 = 0,285 тыс. руб.

Годовая величина  амортизационных  отчислений  на  реновацию ЭВМ определяется по формуле:

Аэвм = ЦэвмkуkмНаэвм/100 = ЦбэвмНаэвм/100,                         (6.16)

где Цэвм – цена ЭВМ на момент ее выпуска, тыс.руб. (Цэвм = 2000 тыс.руб.);

kу – коэффициент удорожания ЭВМ, зависит от года выпуска (kу = 1);

kм – коэффициент, учитывающий затраты на монтаж и транспортировку ЭВМ (kм = 1,05);

Наэвм – норма амортизационных отчислений на ЭВМ, % (Наэвм = 12);

Цбэвм – балансовая стоимость ЭВМ, руб.

Цбэвм = 200011,05 = 2100 тыс. руб.;

Аэвм = 200011,0512/100 = 252 тыс. руб.

Годовые затраты на ремонт и техническое обслуживание ЭВМ укрупнено могут быть определены по формуле:

Рэвм = Цбэвмkро,  

      (6.17)

где kро – коэффициент, учитывающий затраты на ремонт и техническое обслуживание ЭВМ, в том числе затраты на запчасти, зарплату ремонтного персонала и др. (kро = 0,1).

Рэвм = 21000,1 = 210 тыс.руб.

Годовая величина амортизационных отчислений на реновацию производственных площадей, занятых ЭВМ, определяется по формуле:

,                           (6.18)

где  – балансовая стоимость площадей, тыс. руб.;

норма амортизационных отчислений на производственные площади, % (=1,2);

– площадь, занимаемая ЭВМ, кв. м. (=2,5);

– коэффициент, учитывающий дополнительную площадь ;

– цена 1 квадратного метра площади, тыс. руб. (=520).

= 2,5 3  520 = 3900 тыс. руб.;

= 3900  1,2 / 100 = 46,8 тыс. руб.

Годовые затраты на ремонт и содержание производственных площадей укрупнено могут быть определены по формуле:

,                                (6.19)

где  – коэффициент, учитывающий затраты на ремонт и эксплуатацию производственных площадей (= 0,05).

= 39000,05 = 195 тыс. руб.

Величина налога на недвижимость определяется по формуле:

,                     (6.20)

где  – ставка налога на недвижимость ( = 0,01).

тыс. руб.

Годовой фонд времени работы ЭВМ определяется исходя из режима ее работы и может быть рассчитан по формуле:

,                      (6.21)

где  – среднесуточная фактическая загрузка ЭВМ, час ( = 6);

– среднее количество дней работы ЭВМ в год (= 253).

час.;

тыс. руб.;

тыс. руб.;

тыс. руб.

Стоимость разработки аппаратной части равна 300 тыс. руб.

Стоимость сборки 1000 модулей 25 000 тыс. руб.

Стоимость составных деталей на 1 модуль 100 тыс. руб.

Общая стоимость готового модуля, при условии изготовления 1000 шт., составит:  

тыс. руб.

Оптовая цена готового модуля определяется по формуле:

.                          (6.22)

тыс. руб.;

тыс. руб.

Отпускная цена модуля определяется по формуле:

,                            (6.23)

где  – оптовая цена модуля, руб.;

– затраты на заработную плату разработчиков модуля, руб.;

– размер плановой прибыли на модуль, руб.;

– ставка налога на добавленную стоимость ( = 0,2).

тыс. руб.

Результаты расчета сведены в таблицу 6.1.

Таблица 6.1 – Технико-экономические показатели проекта

Наименование показателя

Базовый вариант

Проектный вариант

1. Трудоемкость решения задачи, час.

-

21,945

2. Периодичность решения задачи, раз/год

-

1

3. Годовые текущие затраты, связанные с решением задачи, тыс. руб.

-

160,4493

4. Отпускная цена модуля, тыс. руб.

828,360

223,752

5. Степень новизны программы

-

В

6. Группа сложности алгоритма

-

1

Отпускные цены аналогичных модулей производства ОВЕН:

- модуль ввода дискретных сигналов ОВЕН МВ110-8ДФ - 828,360 тыс. руб.;

- модуль дискретного вывода ОВЕН МУ110-8К - 828,360 тыс. руб.

Отпускные цены аналогичных модулей производства WAGO:

- каплер полевой шины WAGO I/O 750-315 - 3 140 тыс. руб.;

- модуль ввода дискретных сигналов WAGO I/O 750-436 - 515 тыс. руб.;

- модуль дискретного вывода WAGO I/O 750-537 - 711 тыс. руб.

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

7 ОХРАНА ТРУДА

7.1 Производственная санитария

Размеры помещения вычислительного центра (ВЦ), соответствуют нормируемым величинам [16] по площади и объему на одного работающего с учетом размещаемого в помещении технологического оборудования.

В соответствии с нормами производственной санитарии объем производственного помещения на одного работающего составляет не менее 20 м3 , с площадью помещения не менее 6 м2.

7.1.1 Микроклимат в помещениях вычислительного центра

Уровень работоспособности и психофизическое состояние человека напрямую зависит от метеорологических условий (микроклимата) производственных помещений.

Метеорологические условия производственной среды (согласно [9]) - это сочетание температуры, относительной влажности, скорости движения и запыленности воздуха. В производственных условиях характерно суммарное действие микроклиматических параметров.

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

Полученные результаты измерений сравнивают с нормируемыми величинами. В помещения ВЦ для обеспечения требуемых показателей микроклимата, используются системы   отопления,  кондиционирования  и  вентиляции,  отвечающие   требованиям   [16].

Оптимальными условиям отвечает ВЦ, в котором установлены следующие показатели: температура – 22-240С, относительная влажность – 40-60% и скорость движения воздуха в рабочей зоне производственных помещений – 0,1 м/с.

Требуемые параметры микроклимата поддерживаются в указанных пределах путем использования в холодное время системы водяного отопления, с нагревом воды до 1000С, а в теплое – за счет кондиционирования и вентиляции воздуха.

7.1.2 Шум и вибрация в помещениях вычислительного центра

Возникновение шума обусловлено механическими колебаниями в твердых жидких и газообразных средах. По происхождению шум делят на механический, обусловленный колебаниями деталей машин и их взаимным перемещением, аэродинамический (гидродинамический), возникающий в упругих конструкциях в газе или жидкости, и шумы электрических машин.

В помещениях вычислительных центров источниками шума являются: периферийная оргтехника, множительная техника, сетевое оборудование, аппаратура и оборудование для кондиционирования воздуха, в самих ПЭВМ – вентиляторы систем охлаждения и трансформаторы, накопители и средства ввода-вывода информации, а также шум, проникающим в помещение извне.

Нормируемыми  параметрами  постоянного  шума на рабочих местах,  согласно     [20], являются:

  •  уровни звукового давления в дБ в октавных полосах;
  •  уровень звука в дБА.

При выполнении основной работы на ПЭВМ уровень шума на рабочем месте не должен превышать 50 дБА.

Для борьбы с шумом принимают следующие меры:

  •  использование шумопоглощающих конструкций и материалов в облицовке потолков и стен помещений ВЦ (фибролитовые плиты, минеральная вата, стекловолокно, гипсокартон, пенопласт и др.);
  •  ослабление шума в источнике, путем применения в их конструкциях акустических экранов, звукоизолирующих кожухов;
  •  рациональное расположение рабочих мест, аппаратуры и оборудования.

7.1.3 Электромагнитные излучения

Для защиты от воздействия электрического поля при работе с мониторами и дисплеями (напряженность поля не более 60 кВ/м), устанавливаются индивидуальные экраны на источник излучения. При этом, уровни напряженности, плотности магнитного потока электромагнитного поля, напряженности электростатического поля устанавливаются в соответствии с допустимыми значения [16].

Для экранов применяют материалы с высокой электрической проводимостью (сталь, медь, алюминий, латунь) в виде листов толщиной не менее 0,5 мм или сетки с ячейками не более 44 мм. Каждый экран заземляется.

Допустимые уровни напряженности электромагнитных полей, излучаемых клавиатурой, системным блоком, манипулятором «мышь» и иными вновь разработанными устройствами в зависимости от основной рабочей частоты изделия не превышают значений, приведенных в таблице 7.1.

Таблица 7.1 Допустимые уровни электромагнитных излучений

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

0,3 -300 Гц

0,3 – 30 МГц

3 -30 МГц

30 -300 МГц

0,3 -300 ГГц

Допустимые уровни

25 В/м

15 В/м

10 В/м

3 В/м

10 мкВт/см2

7.1.4 Освещение в вычислительном центре

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

Для реализации поставленной задачи принимают ряд мер, важнейшими из которых являются:

  •  обеспечение уровня освещенности и контрастности на экране и вокруг него, которые обеспечивают зрительный комфорт и позволяют оператору быстро адаптироваться к типу поставленной задачи;
  •  обеспечение равномерной яркости в различных зонах зрительного пространства, с целью исключения зрительного комфорта;
  •  применение в окраске внутренних поверхностей (стен, потолков) помещений цветов, стимулирующих умственную деятельность, сосредоточение внимания, снятие психофизиологического напряжения.

В зависимости от источника света, согласно [11], производственное освещение может быть естественным, искусственным и совмещенным. Искусственное освещение по месту расположения светильников используется двух систем: общее и комбинированное. Для освещения рабочих мест операторов ВЦ применяется одностороннее боковое естественное освещение. В случаях, когда естественного освещения в помещении недостаточно, используют комбинированное освещение (общее и местное).

При выборе требуемого минимального уровня освещенности рабочего места необходимо установить разряд (характер) выполняемой зрительной работы. Его определяют по наименьшему размеру различения. Зрительная работа, проводимая в помещениях ВЦ, относится к II – V разрядам зрительной работы [11].

Нормирование естественного освещения производится с помощью относительного показателя – коэффициента естественной освещенности (КЕО, е). При боковом одностороннем освещении нормируется минимальное значение КЕО.

КЕО для помещений ВЦ составляет не менее 1,5% при боковом естественном освещении [21].

Нормирование искусственного освещения оценивается непосредственно по освещенности рабочей поверхности (Е, лк) [11]. При выборе нормы освещенности кроме характера (разряда) зрительной работы учитывается контраст объекта различения с фоном и характеристика фона, на котором рассматривается объект (т.е. определяется один из четырех подразрядов зрительной работы).

Расчет искусственного освещения в помещениях можно производить четырьмя методами: точечным, ватт (по таблицам удельной мощности), графическим и методом использования светового потока. Метод коэффициента использования светового потока наиболее применим для расчета общего равномерного освещения помещения в условиях эксплуатации промышленных предприятий. При расчете этим методом учитывается как прямой свет от светильника, так и свет, отраженный от стен и потолка.

Световой поток лампы светильника определяется по формуле:

,                         (7.1)

где Emin – нормативная освещенность, лк;

S – площадь освещаемого помещения, м2;

К – коэффициент запаса, учитывающий снижение освещенности в процессе эксплуатации вследствие загрязнения и старения источников света (ламп и светильников), а также снижения отражающих свойств поверхностей помещения;

Z – коэффициент, характеризующий неравномерность освещения. Он зависит от отношения расстояния между светильниками (L) к высоте их подвеса (hp), с увеличением этого отношения (L/hp) значение Z возрастает. При проведение расчетов рекомендуется принимать значение Z равным 1,1 для люминесцентных ламп и 1,15 для ламп накаливания;

n – количество светильников (или ламп);

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

Расположение светильников – симметричное в один ряд. Симметричное размещение светильников обеспечивает одинаковое освещение оборудования и рабочих поверхностей.

Определяем высоту расположения светильников над освещаемой поверхностью по формуле:

,                         (7.2)

где Н – общая высота помещения (H=2,5 м);

hc – высота от потолка до нижней части светильника (hc =0);

hp – высота от пола до освещаемой поверхности (hp=0,75 м).

.

Определяем отношение расстояния между светильниками L к высоте их подвеса Hc. В соответствии с рекомендация, принимаем данное соотношение равным 1,4. Откуда находим L по формуле:

            (7.3)

.

Найдем потребное число светильников:

            (7.4)

шт.

Определяем показатель помещения по формуле:

                                                          ,             (7.5)

где а – длина помещения (а= 6 м);

в – ширина помещения (в = 5 м).

.

В соответствии со справочными данными, определим значение коэффициентов отражения потолка (белая краска) ρпот=0,7, стен (краска бежевого оттенка) ρст=0,5, рабочей поверхности (потемневшее дерево) ρр=0,3 [11].

По найденному показателю помещения i и значениям коэффициентов отражения потолка, стен и рабочей поверхности, по соответствующим таблицам определим значение коэффициента использования светового потока η [11]. Т.о. η принимаем равным 0,51.

Согласно классификации помещения ВЦ относятся к помещениям общественных и жилых зданий с нормальными условиями среды. В соответствии с этим, значение коэффициента запаса К будет равно 1,4.

Величина коэффициента неравномерности z определяется из отношения:

,                                                            (7.6)

где Еср – средняя освещенность (Еср=300 лк);

Еmin – наименьшая освещенность (Еmin=200 лк, при освещении помещений ВЦ и экрана дисплея [10]).

Т.о. подставив полученные значения в формулу (7.1) получим:

.

По  найденному  значению светового  потока  определяется  мощность  и  тип  лампы [11].

Для искусственного освещения помещений ВЦ рекомендуется использовать люминесцентные лампы, у которых высокая световая отдача (до 75 лм/Вт и более), большой срок службы (до 10000 часов), малая яркость. Одним из недостатков таких ламп является высокая пульсация светового потока, вызывающая утомление зрения.

Исходя из результатов расчета и учитывая, что в светильник устанавливают по две лампы, оптимальными будут варианты люминесцентных ламп со стандартными значениями светового потока – 1890 лм и мощностью – 30 Вт. К ним относятся лампы типа ЛБ-30.

Для ограничения неблагоприятного действия пульсирующих световых потоков  установлены предельные значения коэффициентов пульсации освещенности рабочих мест в пределах 10 – 20 % в зависимости от разряда зрительной работы [11].

7.1.5 Рабочее место программиста

Рациональная планировка рабочего места программиста является необходимым условием для комфортной и безопасной работы. Удобное расположение рабочих органов (мышь, клавиатура, др. органы управления) и технических средств (системные блоки, сервера, периферийные устройства) позволяет эффективно использовать производственные площади, экономить время при работе и обслуживании системной и периферийной техники, снизить психофизическую нагрузку на организм работающего [13].

При работе выполняемой сидя важно правильно выбрать рабочее кресло (стул) в соответствии с эргономическими особенностями рабочей зоны. Оптимальный вариант конструкции кресла (стула) включает регулируемые сиденья, спинку и подлокотники. Сиденье по конструкции повторяет форму бедер (длина сиденья – не более 2/3 длины бедра), имеет закругленные края и незначительный наклон назад.

Стол, с размещенным на нем монитором и клавиатурой, выше сиденья на 30-35 см. Для оптимального положения программиста предусмотрена подставка для ног.

Согласно [7], при расположении монитора, клавиатуры и системного блока на рабочем месте учитываются границы полей зрения программиста (определяются движением глаз и головы т.н. сагиттальная плоскость), а так же границы досягаемости рук оператора в пределах зоны досягаемости моторного поля в горизонтальной и вертикальной областях (до 500 мм).

7.2 Техника безопасности

Помещение для работы программиста, его рабочее место и оборудование могут являться источниками воздействия на работающего вредных (ВПФ) и опасных (ОПФ) производственных факторов [4].

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

В вычислительных центрах размещены ЭВМ, ПЭВМ, дисплеи, периферийное и вспомогательное электрооборудование (кондиционеры, вентиляторы, светильники и т.п.). Снабжение электроэнергией происходит через сеть напряжением 220 В.

Следствием нарушения установленных требований электробезопасности являются электротравмы (в том числе и со смертельным исходом).

Согласно классификации помещений по степени опасности поражения людей электрическим током, помещения ВЦ относятся к помещениям с повышенной опасностью.

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

Согласно [9], электробезопасность в помещениях ВЦ обеспечивается: конструкцией электроустановки, техническими способами и средствами защиты человека, организационными и техническими мероприятиями.

Для предотвращения опасного воздействия электрического тока на человека в электроустановках применяются следующие меры защиты:

  •  защитное заземление;
  •  зануление;
  •  защитное отключение;
  •  выравнивание потенциала;
  •  защита от случайного прикосновения.

Так как все токоведущие части ЭВМ изолированы, то случайное прикосновение к токоведущим частям исключено. Для обеспечения защиты от поражения электрическим током при прикосновении к металлическим нетоковедущим частям, которые могут оказаться под напряжением в результате повреждения изоляции, можно предложить защитное заземление.

7.3 Пожарная безопасность

Пожарная безопасность – состояние объекта, при котором исключается возможность пожара, а в случае его возникновения предотвращается воздействие на людей опасных факторов пожара и обеспечивается защита материальных ценностей[8].

Основные причины пожара в помещениях ВЦ носят электрический и неэлектрический характер.

К причинам возникновения пожаров относятся:

  •  неосторожное и халатное обращение с огнем;
  •  неправильное устройство или неисправность отопления;
  •  неисправность оборудования и нарушение режима производственного процесса;
  •  короткое замыкание;
  •  перегрузка проводов сети.

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

К организационно-техническим мероприятиям относятся:

  •  соблюдение норм и правил содержания помещений ВЦ, обязательный противопожарный инструктаж работников и служащих;
  •  соблюдение противопожарных правил, норм при проектировании помещений, при устройстве электропроводов и оборудования, отопления, вентиляции, освещения.
  •  запрещение курения в не установленных местах, производство пожароопасных работ в помещении машинного зала ВЦ.

Для пожаротушения и локализации очага возгорания в ВЦ применяются следующие первичные средства:

  •   огнетушители (углекислотные, типа ОУ-3; порошковые, типа ОП-10; в количестве -1 штука каждого типа), данные типы огнетушителей могут применяться для тушения твердых материалов органического происхождения, а так же оборудования под напряжением до 1000В.
  •   войлок (кошма, асбест).

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

ЗАКЛЮЧЕНИЕ

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

В ходе дипломного проектирования решены следующие задачи:

  •   разработана концептуальная модель универсального модуля ввода/вывода;
  •   определены стандарт физического уровня и протокол передачи данных;
  •   разработан алгоритм работы универсального модуля;
  •   определены основные элементы схемы;
  •   создана программа (прошивка) на основе разработанного алгоритма.

Созданный универсальный модуль:

  •   автоматизирует производство;
  •   демонстрирует хорошие ценовые и технические показатели;
  •   позволяет сократить время, требуемое для решения поставленных задач, уменьшить непроизводственные затраты.

Итак,  предлагаемое устройство в ближайшее время будет внедрено в производство, благодаря широким возможностям. Разработанный модуль доступен большинству пользователей по цене, и будет приносить прибыль.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1.  Иди Ф. Сетевой и межсетевой обмен данными с микроконтроллерами. – М.: Издательский дом «Додэка XXI», 2007. – 376 с.
  2.  Парк Д., Маккей С., Райт Э. Передача данных в системах контроля и управления. – М.: ООО «Группа ИДТ», 2007. – 480 с.
  3.  Кузьминов А.Ю. Интерфейс RS232. Связь между компьютером и микроконтроллером. – М.: Радио и связь, 2004. – 168 с.
  4.  Ан П. Сопряжение ПК с внешними устройствами. – М. ДМК Пресс, 2001. – 320 с.
  5.  Агуров П. Последовательные интерфейсы ПК. Практика программирования. – СПб.: БХВ-Петербург, 2004. – 496 с.
  6.  http://www.softelectro.ru/rs485.html
  7.  ГОСТ 12.1.003-83. ССБТ. Шум. Общие требования безопасности.
  8.  ГОСТ 12.1.005-88. ССБТ. Общие санитарно-гигиенические требования к воздуху рабочей  зоны.
  9.  ГОСТ 12.1.012-90.ССБТ. Вибрационная безопасность. Общие требования.
  10.  СанПиН 9-131 РБ 2000.
  11.  ГОСТ 12.2.032-78. ССБТ. Рабочее место при выполнении работ сидя.
  12.  ГОСТ 12.1.030-81. ССБТ.
  13.  ГОСТ 6825-91. Лампы люминесцентные трубчатые для общего освещения.
  14.  ОНТП 24-86. Определение категорий помещений и зданий по взрывопожарной и пожарной опасности. – М.: ВНИИПО МВД СССР, 1988.
  15.  СНБ 2.04.05-98. Естественное и искусственное освещение.
  16.  СНиП 2.04.0591.

                 ПРИЛОЖЕНИЕ А 

Алгоритм работы универсального модуля

Рисунок А.1 – Алгоритм основной программы, универсального модуля

Рисунок А.2 – Алгоритм подпрограммы «Настройки»

Рисунок А.3 – Алгоритм подпрограммы «Сканирование сети»

Рисунок А.4 – Алгоритм подпрограммы «Опрос модулей сети»

Рисунок А.5  Алгоритм подпрограммы «Чтение с USART» и обработки прерывания по таймеру

Рисунок А.6 – Алгоритм подпрограммы «Запись в USART»

Рисунок А.7 – Алгоритм подпрограммы «Обработка принятых MODBUS данных»

Рисунок А.8 – Алгоритм подпрограммы «Передача сообщения MODBUS slave»

Рисунок А.9 – Алгоритм подпрограммы «Передача сообщения MODBUS master»

Рисунок А.10 – Алгоритм подпрограммы «Передача сообщения MODBUS master» (продолжение)

        ПРИЛОЖЕНИЕ Б 

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

/*

* Project name:

    PROG

    MCU:             PIC16F628A

    Oscillator:      HS, 16.0000 MHz

*/

#include "built_in.h"

unsigned short k;

unsigned short i;

unsigned short j;

unsigned short b;

unsigned short bt;

int ti;

unsigned short count_send;                       // Счетчик попыток посылки

unsigned short pered_data[10];                 // Подготовленные данные для передачи

unsigned short RX_buffer[20];                 // Массив байт для приема по USART

unsigned short TX_buffer[20];                 // Массив байт для передачи по USART

unsigned short RX_byte[20];                    // Массив считанных данных

unsigned short modbus_buffer[20];          // Рабочий буфер MODBUS

unsigned short out;                                   // Выходные данные

unsigned short inp;                                   // Входные данные

unsigned short read_ok;                           // Флаг об успешном получении посылки

unsigned short send_ok;                          // Флаг об успешной передаче посылки

//unsigned short read_send_ok;               // Флаг об окончании получения посылки

unsigned short RX_adres;                       // Принятый адрес

unsigned short RX_function;                  // Принятая фкнкция

unsigned short RX_start_reg_st;             // Принятый ст. байт номера рег. с которого должно начаться считывание

unsigned short RX_start_reg_ml;           // Принятый мл. байт номера рег. с которого должно начаться считывание

unsigned short RX_kol_reg_st;              // Принятый старший байт числа количества считываемых регистров

unsigned short RX_kol_reg_ml;            // Принятый младший байт числа количества считываемых регистров

unsigned short RX_kol_byte;                // Принятый байт количества полученных байт данных

unsigned short RX_crc_st;                     // Принятый старший байт CRC кода

unsigned short RX_crc_ml;                   // Принятый младший байт CRC кода

unsigned short rx_count;                       // Счетчик байт в посылке, полученных по MODBUS

int RX_start_reg;                                   // Номер регистра с которого должно начаться считываться

int RX_kol_reg;                                     // Количество регистров для чтения

unsigned short modul_ist;                     // Модуль подключен к сети

unsigned short modul_adr_nazn;          // Адрес модуля назначения

unsigned short modul_tip;                    // Тип модуля

unsigned short modul_in_sost;            // Состояние входов/выходов устройства

unsigned short timer;                           // Переменная - таймер для создания задержки

unsigned short adres_m_in;                 // Адрес входного модуля

unsigned short modul_status;              // Статус модуля 1 - master;2 - slave.

int count_state;                                    // Счетчик для повторного сканирования сети

unsigned short adres;                          // Адрес данного модуля

unsigned short adres_nazn;                 // Адрес модуля получателя данных

unsigned short tip_modul;                   // Тип модуля 0 - модуль ввода; 1 - модуль вывода.

unsigned short usart_flag;                   // Флаг информирующий о включенном USART

// переменные для расчета CRC кода

unsigned short size;                            // Количество обрабатываемых байт в буфере для расчета CRC

int crc_16_modbus;                            // Рассчитываемый CRC код

int cr;                                                  // Временная переменная для хранения расчетных данных

int crc;                                                // Временная переменная для хранения расчетных данных

int crc_kod;                                        // Рассчитанный CRC код

void start_timer(void)

 {

  tmr0=4;

  option_reg.b5=0;

  option_reg.b0=0;

  option_reg.b1=1;

  option_reg.b2=1;

  option_reg.b3=0;

  intcon.b5=1;

 }

// функция пеередачи данных на выходы

void output(unsigned short out)

 {

    portA.b3=out.b0;

    portA.b2=out.b1;

    portA.b1=out.b2;

    portA.b0=out.b3;

    portB.b7=out.b4;

    portB.b6=out.b5;

    portB.b5=out.b6;

    portB.b4=out.b7;

 }

// функция приема данных со входов

unsigned short input(void)

 {

   inp.b0=portA.b3;

   inp.b1=portA.b2;

   inp.b2=portA.b1;

   inp.b3=portA.b0;

   inp.b4=portB.b7;

   inp.b5=portB.b6;

   inp.b6=portB.b5;

   inp.b7=portB.b4;

   return inp;

 }

// функция подсчета CRC кода

int CRC_16(unsigned short buffer[],unsigned short size)

 {

  crc_16_modbus=0xffff;

  i=0;

  do {

       cr = (crc_16_modbus ^ buffer[i]) && 0xff;

       crc=0;

       j=0;

       do{

          if (((crc ^ cr)&& 1)=1)

            {

             crc = (crc << 1);

             crc = crc ^ 0xA001;

            }

          else crc = (crc << 1);

          cr=cr << 1;

         } while (j<=7);

       crc_16_modbus=(crc_16_modbus << 8) ^ crc;

     } while (i <= size-1);

  return crc_16_modbus;

 }

// функция передачи сообщения по USART

void usart_pered(unsigned short buffer[],unsigned short size)

 {

  b=0;

  i=0;

  txsta.b5=1;

  do {

       if (b=i){

                txreg = buffer[i];

                b++;

               }

       if (buffer[i] > 0)

          {

           if (txreg=0x00)i++;

          }

       else

          {

           if (txsta.b1=1)i++;

          }

     } while(i<size);

 }

unsigned short modbus_send_master(unsigned short adres,unsigned short function,int start_reg,int kol_reg,unsigned short kol_byte,unsigned short pered_data[],unsigned short timer_finish,unsigned short kol_pop_send)

 {

   count_send=0;

   //Посылаем "запрос-in MODBUS" по адресу adres_m_in

   txsta.b5=1;

   tx_buffer[0]=adres_nazn;

   tx_buffer[1]=function;

   tx_buffer[2]=Hi(start_reg);

   tx_buffer[3]=Lo(start_reg);

   tx_buffer[4]=Hi(kol_reg);

   tx_buffer[5]=Lo(kol_reg);

   if (function=3)

     {

      crc_kod=crc_16(tx_buffer,6);

      tx_buffer[6]=Hi(crc_kod);

      tx_buffer[7]=Lo(crc_kod);

      size=8;

     }

   if (function=16)

     {

      tx_buffer[6]=kol_byte;

      i=0;

      do {

          tx_buffer[7+i]=pered_data[i];

          i++;

         } while (i<kol_byte);

      crc_kod=crc_16(tx_buffer,7+kol_byte);

      tx_buffer[7+kol_byte]=Hi(crc_kod);

      tx_buffer[8+kol_byte]=Lo(crc_kod);

      size=9+kol_byte;

     }

   do{

      usart_pered(tx_buffer,size);

      count_send++;

      timer=timer_finish;

      status=timer_s(timer);

      if (status=2) count_send=kol_pop_send+1;

     }while(count_send<kol_pop_send);

   send_ok=0;

   if (count_send>kol_pop_send)

        {

         send_ok=1;

        }

   return send_ok;

 }

unsigned short modbus_send_slave(unsigned short adres,unsigned short function,int start_reg,int kol_reg,unsigned short kol_byte,unsigned short modbus_buffer[])

 {

   // Если приянятая функция равна 3, то отсылаем запрошенные байты данных

   //Посылаем "запрос-in MODBUS" по адресу adres_m_in

   txsta.b5=1;

   tx_buffer[0]=adres;

   tx_buffer[1]=function;

   if (function=3)

     {

      tx_buffer[2]=kol_byte;

      k=0;

      do{

         tx_buffer[3+k]=modbus_buffer[start_reg+k];

         k++;

        }while(k<=kol_byte);

      //Высчитываем CRC код

      crc_kod=crc_16(tx_buffer,3+kol_byte);

      tx_buffer[3+kol_byte]=Hi(crc_kod);

      tx_buffer[4+kol_byte]=Lo(crc_kod);

      size=9+kol_byte;

     }

   if (function=16)

     {

      tx_buffer[2]=Hi(start_reg);

      tx_buffer[3]=Lo(start_reg);

      tx_buffer[4]=Hi(kol_reg);

      tx_buffer[5]=Lo(kol_reg);

      //Высчитываем CRC код

      crc_kod=crc_16(tx_buffer,6);

      tx_buffer[6]=Hi(crc_kod);

      tx_buffer[7]=Lo(crc_kod);

      size=8;

     }

   usart_pered(tx_buffer,size);

 }

 

// функция обработки данных с USART

void modbus_read(void)

 {

   bt=0;

   read_ok=0;

   //Высчитываем CRC код

   crc_kod=crc_16(RX_BUFFER,rx_count-2);

   RX_adres=RX_BUFFER[0];

   RX_function=RX_BUFFER[1];

   RX_start_reg_st=RX_BUFFER[2];

   RX_start_reg_ml=RX_BUFFER[3];

   RX_kol_reg_st=RX_BUFFER[4];

   RX_kol_reg_ml=RX_BUFFER[5];

   RX_start_reg=RX_start_reg_st;

   RX_start_reg=(RX_start_reg<<8)+RX_start_reg_ml;

   RX_kol_reg=RX_kol_reg_st;

   RX_kol_reg=(RX_kol_reg<<8)+RX_kol_reg_ml;

   if (modul_status=1)

     {

       if (RX_adres=adres)

         {

           if (RX_function=3)

             {

               RX_kol_byte=RX_BUFFER[6];

               RX_crc_st=RX_BUFFER[7+RX_kol_byte];

               RX_crc_ml=RX_BUFFER[8+RX_kol_byte];

               k=1;

               do{

                  RX_byte[k]=RX_BUFFER[6+k];

                  k++;

                 }while(k<=RX_kol_byte);

             }

           if (RX_function=16)

             {

               RX_crc_st=RX_BUFFER[6];

               RX_crc_ml=RX_BUFFER[7];

             }

           read_ok=0;

           if ((Hi(crc_kod)=RX_crc_st)&&(Lo(crc_kod)=RX_crc_ml))

              {

               read_ok=1;

               timer=0;

              }

         }

     }

   if (modul_status=2)

      {

        if ((RX_adres=adres)||(RX_adres=0))

          {

            if (RX_function=3)

              {

                RX_crc_st=RX_BUFFER[6];

                RX_crc_ml=RX_BUFFER[7];

              }

            if (RX_function=16)

              {

                RX_kol_byte=RX_BUFFER[6];

                RX_crc_st=RX_BUFFER[7+RX_kol_byte];

                RX_crc_ml=RX_BUFFER[8+RX_kol_byte];

                if (RX_start_reg+RX_kol_reg>30)

                   {

                    k=0;

                    do {

                        k++;

                        modbus_buffer[RX_start_reg+k];

                       }while(k<=RX_kol_byte);

                   }

              }

            read_ok=0;

            if ((Hi(crc_kod)=RX_crc_st) && (Lo(crc_kod)=RX_crc_ml))

               {

                 read_ok=1;

                 timer=0;

                 // Если адрес назначения не равен 0, то отсылаем ответ о выполненном действии.

                 if(RX_adres>0) modbus_send_slave(adres,RX_function,RX_start_reg,RX_kol_reg,RX_kol_reg*2,modbus_buffer);

               }

          }

      }

 }  

// функция настройки параметров

void setting(void)

 {

       //запрещаем прерывание по приему с USART

     pie1.b5=0;

     spbrg=3;

     usart_flag=0;

     if (portA.b4=1) adres=input(void);              // адрес модуля

     if (portA.b5=1) adres_nazn=input(void);     // адрес модуля получателя данных

     tip_modul=0;                                                // модуль ввода

     if (adres_nazn=0) tip_modul=1;                   // модуль вывода

     // запись в EEPROM данных

     EEprom_Write(1,adres);

     EEprom_Write(2,adres_nazn);

}

// функция таймера

void taimer_s(unsigned short timer)

 {

      do{

         timer--;

         Delay_ms(1);

        }while(timer>1);

     status =1;                                                                   

     if (timer=0) status=2;                                 

     return status;

}

void main()

{

 // Конфигурирование порта А

 TRISA = 0b00000011;            // 0 выход,1 вход set direction to be output 0-4 i/o(0-5,1-4,2-1,3-2,4-3)(5--;6,7-16MGz)

 // Конфигурирование порта В

 TRISB = 0b11110110;            // 1-2 USART, 3-вход, режим программирования.;4-выбор типа модуля;5-7 i/o

 // конфигурация USART приемника

 RCSTA=0b10010000;

 //конфигурация USART передатчика

 txsta=0b00000100;

 adres=EEprom_Read(1);

 Delay_ms(50);

 adres_nazn=EEprom_Read(2);

 Delay_ms(50);

 tip_modul=0;                                                                  // модуль ввода

 if (adres_nazn=0) tip_modul=1;                                    // модуль вывода

 start_timer(void);

 main_program:  // Начало главной программы

 if (tip_modul=0)

     {                                                                                // модуль ввода

       // Конфигурирование порта А

       TRISA = 0b00000011;      // 0 выход,1 вход set direction to be output 0-4 i/o(0-5,1-4,2-1,3-2,4-3)(5--;6,7-16MGz)

       // Конфигурирование порта В

       TRISB = 0b11110110;      // 1-2 USART, 3-вход, режим программирования.;4-выбор типа модуля;5-7 i/o

     }

 else

     {                                                                         // модуль вывода

       // Конфигурирование порта А

       TRISA = 0b00000011;      // 0 выход,1 вход set direction to be output 0-4 i/o(0-5,1-4,2-1,3-2,4-3)(5--;6,7-16MGz)

       // Конфигурирование порта В

       TRISB = 0b11110110;      // 1-2 USART, 3-вход, режим программирования.;4-выбор типа модуля;5-7 i/o

     }

 if (portB.b3=1)

    {

     setting(void);

     goto main_program;

    };

 if (usart_flag=0)

    {

     //разрешаем прерывание по приему с USART

     pie1.b5=1;

     spbrg=3;

     usart_flag=1;

    };

 if (tip_modul=1)

    {

      output(modbus_buffer[3]);

      goto main_program;

    };

 count_state++;

 if (count_state>=1000)

    {

      count_state=0;  

      timer=1000+adres*10;

modul_status=timer_s(timer);   //  1 – master; 2 – slave.  

    }

 lan_scan:

 if (modul_status=1)

   {      //Опрашиваем состояние входов входного устр-ва

     if (adres_m_in>=250) adres_m_in=1;

     adres_m_in++;

     //Посылаем "запрос-in MODBUS" по адресу adres_m_in

     send_ok=modbus_send_master(adres_m_in,3,0,2,0,pered_data,1,3);

     if (send_ok=1)

        {

          modul_ist=1;

          modul_adr_nazn=RX_byte[2];

          modul_in_sost=RX_byte[3];

          modul_tip=0;

          pered_data[0]= modul_in_sost;

          pered_data[1]= modul_in_sost;

          if (modul_adr_nazn=0) modul_tip=1;                // модуль вывода

        }

      else

        {   //Ошибка связи с модулем IN-OUT

         goto main_program;

        };

     //Устанавливаем состояния выходов выходного устр-ва

     send_ok=modbus_send_master(modul_adr_nazn,16,0,2,0,pered_data,1,3);

     if (send_ok=0)

        {

         //Ошибка связи с модулем IN-OUT

         goto main_program;

        }

   }

}

void interrupt()

 { // обработка прерываний

   // прерывание по таймеру (и обработка принятых по USART данных)

   if (INTCON.b2=1)

     {

       ti++;

       // Если время ожидания сигнала превысило 3,5 символа, то значит прошла большая пауза, сохраняем          содержимое буфера, а потом очищаем.

       if (ti>=1000)  

        {

           ti=0;

           rx_count=bt;

           modbus_read(void);

           rx_count=0;

         }

       INTCON.b2=0;

     }

   // прерывание по принятому сигналу (прием по USART)

   if (pir1.b5=1)

     {

      ti=0;

      rx_buffer[bt]=rcreg;

      bt++;

      pir1.b5=0;

     }

 }

        ПРИЛОЖЕНИЕ В 

Пример варианта исполнения аппаратной части

Рисунок В.1 – Схема электрическая принципиальная модуля

Рисунок В.2 – Монтажная плата модуля

        ПРИЛОЖЕНИЕ Г

Перечень листов графической части дипломного проекта

Лист 1 – Постановка задачи.

Лист 2 – Пример необходимости использования универсальной модульной системы.

Лист 3 – Средства разработки.

Лист 4 – Структурная схема организации модульной системы.

Лист 5 – Структурная схема организации модульной системы (продолжение).

Лист 6 – Структурная схема универсального модуля.

Лист 7 – Структура рабочего буфера MODBUS.

Лист 8 – Структура рабочего буфера MODBUS (продолжение).

Лист 9 – Пример варианта исполнения аппаратной части.

Лист 10 – Пример варианта исполнения аппаратной части (продолжение).

Лист 11 – Технико-экономические показатели проекта.

Лист 12 – Заключение.


 

А также другие работы, которые могут Вас заинтересовать

17686. Роздільна здатність телескопу та мікроскопу 523.26 KB
  Роздільна здатність телескопу та мікроскопу. Границі роздільної здатності оптичних приладів. Роздільна здатність оптичних приладів обмежується дифракцією Фраунгофера на їх вхідній апертурі оскільки при цьому кожна точка об’єкта зображується дифракційною карти
17687. Розсіювання світла в мутних середовищах (αλ, α ~λ, αλ,) 88.38 KB
  Розсіювання світла в мутних середовищах. Мутне середовище – середовище в якому містяться завислі частинки. Розсіювання світла у мутному середовищі можна описати на основі теорії дифракції світла на діелектричних частинках. Розглянемо три випадки відн
17688. Розсіяння Мендельштама-Брілюена 25.17 KB
  Розсіяння МендельштамаБрілюена Розсіюванням Мандельштама Брілюена називають розсіювання оптичного випромінювання конденсованими середовищами твердими тілами і рідинами в результаті його взаємодії з власними пружними коливаннями цих середовищ. Воно супроводжує...
17689. Самофокусування світла 33.92 KB
  Самофокусування світла Самофокусування світла – це ефект самовпливу що виникає при розповсюдженні в нелінійному середовищі інтенсивного світлового пучка що має обмежений поперечний переріз. Розглянемо феноменологічне матеріальне рівняння де – поляризованість...
17690. Скін-ефект. Аномальний скін-ефект 18.65 KB
  Скінефект. Аномальний скінефект Проникнення єлектронномагнітної хвилі в тонкий поверхневий шар металу є частковим випадком скінефекту. Сам шар у який проникає електромагнітне поле називається скіншаром. Напруженість поля в скіншар зменшується експоненційно таки
17691. Теорія випромінювання Ейнштейна 19.17 KB
  Теорія випромінювання Ейнштейна Це по суті новий теоретичний вивід формули Планка. Нехай значення енергії які може набувати атом чи будьяка атомна система. Розглянемо багато однакових атомів у світловому полі яке є ізотропним і неполяризованим. Нехай і – кіль...
17692. Товсті та тонкі голограми 96.74 KB
  Товсті та тонкі голограми. Голографія набір технологій для точного запису відтворення і переформатування хвильових полів. Це спосіб одержання обємних зображень предметів на фотопластинці голограми за допомогою когерентного випромінювання лазера. Голограма фік
17693. Умови інтерференції двох хвиль 17.49 KB
  Умови інтерференції двох хвиль. Інтерференція – зміна середньої інтенсивності що обумовлена принципом суперпозиції. Для інтерференції хвиль необхідною умовою є їх когерентність: однакові частоти однаково поляризованілінійно стала в часі різниця фаз. ...
17694. Фазовий синхронізм у параметричних явищах 36.72 KB
  Фазовий синхронізм у параметричних явищах. Нелінійний доданок до поляризації середовища в нульовому наближені:перший доданок не залежить від часу так зване оптичне детектування. Другий доданок гармонічно змінюється з часом. З ним пов’язана генерація в нелінійному сер...