Примеры программ для плк110

Содержание

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

  • Нано контроллеры, имеющие менее 16 каналов ввода-вывода;
  • Мини контроллеры имеют до 100 каналов ввода-вывода;
  • Средние контроллеры имеют уже до 500 каналов;
  • Гиганты являются рекордсменами обладая более чем 500 каналами ввода-вывода.

Промышленные ПЛК можно разбить на виды по расположению модулей ввода-вывода.

  • Моноблочные- модуль ввода-вывода и контроллер являются единым целым;
  • Модульные- собираются в корзину сменными модулями в зависимости от задачи;
  • Распределительные- имеют разные корпуса и соединяются контроллером по сети.

Для увеличения общего количества каналов типы контроллеров могут комбинироваться, скажем модульный или моноблочный ПЛК можно дополнить удаленным модулем ввода-вывода сри помощи интерфейса RS-485.

Программирование ОВЕН ПЛК110. Часть 4. Подключение ПЛК к ПК по Ethernet

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

  • Панельные ПЛК;
  • Монтажные ПЛК;
  • Настенные ПЛК;
  • Стоечные ПЛК;
  • Бескаркасные ПЛК.

Область применения промышленных контроллеров также можно классифицировать на:

  • Универсальные;
  • Робототехника;
  • Перемещение и позиционирование;
  • Коммуникационные;
  • Специализированные;
  • ПИД – ПЛК.

И последние два вида классификации это язык программирования промышленных контроллеров и способ программирования.

  • Алгоритмические языки- Basic, C#, C++, C.
  • Машинный язык программирования МЭК 61131-3.

Классифицировать по способу программирования контроллеров можно так:

  • Контроллер программируемый с лицевой стороны;
  • Контроллер программируемый специальным программатором;
  • Контроллер программируемый с помощью клавиатуры, мыши и дисплея;
  • Контроллер программируемый с помощью переносного ПК.

На этом виды и классификация промышленных контроллеров заканчивается.

Архив прошивок

Программа обновления встроенного ПО контроллеров ОВЕН ПЛК версии 2.10.9

Имя файла Скачать файл Target-файлы
Перепрошивка №2.10.9 Target v2.10
ОВЕН ПЛК 100
ОВЕН ПЛК 150
ОВЕН ПЛК 154
ОВЕН ПЛК 110-32
ОВЕН ПЛК 110-60
log

Программа обновления встроенного ПО контроллеров ОВЕН ПЛК версии 2.03.0

Имя файла Скачать файл Target-файлы
Перепрошивка №2.03.0 Target v2.02-4
ОВЕН ПЛК 100
ОВЕН ПЛК 150
ОВЕН ПЛК 154
log

Программа обновления встроенного ПО контроллеров ОВЕН ПЛК версии 2.01.8

Имя файла Скачать файл Target-файлы
Перепрошивка №2.01.8 Target v2.02-4
ОВЕН ПЛК 100
ОВЕН ПЛК 150
ОВЕН ПЛК 154
log

Неисправности и ошибки ПЛК

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

Программирование ОВЕН ПЛК110. Часть 1. Создание первого проекта в CODESYS v2.3

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

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

HMI — визуализация «на борту» и в облаках

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

Однако мало у каких контроллеров наличие технологических предпосылок приводит к появлению полноценной графики на уровне современных SCADA-систем. В MasterPLC Designer реализован полноценный редактор полностью векторных на базе формата SVG HTML-страниц, укомплектованный общепромышленной библиотекой проектных объектов типа задвижки, насоса и т. п., а также рядом отраслевых библиотек. Эти объекты наряду с логикой контроля и управления, реализованной в программе на ST, имеют и отображение в виде анимированных 3D-символов и окон управления (рис. 8).

Рис. 8. Библиотеки анимированных объектов

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

При этом обеспечивается верстка с использованием любых типов панелей для организации нужного расположения элементов, а готовая мнемосхема имеет ту степень адаптации к размеру экрана, которую заложил разработчик проекта. Например, «резиновая» (то есть растягивающаяся под размер клиентского экрана) верстка может содержать элементы с ограниченным минимальным размером (текст, изображения и т. п.). В результате одна и та же мнемосхема (рис. 9) с равным успехом может отображаться на встроенной панели контроллера, подключенном непосредственно к нему мониторе или на клиентском устройстве (компьютере, планшете, смартфоне), подключенном через Интернет. Примеры таких мнемосхем можно увидеть на сайте www.sky-monitor.ru.

