5.01M
Category: electronicselectronics

Программируемый логический контроллер

1.

2.

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

3.

Языки программирования ПЛК
IL
Instruction List
Ассемблероподобный язык
C-YART
Си-подобный язык
02
Текстовые
ST
Structured Text
Паскалеподобный язык

4.

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

5.

Язык программирования Arduino
Язык программирования Arduino является реализацией Wiring,
схожей платформы для «physical computing», основанной на
мультимедийной среде программирования Processing.
physical computing – это подход к изучению общения в системе
человек-компьютер-компьютер-человек,
в
основе
которого
лежит
попытка
понимания
способов
физического самовыражения людей.
Processing позволяет очень быстро создавать визуальные
интерактивные интерфейсы пользователей и представляет
собой программное приложение, которое позволяет
создавать, изменять, компилировать и запускать Java-код.

6.

Среда разработки
Выбор платы
Выбор COM-порта
Прошивка

7.

Популярность платформы
Низкий порог входа в мир микроконтроллеров
Большое разнообразие плат, в том числе наличие мини плат и
двух версий носимых плат : LilyPad и Seeeduino Film
Кроссплатформенность среды раработки. Переносимость кода
для различных плат Arduino.
Отсутствие необходимости в программаторе
– почти все платы имеют USB разъем
Отсутствие необходимости в пайке
– Макет схемы можно собрать на беспаячной плате
Open Source САПР системы для создания схем с платами
Arduino
– кроссплатформенные
– бесплатные
Язык программирования C/C++

8.

Плата Arduino Uno
СВЕТОДИОД НА
ВЫВОДЕ №13
ЗЕМЛЯ
ЦИФРОВЫЕ ВЫВОДЫ (ШИМ ~)
РАЗЪЕМ USB

КНОПКА
ПЕРЕЗАГРУЗКИ
КВАРЦЕВЫЙ
РЕЗОНАТОР 16 МГц
МК
ATmega328
РАЗЪЕМ ПИТАНИЯ 7-12В
ЦЕНТР +
ВЫХОД
3.3В + ВЫХОД
5В +
АНАЛОГОВЫЕ ВХОДЫ
ЗЕМЛЯ
ВХОД +

9.

Плата Arduino Uno. Питание
Выводы питания:
• VIN. Вход используется для подачи питания от внешнего
источника (в отсутствие 5 В от разъема USB или другого
регулируемого источника питания). Подача напряжения
питания происходит через данный вывод.
• 5V. Регулируемый источник напряжения, используемый для
питания микроконтроллера и компонентов на плате.
Питание может подаваться от вывода VIN через регулятор
напряжения, или от разъема USB, или другого
регулируемого источника напряжения 5 В.
• 3V3. Напряжение на выводе 3.3 В генерируемое
встроенным регулятором на плате. Максимальное
потребление тока 50 мА.
• GND. Выводы заземления.

10.

Плата Arduino Uno. Контакты
ШИМ: 3, 5, 6, 9, 10, и 11. Любой из выводов обеспечивает ШИМ с
разрешением 8 бит при помощи функции analogWrite().
ШИМ: 2, 3. Данные выводы могут быть сконфигурированы на вызов
прерывания .
SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Посредством данных
выводов осуществляется связь SPI, для чего используется библиотека
SPI.
LED: 13. Встроенный светодиод, подключенный к цифровому выводу
13. Если значение на выводе имеет высокий потенциал, то светодиод
горит.

11.

Плата Arduino Uno. Контакты
6 аналоговых входов (обозначенных как A0 .. A5), каждый
разрешением 10 бит (т.е. может принимать 1024 различных
значения). Некоторые выводы имеют дополнительные функции:
I2C: 4 (SDA) и 5 (SCL). Посредством выводов
осуществляется связь I2C (TWI), для создания которой
используется библиотека Wire.
Дополнительная пара выводов платформы:
• AREF. Опорное напряжение для аналоговых входов. Используется с
функцией analogReference().
• Reset. Низкий уровень сигнала на выводе перезагружает
микроконтроллер. Обычно применяется для подключения кнопки
перезагрузки на плате расширения, закрывающей доступ к кнопке на
самой плате Arduino.

12.

Hello, world!
План действий
– Предложить схему для мигания светодиодом
– Написать скетч, моделирующий поведение
мигающего светодиода
– Скомпилировать программу
– Загрузить программу в Arduino
– Верифицировать код
Светодиод мигает = Программа выполняется

13.

