FLProg
Вход на сайт
Логин:
Пароль:
Мы в VK
Поиск
Статистика


Яндекс.Метрика
Понедельник, 05.12.2016, 07:26
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход

Поиск по сайту


Форум
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 212»
Модератор форума: support, Сергей 
Форум » Основной » Обсуждение программы FLProg (Не багтрекер, и не хотелки. Делимся опытом!!) » "Первые шаги" (Начинаем программировать на FLProg)
"Первые шаги"
VirSpy
Дата: Четверг, 31.12.2015, 01:41 | Сообщение # 1
Сержант
Группа: Проверенные
Сообщений: 55
Награды: 3
Репутация: 0
Статус: Offline
На сколько понимаю эта тема важная и начать ее некому. Поэтому позвольте мне. Буду приводить примеры на плате Uno (ATmega328), язык - FBD. (если нужны разъяснения по выбору(смене) платы, распиновке, прошивке и внешнего подключения - спрашивайте, объясню)
Урок 1.
Начнем с простого примера - мигание светодиодом (подключенным к D13). Собираем следующую "программу" - Led1.

Здесь видим (слева-направо, сверху-вниз): генератор - выход D13 (встроенный led). На входе генератора - константа "1", заставляющая его постоянно работать. Сам генератор сконфигурирован как Симметричный мультивибратор ("1" и "0" одинаковой продолжительностью времени) на Константу в 500 миллисекунд (0,5 сек.).
Константу можно задать и с внешнего входа (прим. Led2).

Изменяя ее можем получить мигание с разной частотой.
В случае Несиметричного мультивибратора будем иметь разные временные диапазоны как для "1", так и для "0" (прим. Led3).

Ну а Одновибратор просто дает "1" на определенное время

(15 сек. моргает светодиод с соотношением 5 к 1. (Перезапустить программу можно при нажатии кнопки Reset). прим.Led4).

На этом вроде все. Ждите второго урока (будем подрубать кнопку).
Прикрепления: Led1.flp(34Kb) · Led2.flp(36Kb) · Led3.flp(38Kb) · Led4.flp(47Kb)


Сообщение отредактировал VirSpy - Воскресенье, 03.01.2016, 20:23
 
Airis Дата: Четверг, 31.12.2015, 10:59 | Сообщение # 2
Майор
Группа: Проверенные
Сообщений: 135
Награды: 4
Репутация: 10
Статус: Offline
Цитата VirSpy ()
На сколько понимаю эта тема важная и начать ее некому.
Тут есть целый раздел "Видео уроки" от автора программы, где очень наглядно разъяснено как работатьс самой программой, и как использовать ту или иную функцию.

Хотя, возможно для совсем новичков нужны объяснение самых азов работы сFBD и LAD. У меня уже был опыт работы с Siemens LOGO! (самостоятельно изучал LAD), и рисованию релейных и булевых схем.


Сообщение отредактировал Airis - Четверг, 31.12.2015, 11:20
 
DWD Дата: Четверг, 31.12.2015, 11:23 | Сообщение # 3
Подполковник
Группа: Проверенные
Сообщений: 279
Награды: 12
Репутация: 5
Статус: Offline
Но если тема не заглохнет а будет продолжаться с постепенно усложняющимися задачками, то получится не плохой хелр...

Дело в том, что с видеоурока трудно вытянуть один интересущий вопрос, в то время как в тексте достаточно задать поисковую фразу.