Рис. 9. Мнемосхема насосной станции

Схема подключения контроллера

Схема контроллера зависит от производителя и типа, сколько существует ПЛК столько же и схем, вот лишь несколько схем ПЛК на примере контроллера Siemens S7-300.

CPU 312C: Назначение встроенных DI/DO Принципиальная схема встроенной цифровой периферии CPU 312C
CPU 313C/313C-2/314C-2: назначение встроенных цифровых входов и выходов Принципиальная схема встроенной цифровой периферии CPU 313C/313C-2/ 314C-2

Библиотеки CoDeSys

Автоматический установщик библиотек (ПЛК100/150/154/110/160/63/73)

Имя файла Скачать библиотеку с описанием
Установщик библиотек (exe)

Библиотеки для контроллеров ОВЕН ПЛК100/150/154 (Версия 8.12)

Имя файла Скачать библиотеку с описанием
Библиотеки ОВЕН
Библиотеки CoDeSys

Библиотеки для контроллеров ОВЕН ПЛК110/160 (Навигатор ПЛК110/160 версия 6)

Имя файла Скачать библиотеку с описанием
Библиотеки ОВЕН
Библиотеки CoDeSys

Библиотеки для контроллеров ОВЕН ПЛК63 (Навигатор ПЛК63 версия 5)

Имя файла Скачать библиотеку с описанием
Библиотеки ОВЕН
Библиотеки CoDeSys

Параметрирование, программирование контроллера

Возможны два варианта программирования контроллеров.

  1. С выездом на производственную площадку заказчика;
  2. Программирование ПЛК в сервисном центре.

В каждом ПЛК установлена программа управления промышленным оборудованием, к примеру станком или роботом. Контроллер программируется на заводе изготовителе при покупке станка, линии. В некоторых случаях покупается оборудование с ПЛК без установленного программного обеспечения (ПО). После покупки данного оборудования потребуется квалифицированные специалисты для запуска данного промышленного оборудования.

Для запуска оборудования с контроллером ПЛК потребуется выполнить следующие работы:

  • Разработка проекта программы контроллера;
  • Написание программы контроллера;
  • Запись программы в ПЛК;
  • Пуско-наладка контроллера на оборудовании.

При возникновении сбоев на оборудовании может потребоваться редактирование или изменение проекта программы контроллера с записью измененного проекта в ПЛК.

Интегрированная среда

Интегрированная среда MasterPLC Designer (рис. 3) реализована с учетом многолетнего опыта эксплуатации MasterSCADA, оболочка которой стоит на двух «китах»: объектном подходе с разделением физической реализации системы и абстрактной модели объекта и принципе построения среды «все в одном», когда для каждого элемента проекта нужные ему редакторы или свойства открываются на закладках.

Рис. 3. Интегрированная среда MasterPLC Designer

Рис. 4. а) Дерево системы; б) Дерево объекта

Читайте также:
Какой программой отследить посылку с Алиэкспресс

Устройство интегрированной среды MasterPLC Designer осталось тем же: это организация проекта в виде двух объектных иерархий: дерева системы (рис. 4а) и дерева объекта (рис. 4б). Дерево системы содержит контроллеры, поддерживаемые ими протоколы связи и службы, подключенные модули и их сигналы.

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

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

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

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

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

Производители промышленных контроллеров

С момента своего появления ПЛК прочно заняли свое место во всех промышленных отраслях благодаря простоте и способности продолжительно и безаварийно работать в самых агрессивных средах. А как говорится спрос рождает предложение, промышленные контроллеры на сегодняшний день не делает только ленивый. Вот список самых известных производителей ПЛК в России.

  • Advantech;
  • Delta;
  • Bocsh Rexroth;
  • Lenze;
  • Pilz;
  • Jetter;
  • Mitsubishi;
  • Omron;
  • Siemens;
  • Hitachi;
  • Агава;
  • Овен.

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