Предполетная подготовка
Принципиальная схема
Задача
Разработать программный код
системы управления источником
света.
В
соответствии
требованием
Источник
света
(светодиод)
должен включатся один раз в две
секунды на одну секунду

14.

Предполетная подготовка

15.

Особенности реализации схемы
Характеристики диода:
• Тип корпуса
• Угол рассеивания, градусы
• Типовой (рабочий) ток, А
• Падение (рабочее) напряжения, В
• Цвет свечения (длина волны), нм
Пример:

16.

Arduino. Первый код
/*Один раз в две секунды включает
Светодиод на секунду*/
//Инициализация
void setup()
{
pinMode(13, OUTPUT);
}
//Бесконечный цикл
void loop()
{
digitalWrite(13, HIGH);
delay(1000); // Подождать 1000 мс (1 c)
digitalWrite(13, LOW);
delay(1000); // Подождать 1000 мс (1 c)
}

17.

Основы языка программирования

18.

Особенности языка программирования
Тип возвращаемого значения
(void – если ничего не возвращается
Имя
функции
Объявление
переменной
типа int
Прекращение
выполнения функции и
возврат значения типа int
Параметры
функции и их
тип
Инициализация
переменной
значением
Оператор
присвоения

19.

Основы языка программирования

20.

Разбор полета
/*Один раз в две секунды включает
Светодиод на секунду*/
//Инициализация
void setup()
{
pinMode(13, OUTPUT);
}
Недостаток: любое изменение в
подключении активного элемента
требует исправлений в программном
коде в нескольких местах
Решение:
введем
глобальную
переменную, хранящую номер
пина
//Бесконечный цикл
void loop()
{
digitalWrite(13, HIGH);
delay(1000); // Подождать 1000 мс (1 c)
digitalWrite(13, LOW);
delay(1000); // Подождать 1000 мс (1 c)
}

21.

Основы языка программирования

22.

Разбор полета
/*Один раз в две секунды включает Светодиод на секунду*/
int pinLed = 13; // глобальная переменная для хранения номера пина на вывод
//Инициализация
void setup()
{
pinMode(pinLed , OUTPUT);
}
Недостаток:
слишком
много
дублированного кода внутри цикла
Решение:
введем
глобальную
переменную, хранящую текущее
значение напряжения
//Бесконечный цикл
void loop()
{
digitalWrite(pinLed , HIGH);
delay(1000); // Подождать 1000 мс (1 c)
digitalWrite(pinLed , LOW);
delay(1000); // Подождать 1000 мс (1 c)
}

23.

Разбор полета
/*Один раз в две секунды включает Светодиод на секунду*/
int pinLed = 13; // глобальная переменная для хранения номера пина на вывод
boolean stateLed = HIGH; // глобальная переменная состояния светодиода
//Инициализация
void setup()
{
pinMode(pinLed , OUTPUT);
}
Недостаток: задержка внутри цикла
delay(1000)
Решение:
другое
использовать
//Бесконечный цикл
void loop()
{
stateLed = !stateLed ; // изменить состояние на противоположное
digitalWrite(pinLed , stateLed);
delay(1000); // Подождать 1000 мс (1 c)
}
что-то

24.

Базовые операторы

25.

Разбор полета

26.

Разбор полета
/*Один раз в две секунды включает Светодиод на секунду*/
int pinLed = 13; // глобальная переменная для хранения номера пина на вывод
boolean stateLed = HIGH; // глобальная переменная состояния светодиода
long timeLastCh = 0; // глобальная переменная для хранения последнего времени
// изменения состояния
//Инициализация
void setup()
{
pinMode(pinLed , OUTPUT);
}
//Бесконечный цикл
void loop()
{
long timeCurrent = millis();
if ( timeCurrent - timeLastCh > 1000) {
timeLastCh = timeCurrent; //
stateLed = !stateLed ; // изменить состояние на противоположное
digitalWrite(pinLed , stateLed);}
}

27.

А здесь можно посмотреть по подробнее
Болл
Стюарт
Р.
Аналоговые
интерфейсы
микроконтроллеров – М.: Издательский дом “ДодэкаXXI”, 2007. – с. 119
http://Arduino.cc
http://Arduino.ru
http://easyelectronics.ru/osnovy-na-palcax-chast-4.html
http://web.media.mit.edu/~leah/LilyPad/build/turn_signal
_jacket.html
http://sparkfun.com
http://www.seeedstudio.com/
English     Русский Rules