Для новичков самое то.


 
AlexRyzh Дата: Четверг, 31.12.2015, 13:08 | Сообщение # 4
Лейтенант
Группа: Проверенные
Сообщений: 107
Награды: 1
Репутация: 0
Статус: Offline
Огромное спасибо за энтузиазм. Возможно Ваши уроки будут вполне полезны, если Вы отнесетесь к ним как профессиональный преподаватель, учитывая, что ученик абсолютно не сведом в том, чему Вы будете учить.
Как принято в обучении на программировании в ИДЕ на Ардуино, первый урок это включить диод на пине 13, чтоб постоянно горел. Потом мигание и так далее.
Я бы хотел видеть урок немного иначе, т.к. очень важно понять почему в ФЛП используем именно гениратор (или еще что), с кратким (но понятным) описанием самой схемы подключения на плате. Да, не сложно повторить ваш урок1, соединить гениратор с диодом, откомпелировать. Подключить к Ардуино светодиод и он будет ... а дальше по уроку не понятно, светить или все же мигать. У Вас написано "На входе генератора - константа "1", заставляющая его постоянно работать. " и тут же написано... "Сам генератор сконфигурирован как Симметричный мультивибратор ("1" и "0" одинаковой продолжительностью времени) на Константу в 500 миллисекунд (0,5 сек.)." Так все таки будет гореть или мигать благодаря встроенному мультивибратору?
Т.к. подобный урок для абсолютных новичков в этой программе, поэтому нужно для понимания более детально описывать применяемые инструменты, целесообразность их применения в данной ситуации и как проходит реализация. 
Например: Урок №1 - зажигаем светодиод на пине 13
Задача
- зажечь светодиод на пине 13 чтоб он постоянно светил.
Пример реализации на языке Ардуино IDE:

void setup() {                 // Инициализируем цифровой вход/выход в режиме выхода.  // Выход 13 на большинстве плат Arduino подключен к светодиоду на плате.  pinMode(13, OUTPUT);   } void loop() {  digitalWrite(13, HIGH);   // зажигаем светодиод}
Результат работы кода - светодиод постоянно горит.
Пример реализации на FLP: led1.flp (пример для скачивания)

Добавлено (31.12.2015, 13:04)
---------------------------------------------
Пояснения к примеру: 
1. Создаем светодиод:

     Т.к. светодиод это управляемый элемент, он будет реагировать на ВЫХОДНОЙ сигнал Ардуины, поэтому его назначаем во вкладке "Выходы"
    Во вкладке Tags в группе "Выходы"  создаем выход с названием "светодиод", перетаскиваем на плату.
    Далее, светодиод нужно зажечь. Для этого нужен входной сигнал, создаем во вкладке "Входы" входной сигнал на пине 1. Чтобы установить на пине 1 единицу (+5В), нужно поставить галочку "Включить подтягивающий резистор". Как установить состояние в ноль - я не знаю. Если не включать подтягивающий резистор, то происходит только назначение пина как цифрового без указания его состояния (0 или 1). Каким будет состояние пина в случае без подтягивающего резистора? Почему оно будет таким и всегда ли оно будет таким?
Созданный вход перетаскиваем на плату и соединяем со светодиодом. Компилируем. Получаем код.

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

void setup()
{
pinMode(1, INPUT); //назначение пина 1 вход
digitalWrite(1, HIGH); // устанавливаем пин 1 в единицу (+5В)
pinMode(13, OUTPUT); //пин 13 назначаем на выход (куда будет подключен диод)

}
void loop()
{

digitalWrite(13,  (digitalRead (1))); // состояние пина 13 зависит от состояния пина 1. Т.к. пин 1 установлен в единицу, то на 13 пине так же будет единица и диод будет светиться.

}

В таком духе продолжить и объяснения с мигающим светодиодом. Кроме того по мигающему светодиоду можно сделать несколько вариантов (хотя бы 2), т.к. светодиод может мигать с помощью задержки программы (delay(500);) и как- привязать к зависимости от времени в цикле программы (если возможно).
Возможно в программе это можно реализовать еще проще. Не думаю, что зажечь светодиод программа вынуждает занять 2 пина. Наверняка есть какой-то другой подход. Но я не знаю как это сделать проще, используя только пин 13.
Еще раз повторюсь, Вы не должны забывать, что данный пост могут читать только абсолютные новички, своего рода первоклашки в работе с программой FLP, поясняя каждый элемент, почему используется именно этот элемент или какой еще можно использовать для решения поставленной задачи. Поэтому излишнее разжевывать пойдет только в пользу знаниям. (Если Вы действительно хотите помочь создателю программы и дать какие-то знания страждущим).
Кроме этого хочу сказать, что избавления от большой писанины, такие уроки лучше делать видео. Писать придется намного меньше, да и наглядность действий  воспринимается в разы эффективнее.
Извините, что возможно покажусь занудой, но уверен, что таких новичков как я много и все хотят не просто повторить Ваши действия, а ПОНЯТЬ! суть происходящего.

Что касается программы FLP, думаю она эффективна при совместном понимании построения в программе и полученного кода.
Т.к. основу кода можно создать в FLP, а доводку сделать уже в ИДЕ компиляторе.

Вот мигание светодиода написанное для ИДЕ: Реализовано ожиданием программы.
/*  Зажигаем светодиод на одну секунду, затем выключаем его на    одну  секунду в цикле. */ void setup() {                 // Инициализируем цифровой вход/выход в режиме выхода.  // Выход 13 на большинстве плат Arduino подключен к светодиоду на плате.  pinMode(13, OUTPUT);   } void loop() {  digitalWrite(13, HIGH);   // зажигаем светодиод  delay(1000);              // ждем секунду  digitalWrite(13, LOW);    // выключаем светодиод  delay(1000);              // ждем секунду}
Вот мигание из урока 2. Видимо реализовано по времени. Хотелось бы хотя бы на таких простейших примерах видеть комментарии к полученному коду.
bool _gen1I = 0;
bool _gen1O = 0;
unsigned long _gen1P = 0UL;
void setup()
{
pinMode(13, OUTPUT);

}
void loop()
{

if (1) { if (! _gen1I) { _gen1I = 1;
_gen1O = 1;
_gen1P = millis(); 
} } else { _gen1I = 0 ; _gen1O= 0;
}
 if (_gen1I) {  if ( _isTimer ( _gen1P , 500 )) { _gen1P = millis();
_gen1O = ! _gen1O;
}}
digitalWrite(13, _gen1O);

}
bool _isTimer(unsigned long startTime, unsigned long period )
  {
  unsigned long currentTime;
currentTime = millis();
if (currentTime>= startTime) {return (currentTime>=(startTime + period));
} else {return (currentTime >=(4294967295-startTime+period));
}
  }

Добавлено (31.12.2015, 13:08)
---------------------------------------------

Цитата VirSpy ()
Тут есть целый раздел "Видео уроки" от автора программы, где очень наглядно разъяснено как работатьс самой программой, и как использовать ту или иную функцию.
Да, видеоуроки хороши, но более-менее продвинутых. Нет начального понимания программы - нет понимания уроков от автора sad
 
Олег Дата: Четверг, 31.12.2015, 15:43 | Сообщение # 5
Гуру
Группа: Проверенные
Сообщений: 722
Награды: 20
Репутация: 15
Статус: Offline
Цитата AlexRyzh ()
Так все таки будет гореть или мигать благодаря встроенному мультивибратору?
А вам диаграммы работы генератора из хелпа совсем не понятны?
Если так, то тогда для совсем начинающих нужно более разжеванное описание работы каждого элемента, а когда с элементами знаком, тогда и так придет понятие что использовать в данном случае - генератор, таймер или еще что нибудь.
 
VirSpy Дата: Пятница, 01.01.2016, 03:34 | Сообщение # 6
Сержант
Группа: Проверенные
Сообщений: 55
Награды: 3
Репутация: 0
Статус: Offline
To AlexRyzh
Тяжело ответить сразу на такое количество вопросов. По порядку:
    На чем писать.
FlProg создовалась как раз для того, что бы не вникая в код можно было писать программы. Это как : сижу в баре, заказал пиво.один бармен принес мне свежеваренное, другой - бутилированное. Результат почти одинаковый, а производство разное. Так и здесь. Мы "рисуем" программу, далее, по законам автора, она преобразуется в конечный код, который и прошивается. И не стоит путать с кодом, написанным на Си.
 
VirSpy Дата: Пятница, 01.01.2016, 04:04 | Сообщение # 7
Сержант
Группа: Проверенные
Сообщений: 55
Награды: 3
Репутация: 0
Статус: Offline
    Создание "макета"
Для создании любого устройства, нужны не только знании программирования, основную роль играет проектирование схемы (а тем паче электрической принципиальной), а так же пригодиться навык пояния.
Дополнение к Уроку1
Вопрос-
""Задача - зажечь светодиод на пине 13 чтоб он постоянно светил.
Пример реализации на языке Ардуино IDE:

void setup() {                 // Инициализируем цифровой вход/выход в режиме выхода.
// Выход 13 на большинстве плат Arduino подключен к светодиоду на плате.
pinMode(13, OUTPUT);
} void loop() {
digitalWrite(13, HIGH);   // зажигаем светодиод}""

проще простого - на входе выхода задаем еденицу.

(с условием, что диод подключен на "землю") прим. Led5
Прикрепления: Led5.flp(28Kb)


Сообщение отредактировал VirSpy - Воскресенье, 03.01.2016, 20:24
 
kipiaxxx Дата: Пятница, 01.01.2016, 12:08 | Сообщение # 8
Сержант
Группа: Проверенные
Сообщений: 40
Награды: 3
Репутация: 1
Статус: Offline
Спасибо, VirSpy, за инициативу в подготовке уроков!
У многих не всегда есть возможность оперативно посмотреть учебные файлы Led1.flp, Led2.flp..... 
Просьба, скриншоты "схем" разместить непосредственно в тексте урока, так будет нагляднее.
 
AlexRyzh Дата: Пятница, 01.01.2016, 12:55 | Сообщение # 9
Лейтенант
Группа: Проверенные
Сообщений: 107
Награды: 1
Репутация: 0
Статус: Offline
Цитата Олег ()
FlProg создовалась как раз для того, что бы не вникая в код можно было писать программы.
Думаю это не совсем так, иначе компиляция была бы реализована по другому. Но в ФЛП после сборки плат вызывается ИДЕ компилятор, где полученный код можно посмотреть, оценить, поправить, добавить...  и только потом компилировать в ХЕКС
Цитата Олег ()
И не стоит путать с кодом, написанным на Си.

Согласен, путать не стоит, но он особо не отличается, и зная (понимая) Си и ИДЕ можно что-то в коде добавить (изменить).... и спользуя один из языков. Что очень удобно. Это может пригодиться при отладке своей сборки. Например допустили ошибку при сборке в ФЛП и какое-то из устройств не так ведет себя в определенных условиях. И вот сопоставляя с кодом, иногда можно быстрее обнаружить ошибку параметра.
Цитата VirSpy ()
Для создании любого устройства, нужны не только знании программирования, основную роль играет проектирование схемы (а тем паче электрической принципиальной), а так же пригодиться навык пояния.
Ну это однозначно, и требования эти не только к программе ФЛП, а вообще к конструирования на Ардуино. 
Цитата VirSpy ()
проще простого - на входе выхода задаем еденицу. (с условием, что диод подключен на "землю") прим. Led5
А вот это как раз то что нужно!!! Это пример дает понятие применения простейших действий, без которых дальше никак. И без этого понятия уроки 2, 3,... становятся не понятными.
Еще раз спасибо за инициативу по созданию уроков

Добавлено (01.01.2016, 12:55)
---------------------------------------------
И вопрос по возможностям программы: 
В программе можно реализовать любую задачу, которую можно реализовать в ИДЕ компиляторе? 
Реализовано как-то применение готовых библиотек для датчиков, часов и др. модулей?
Развернутый ответ не нужен, т.к. это рано туда заглядывать. Просто да или нет.

 
kipiaxxx Дата: Пятница, 01.01.2016, 13:11 | Сообщение # 10
Сержант
Группа: Проверенные
Сообщений: 40
Награды: 3
Репутация: 1
Статус: Offline
Цитата AlexRyzh ()
И вопрос по возможностям программы: В программе можно реализовать любую задачу, которую можно реализовать в ИДЕ компиляторе?
 НЕТ.
В планах Автора - разработка пользовательских блоков с возможностью вставок на языке Си. Тогда возможности FLProg резко возрастут.

Цитата AlexRyzh ()
Реализовано как-то применение готовых библиотек для датчиков, часов и др. модулей?
ДА.
Не всех, конечно, но достаточно многих. Для начинающих хватит "за глаза".
 
AlexRyzh Дата: Пятница, 01.01.2016, 13:33 | Сообщение # 11
Лейтенант
Группа: Проверенные
Сообщений: 107
Награды: 1
Репутация: 0
Статус: Offline
Лишь после урока5 в голове все стало на свои места. Пересмотрел уроки 1,2,3,... теперь все понятно стало как, что и для чего реализуется...
Жду следующий урок, как обещали, "Подрубаем кнопку".
Спс.
 
VirSpy Дата: Воскресенье, 03.01.2016, 14:47 | Сообщение # 12
Сержант
Группа: Проверенные
Сообщений: 55
Награды: 3
Репутация: 0
Статус: Offline
Для второго урока мне пригодилась платка управления от какого-то старого принтера на которой есть три кнопки и три светодиода.

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

Схемотехнически все кнопки  "замыкают на землю", однако на кнопке3 дополнительно припаян подтягивающий резистор, светодиоды - через токоограничительные резисторы на "землю".
И так: Урок 2.
Простой индикатор нажатия кнопки.

прим.Key1.( при нажатии кнопки - загорается встроенный светодиод). Усложним, добавив второй (он же будет первым внешним):

прим.Key2. (при первом нажатии кнопки загорается Led1, при втором - тушится. Светодиод на плате показывает когда нажата кнопка).
Заставим второй светодиод зажигаться на определенное время.

Ну и для красоты разобьем третий пример (Key3) на платы.
Прикрепления: Key1.flp(35Kb) · Key2.flp(43Kb) · Key3.flp(89Kb)


Сообщение отредактировал VirSpy - Воскресенье, 03.01.2016, 20:25
 
stvor Дата: Суббота, 09.01.2016, 05:38 | Сообщение # 13
Рядовой
Группа: Пользователи
Сообщений: 1
Награды: 0
Репутация: 0
Статус: Offline
Всем добрый день!
Почему бы не создать новый раздел "Уроки" по данной теме ?
Возможно даже продублировать раздел "Видео уроки".
Таким образом, не придется утомительно разглядывать что там изображено в диалоговом окне примера и работать кнопками в старт-стопном режиме.
 
kipiaxxx Дата: Суббота, 09.01.2016, 17:35 | Сообщение # 14
Сержант
Группа: Проверенные
Сообщений: 40
Награды: 3
Репутация: 1
Статус: Offline
Программируемые логические контроллеры: практическое руководство для начинающего инженера
И.Г. Минаев, В.В. Самойленко. - Ставрополь: АГРУС, 2009. - 100 с.

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

Скачать здесь:
http://publ.lib.ru/ARCHIVE....tml#001

Содержание:


Сообщение отредактировал kipiaxxx - Суббота, 09.01.2016, 17:36
 
VirSpy Дата: Среда, 24.02.2016, 19:48 | Сообщение # 15
Сержант
Группа: Проверенные
Сообщений: 55
Награды: 3
Репутация: 0
Статус: Offline
Урок N. Подключение аналог.джойстика.

Аналог. клавиатура


Сообщение отредактировал VirSpy - Воскресенье, 28.02.2016, 20:55
 
Форум » Основной » Обсуждение программы FLProg (Не багтрекер, и не хотелки. Делимся опытом!!) » "Первые шаги" (Начинаем программировать на FLProg)
Страница 1 из 212»
Поиск:

FLProg © 2016
Яндекс.Метрика