Диагностика, ремонт и программирование ПЛК в сервисном центре

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

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

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

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

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

Если на вашем производстве вышел из строя ПЛК, обращайтесь в сервисный . Специалисты нашей компании в минимальные сроки проведут глубокую диагностику и последующий ремонт промышленного контроллера.

Как с нами связаться

Если вы заинтересованы в ремонте ПЛК, оставьте заявку на ремонт с помощью специальной формы на сайте, либо связавшись с нашими менеджерами несколькими способами:

  • Заказав обратный звонок (кнопка в правом нижнем углу сайта)
  • Посредством чата (кнопка расположена с левой стороны сайта)
  • Либо позвонив по номеру; +7(917) 121-53-01
  • Написав на электронную почту

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

Источник: rentps3.ru

Программирование контроллера ПЛК110

Для использования контроллера ПЛК110 необходимо запрограммировать, т.е. создать пользовательскую программу. После создания пользовательская программа может быть сохранена в энергонезависимой Flash-памяти контроллера и запускаться на выполнение после включения питания или перезагрузки. Контроллер ПЛК110 является PC-совместимым контроллером и может программироваться с компьютера при помощи среды CoDeSys.

Перед программированием контроллера для корректной работы среды CoDeSys необходимо подключить Target-файлы.

Target-файл (целевой файл) – файл или набор файлов, поставляемых производителем, содержащий информацию о ресурсах контроллера, количестве входов и выходов, интерфейсах и т.д. Другими словами Target-файл – это драйвер необходимый для связи контроллера со средой программирования. Инсталляция Target-файлов производится при помощи утилиты «InstallTarget», входящей в пакет CoDeSys.

Для активизации утилиты «InstallTarget» необходимо перейти по следующей директории: кнопка «Пуск», пункт «Все программы», группа «3S Software», подгруппа «CoDeSys v 2.3» пункт «InstallTarget» (рис. 2).

Рис. 2 Запуск программы InstallTarget

После запуска программы необходимо нажать кнопку «Open» и в открывшемся окне указать путь к Target-файлу с расширением *tnf. Имя файла формируется латинским буквами и не всегда может полностью совпадать с названием контроллера. Для модификации контроллера ПЛК110 лабораторной установки необходимо подключить файл plc.tnf из папки PLC110.32_m, хранящейся на компакт-диске, поставляемом изготовителем вместе с контроллером (рис.3).

Рис. 3 Открытие Target-файла ПЛК110.32

После открытия требуемого файла в области «Possible Targets» в левой час-ти окна отобразится папка «Owen».

Открыв папку «Owen» и выделив находящуюся там строку с наименованием контроллера, необходимо нажать кнопку «Install», после чего в правой части области «Installed Targets» отобразится список инсталлированных Target-файлов (рис. 4).

Рис. 4 Подключение Target-файла к среде CoDeSys

Для создания проекта необходимо открыть среду CoDeSys: кнопка «Пуск», пункт «Все программы», группа «3S Software», подгруппа «CoDeSys v 2.3», пункт «CoDeSys v 2.3». После чего в пункте меню «File» выбрать подпункт «New» и затем, в открывшемся окне «Target Settings» в меню «Configuration» из списка выбрать файл PLC110.32 (рис. 5).

Рис.5 Создание проекта в среде CoDeSys

В раскрывшемся окне «Target Settings» окне можно изменить значения некоторых параметров Target-файла ПЛК110. Как правило, установленные производителем значения не требуют изменения, кроме изменения объема Retain-памяти при необходимости. Размер сохраняемой при отключении питания Retain-памяти по умолчанию установлен равным 4кБ, но может быть увеличен до 16кБ. Увеличение размера делается во вкладке «Memory Layout», в строке «Retain».

После подтверждения настроек Target-файла необходимо создать главную программу проекта (POU). Для этого в окне «New POU» в группе «Type of POU» выбрать пункт «Programm», а в правой части окна. в группе «Language of the POU» выбрать один из языков на котором будет составляться программа. Среда CoDeSys предоставляет пользователю шесть языков программирования для создания программ.

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

Читайте также:
Ати как работать в этой программе

Язык ST – язык высокого уровня, ситнаксис которого похож на язык Паскаль.

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

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

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

Для примера рассмотрим создание простейшей программы на языке CFC (рис. 6).

Рис. 6 Создание программы и выбор языка в CoDeSys

После выбора указанных параметров необходимо нажать кнопку «ОК» после чего откроется окно среды (рис. 7).

Рис. 7. Главное окно среды CoDeSys:1 – основное меню; 2 – панель инструментов; 3 – окно «Организатор объектов»; 4 – текстовый редактор среды; 5 – графический редактор среды; 6 – окно сообщений.

Главное меню среды CoDeSys является стандартным для Windows-приложений. Содержимое панели инструментов, расположенной под пунктами основного меню меняется в зависимости от выбранного языка программирования. Левее под панелью инструментов располагается подокно, которое называется «Организатор объектов», в верхней правой части располагается текстовый редактор среды. Под окном текстового редактора расположено рабочее поле графического редактора. Ниже графического редактора расположено окно сообщений.

Создадим простейшую программу на языке CFC. Для этого с помощью кнопки «Box» на панели инструментов вынесем блок в рабочую область графического редактора. По умолчанию будет вынесет блок «AND» с двумя входами и одним выходом, выполняющий логическую операцию «И» (рис. 8).

Рис.8 Вид функционального блока «AND» в поле графического редактора

Для увеличения числа входов блока необходимо щелкнуть правой клавишей мыши на изображении блока и в открывшемся меню выбрать подпункт «Input of Box».

Кроме блока «AND» можно воспользоваться другими блоками из библиотеки CoDeSys. Для входа в библиотеку необходимо во вкладке «Recourses» окна «Организатор объектов» выбрать пункт «Library Manager» (рис. 9).

Рис. 9 Библиотека стандартных блоков CoDeSys

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

К имеющемуся блоку «AND» при помощи кнопок «Input» и «Output» добавим в поле графического редактора блоки входов и выходов, а затем соединим их при помощи левой клавиши мыши (рис. 10).

Рис. 10 Подключение вводов и выходов к функциональному блоку «AND»

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

Зададим имена и определим тип переменных, поступающих на блок «AND». Для задания имени необходимо однократно щелкнуть левой клавишей мыши по блоку «Input» или «Output» в поле графического редактора и с клавиатуры ввести имя переменной и нажать клавишу «Enter».

В результате чего откроется окно объявления переменной «Declare Variable» (рис. 11)

Рис. 11 Задание типа и значения переменной

При необходимости можно изменить имя переменной, ее тип, задать значение и дать комментарий в соответствующих полях. Присвоим имена входным переменным a и b, а выходной переменной – c. Остальные атрибуты переменных оставим без изменения. В качестве типа выберем тип «BOLL» – логический. В результате задания имен переменных и определения их типа автоматически изменяется и код программы (рис. 12).

Рис. 12 Объявление переменных в текстовом редакторе языка CFC

Сохраните проект по стандартной методике сохранения файлов.

Источник: megaobuchalka.ru

Arduino.ru

В этой теме я постараюсь описать свои эксперементы с промышленным протоколом Modbus для локальной сети и RS485 мне удалось как управлять ардуиной с ПЛК так и ардуиной управлять плк и модулями вводы вывода от овена.

SimpleModbus — Modbus библиотеки для Ардуино, которые позволяют Вам предавать посылки по последовательному интерфейсу с использованием протокола Modbus RTU. Обе библиотеки SimpleModbusMaster и SimpleModbusSlave поддерживают Modbus функции 3 и 16, кроме того, SimpleModbusMaster поддерживают Modbus функции 1, 2, 4 и 15. Передача поддерживает на обеих библиотеках функции 16 и 15. Обе библиотеки имеют похожий интерфейс.

Есть всего две необходимых функции modbus_update () и modbus_configure (). Обе библиотеки были проверены промышленном оборудовании: на отечественном оборудовании PLC OWEN и модулях ввода вывода. Дополнительно библиотека SimpleModbusSlave была проверена с тестером Modbus Poll.

Библиотеки стабильно работают. Вся работа библиотеки выполняется в фоновом режиме. Ваша программа выполнятся без задержек. Примеры и библиотеки хорошо прокомментированы и интуитивно понятны это позволит вам легко создать свой первый проект с Modbus.
Библиотеки написаны с применением объектно-ориентированного подхода, на языке C не используя C ++. Это облегчает портирование программного обеспечения библиотеки на другие платформы, который поддерживают компилятор C.

Библиотека мастера RTU

Библиотека slave RTU

Примеры к библиотекам

Файлы для плк 110 овен

Полное описание библиотеки мастера на английском

Для связи по RS485 я использовал шилд

RS485 Shield для Ардуино. RS485 Shield для Ардуино.
Вот такой шилд я прикупил для своего Ардуино его очень удобно использовать для создания устройств с RS485. Шилд поддерживает управление приёмом передачей в автоматическом и ручном режиме выбор переключателем.

Описание RS485 Shield V1.0

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

Особенности
— Питание 5.0 В
— 16 цифровой порт ввода-вывода (в том числе интерфейс I2C)
— 6 аналоговых I/O портов
— Переключатель в режима программирования
— Автоматический / ручной переключатель режима трансивера
— Светодиоды RX TX
— Стандартный интерфейс RS485, мини-интерфейс RS485 (PH2.0) и выводы RS485
— Область для прототипирования
— Кнопка сброса
— Размер 55 x 53 мм

Пример программы для ардуино для работы с шилдом

Sample Code Automatic Transmission Mode /* # This sample codes is for testing the RS485 shiled(automatic transmission mode). # Editor : YouYou # Date : 2013.9.16 # Ver : 0.1 # Product: RS485 shield # SKU : DFR0259 */ int led = 13; void setup() < Serial.begin(9600); pinMode(led,OUTPUT); >void loop() < int temp; if(Serial.available()) < temp=Serial.read(); if(temp==’V’)< digitalWrite(led,1-digitalRead(led)); Serial.println(«OK»); >> > Manual Transmission Mode /* # This sample codes is for testing the RS485 shiled(manual transmission mode). # EN=2; # Editor : YouYou # Date : 2013.9.16 # Ver : 0.1 # Product: RS485 shield # SKU : DFR0259 */ int led = 13; int EN = 2; //Definition RS485 shield enable terminal (the 2nd digital IO ports), //high for the sending state, the low level of receiving state void setup() < Serial.begin(9600); pinMode(led,OUTPUT); pinMode(EN,OUTPUT); >void loop() < int temp; digitalWrite(EN,LOW); //Enable low, RS485 shield waiting to receive data if(Serial.available()) < temp=Serial.read(); if(temp==’V’) < digitalWrite(led,1-digitalRead(led)); digitalWrite(EN,HIGH); //Enable high, RS485 shield waiting to transmit data Serial.println(«OK»); delay(10); //Delay for some time, waiting for data transmitted >> >

Читайте также:
Программа чтобы наушники работали

купить можно на Amperka.ru или Ebey

Пример работы с библиотекой мастера RTU

/* Пример будет использовать packet1, чтобы считать регистр из адреса 0 (значение adc ch0) от arduino раба (id=1). Это будет тогда использовать это значение, чтобы скорректировать яркость из вовлеченного контакт 9 использований PWM. Это будет тогда использовать packet2, чтобы записать регистр (его собственное значение adc ch0), чтобы адресоваться 1 на arduino рабе (id=1) корректировка яркости вовлеченного контакт 9 использований PWM. */ #include //////////////////// Макроопределения портов и настройки программы /////////////////// #define baud 9600 // скоростьобмена по последовательному интерфейсу. (UART) #define timeout 1000 // Длительность ожидание ответа (таймаут modbus) #define polling 200 // скорость опроса по modbus #define retry_count 10 // количесво запросов modbus до ошибки и останова обмена #define TxEnablePin 2 // Tx/Rx пин RS485 #define LED1 9 // светодиод 1 #define LED2 13 // светодиод 2 // Общая сумма доступной памяти на master устройстве, для хранения данных // не забудьте изменить макроопределение TOTAL_NO_OF_REGISTERS. Если из слейва // запрашиваешь 4 регистра, то тогда в массиве reg должно быть не меньше 4х ячеек // для хранения полученных данных. #define TOTAL_NO_OF_REGISTERS 4 // Масив пакетов modbus // Для добавления новых пакетов просто добавте ихсюда // сколько вам нужно. enum < PACKET1, PACKET2, PACKET3, PACKET4, TOTAL_NO_OF_PACKETS // эту строку неменять >; // Масив пакетов модбус Packet packets[TOTAL_NO_OF_PACKETS]; // Массив хранения содержимого принятых и передающихся регистров unsigned int regs[TOTAL_NO_OF_REGISTERS]; void setup() < // Настраиваем пакеты // Шестой параметр — это индекс ячейки в массиве, размещенном в памяти ведущего устройства, в которую будет // помещен результат или из которой будут браться данные для передачи в подчиненное устройство. В нашем коде — это массив reg // Пакет,SLAVE адрес,функция модбус,адрес регистра,количесво запрашиваемых регистров,локальный адрес регистра. modbus_construct( // чтение данных slave-master (slave адрес 1, регистр 0) modbus_construct( // чтение данных slave-master (slave адрес 1, регистр 1) // Пакет,SLAVE адрес,функция модбус,адрес регистра,данные,локальный адрес регистра. modbus_construct( // запись данных master-slave (slave адрес 1, регистр 2) modbus_construct( // запись данных master-slave (slave адрес 1, регистр 3) // инициализируем протокол модбус modbus_configure( pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); >// конец void setup() void loop() < modbus_update(); // запуск обмена по Modbus // если пришло 255 зажигаем светодиод analogWrite(LED1, regs[0]>>2); // чтение данных slave-master (slave адрес 1, регистр 0) // (ограничеть количесво бит данных числом 255), прочитаное значение выводим шимом на аналоговый выход pin9 if (regs[1] == 255)else // чтение данных slave-master (slave адрес 1, регистр 1) regs[2] = 255; // запись данных master-slave (slave адрес 1, регистр 2), запись константы regs[3] = analogRead(0); // запись данных master-slave (slave адрес 1, регистр 3), значение из аналогового входа 0 > // конец void loop()

Пример работы с библиотекой SLAVE RTU

/* SimpleModbusSlaveV10 supports function 3, 6 и 16. serial ring buffer 64 bytes or 32 registers. function 3 58 bytes or 29 registers. function 16 54 bytes or 27 registers. */ #include //////////////////// Макроопределения портов и настройки программы /////////////////// #define TxEnablePin 2 // Tx/Rx пин RS485 #define baud 9600 // скоростьобмена по последовательному интерфейсу. (UART) #define timeout 1000 // Длительность ожидание ответа (таймаут modbus) #define polling 200 // скорость опроса по modbus #define retry_count 10 // количесво запросов modbus до ошибки и останова обмена #define Slave_ID 1 // Адрес Slave устройсва #define LED1 13 // светодиод 1 #define LED2 9 // светодиод 2 const int buttonPin = 3; // номер входа, подключенный к кнопке // переменные int buttonState = 0; // переменная для хранения состояния кнопки //////////////// Регистры вашего Slave /////////////////// enum < //Просто добавьте или удалите регистры. Первый регистр начинается по адресу 0 slave_to_master_val_1, // с адресом массива 0 slave_to_master_val_2, // с адресом массива 1 master_to_slave_val_1, // с адресом массива 2 master_to_slave_val_2, // с адресом массива 3 HOLDING_REGS_SIZE // Это не удалять размер массива HOLDING_REGS. //общее количество регистров для функции 3 и 16 разделяет тотже самый массив регистров //т.е. то же самое адресное пространство >; unsigned int holdingRegs[HOLDING_REGS_SIZE]; // функции 3 и 16 массив регистров //////////////////////////////////////////////////////////// void setup() < // инициализируем пин, подключенный к кнопке, как вход pinMode(buttonPin, INPUT); /* parameters(HardwareSerial* SerialPort,long baudrate,unsigned char byteFormat,unsigned char ID, unsigned char transmit enable pin,unsigned int holding registers size,unsigned int* holding register array) SERIAL_8N2: 1 start bit, 8 data bits, 2 stop bits SERIAL_8E1: 1 start bit, 8 data bits, 1 Even parity bit, 1 stop bit SERIAL_8O1: 1 start bit, 8 data bits, 1 Odd parity bit, 1 stop bit SERIAL_8N1 option */ modbus_configure( modbus_update_comms(baud, SERIAL_8N1, 1); pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); >// конец void setup() void loop() < int temp; // считываем значения с входа кнопки buttonState = digitalRead(buttonPin); // проверяем нажата ли кнопка // если нажата, то buttonState будет HIGH: if (buttonState == HIGH)else //if (temp == 255)else modbus_update(); // запуск обмена по Modbus holdingRegs[slave_to_master_val_1] = analogRead(A0); // запись данных slave-master // (регистр 0), значение из аналогового входа 0. holdingRegs[slave_to_master_val_2] = temp; // запись данных slave-master // (регистр 1), запись значения переменной temp. по нажатию кнопки. // чтение данных master-slave (регистр 2) if (holdingRegs[master_to_slave_val_1] == 255)else // если пришло 255 зажигаем светодиод analogWrite(LED2, holdingRegs[master_to_slave_val_2]>>2); // чтение данных master-slave (регистр 3) // (ограничеть количесво бит данных числом 255), прочитаное значение выводим шимом на аналоговый выход pin9 >// конец void loop() /* Использование enum инструкции не обязательно. Вы могли установить допустимый максимум размер для holdinRegs [], определяя HOLDING_REGS_SIZE, используя константу и затем доступ holdingRegs[] обращением по «Index» массива. holdingRegs[0] = analogRead(A0); analogWrite(LED, holdingRegs[1]/4); holdingRegs[ADC_VAL] = 250; // данные об обновлении, которые будут прочитаны владельцем, чтобы приспособить PWM ШИМ analogWrite(LED, holdingRegs[PWM_VAL]>>2); // ограничьте АЦП arduino значением 255 holdingRegs[ADC_VAL] = holdingRegs[PWM_VAL]; */

Вот ссылка на библиотеку Modbus TCP я ее кстати прокоментировал но версию с коментариями позже найду и выложу пока в оригенале

#include #include #include «Mudbus.h» Mudbus Mb; //#define DEBUG uint8_t temp; //Function codes 1(read coils), 3(read registers), 5(write coil), 6(write register) //signed int Mb.R[0 to 125] and bool Mb.C[0 to 128] MB_N_R MB_N_C //Port 502 (defined in Mudbus.h) MB_PORT void setup() < uint8_t mac[] = < 0x90, 0xA2, 0xDA, 0x00, 0x51, 0x06 >; uint8_t ip[] = < 192, 168, 1, 10 >; uint8_t gateway[] = < 192, 168, 1, 2 >; uint8_t subnet[] = < 255, 255, 255, 0 >; Ethernet.begin(mac, ip, gateway, subnet); //Avoid pins 4,10,11,12,13 when using ethernet shield delay(1000); Serial.begin(9600); pinMode(8, OUTPUT); > void loop() < Mb.Run(); Mb.R[0] = 250; Mb.R[1] = 251; Mb.R[2] = 252; Mb.R[3] = 253; Mb.R[4] = 254; Mb.R[5] = 255; if (Mb.Fc_rtu == 3) < // Serial.print(Mb.Message_length_rtu, DEC); // Message length длина посылки в байтах Serial.print(» «); Serial.print(Mb.Slave_rtu, DEC); // Slave number Ид номер Слейв устройсва Serial.print(» «); Serial.print(Mb.Start_rtu, DEC); // Start address адресc регистра Serial.print(» «); Serial.print(Mb.Fc_rtu, DEC); // Function code код функции модбас Serial.print(» «); Serial.print(Mb.Length_rtu, DEC); // Length количесво опрашиваемых регистров Serial.print(» «); Serial.println(); // Mb.Message_length_rtu; // Message length длина посылки в байтах // Mb.Slave_rtu; // Ид номер Слейв устройсва // Mb.Start_rtu; // Start address адресc Стартового регистра // Mb.Fc_rtu; // код функции модбус // Mb.Length_rtu; // Length количесво опрашиваемых регистров >Mb.Fc_rtu = 0; >

позже добавлю еще про ардуино модбус мастер и модуль ввода как slave устройсво

небольшую статеечку окультурить нужно

Источник: arduino.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru