FLProg
Вход на сайт
Логин:
Пароль:
Поиск
...
Статистика
Суббота, 16.12.2017, 02:32
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход

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


Форум
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: support, Сергей, Олег, Anydy 
Форум » Основной » Спросить у знатоков » преобразование кода в flprog (преобразование кода в flprog)
преобразование кода в flprog
yura174 Дата: Вторник, 11.04.2017, 22:28 | Сообщение # 1
Рядовой
Группа: Проверенные
Сообщений: 15
Награды: 0
Репутация: 0
Статус: Offline
// Термостат, до пяти датчиков DS18B20.
Здравствуйте помогите преобразовать для чтения в flprog


Сообщение отредактировал yura174 - Вторник, 11.04.2017, 22:30
 
slavas Дата: Вторник, 11.04.2017, 22:47 | Сообщение # 2
Генерал-майор
Группа: Проверенные
Сообщений: 567
Награды: 16
Репутация: 13
Статус: Offline
Зачем? Если хотите использовать этот код запихайте его в пользовательский блок.
 
yura174 Дата: Вторник, 11.04.2017, 23:27 | Сообщение # 3
Рядовой
Группа: Проверенные
Сообщений: 15
Награды: 0
Репутация: 0
Статус: Offline
Мне его доработать под себя надо.
 
slavas Дата: Вторник, 11.04.2017, 23:47 | Сообщение # 4
Генерал-майор
Группа: Проверенные
Сообщений: 567
Награды: 16
Репутация: 13
Статус: Offline
Так не проблема, что доработать?  Порты поменять?

Добавлено (11.04.2017, 23:47)
---------------------------------------------
Редко такое написание кода увидишь.

 
trak Дата: Четверг, 13.04.2017, 20:59 | Сообщение # 5
Лейтенант
Группа: Проверенные
Сообщений: 97
Награды: 3
Репутация: 1
Статус: Offline
Цитата yura174 ()
Здравствуйте помогите преобразовать для чтения в flprog
Проще новую написать , чем дорабатывать. Я пользовался этим скетчем , тоже хотел доработать.Потом наткнулся в инете на flprog посидел немного , поразбирался и написал то что удовлетворит моим желания.Кстати люди здесь на форуме очень отзывчивые.Вы начните а вам помогут.
 
CraCk Дата: Понедельник, 09.10.2017, 00:29 | Сообщение # 6
Полковник
Группа: Проверенные
Сообщений: 344
Награды: 2
Репутация: 3
Статус: Offline
Здравствуйте.
Решил не создавать новую тему и не мусорить. Нужна ваша помощь. В переносе С кода в Flprog. Тема автоматика для ТТ котла. Есть скетч в С работает не плохо. Но хочу редактировать его под себя. Есть очень много лишнего. По этому. Разбираю алгоритм работы автоматики и небольшими кусками создаю в Flprog. В коде С разбираюсь на уровне лузера. Практически все нужное перенес. Осталась одна нерешаемая проблема для меня. ПИД управление и режим работы заслонки серводвигателя относительно заданных значений ПИД регулятора.
В коде есть описание как должно работать ПИД регулирование и сервопривод. Но я немогу сообразить как это отобразить блоками в Flprog. Можете даже не рисовать блоки а только описать логику кода. А я уже сам попробую собрать в блоки.

************* Пид регулятор*********************

// Настройка пид
Input=temp1-2;
Setpoint=setTmp7;
//работа пид регулятора

myPID.Compute();

z=map(Output,0,255,z4,z5); //0-закрыто, 90- открыто.

if(pusk==HIGH&&pauza==LOW){
if(temp2>=setTmp8&&(temp2<=setTmp9)){z6=z;}
if(temp2<setTmp8){z3=setTmp8-temp2; z6=z+z3; }
if(temp2>setTmp9){z3=temp2-setTmp9; z6=z-z3; }
if(z1>=z5){z6=z5;}
if(z1<=z4){z6=z4;}
z1=((z6-z1)/5)+z1;
}
else{z1=0;}
if(avaria1==HIGH){z1=0;}            //закрываем заслонку по аварии датчика теплоносителя
if(avaria==HIGH){z1=0;}             //закрываем заслонку по общей аварии

***** Управление сервоприводом заслонки************

// управляем работой заслонки
if(pusk==HIGH){if(z2!=z1){if(currentTime>=(time3+5000)){time3=currentTime;  myOS.restartScheduler();z2=z1;
stepe=map(z1,0,180,544,2400);delay_ms(500); myOS.haltScheduler();
Прикрепления: kotel.ino(29Kb)


Сообщение отредактировал CraCk - Понедельник, 09.10.2017, 00:32
 
Sancho Дата: Понедельник, 09.10.2017, 09:26 | Сообщение # 7
Генерал-майор
Группа: Проверенные
Сообщений: 582
Награды: 16
Репутация: 19
Статус: Offline
Примерно так, дальше сам. smile
Надеюсь, функции myPID.Compute(); myOS.restartScheduler(); myOS.haltScheduler(); реализовал пользовательскими блоками.
Прикрепления: Primer_1.flp(191Kb)


Если не получится на контроллере - сделаю на тразисторах и 155/176...
 
CraCk Дата: Понедельник, 09.10.2017, 23:14 | Сообщение # 8
Полковник
Группа: Проверенные
Сообщений: 344
Награды: 2
Репутация: 3
Статус: Offline
Цитата Sancho ()
Надеюсь, функции myPID.Compute(); myOS.restartScheduler(); myOS.haltScheduler();
А зачем? myPID.Compute() уже есть в версии 2,5,3. myOS можно заменит библиотекой servo? Не очень понимаю функции.


Сообщение отредактировал CraCk - Понедельник, 09.10.2017, 23:14
 
Sancho Дата: Вторник, 10.10.2017, 09:17 | Сообщение # 9
Генерал-майор
Группа: Проверенные
Сообщений: 582
Награды: 16
Репутация: 19
Статус: Offline
Цитата CraCk ()
Не очень понимаю функции
Это, по сути своей, маленькие подпрограммы(блоки). Они бывают пользовательские и библиотечные.
Пользовательские - в теле программы создаётся блок, void ИМЯ ФУНКЦИИ(блока)(аргументы) { алгоритм функции}. Затем, любом месте программы указываем ИМЯ ФУНКЦИИ(могут быть аргументы) и здесь произойдёт выполнение её алгоритма.
Библиотечные - объявляется сама библиотека(#include <LiquidCrystal_I2C.h>>), а затем её функциям присваиваются конкретные имена для самой программы - LiquidCrystal_I2C lcd(0x3f,20,4);.
Зная функции библ., даём команды
 lcd.init(); 
  lcd.backlight();
  lcd.setCursor(0, 0);
Всё остальное аналогично.
Что-бы воспользоваться сторонней библиотекой в FLProg, необходимо создать блок с включённой библиотекой и в его теле вызывать необходимые функции.
Пытался объяснить как понимаю сам. Не программист.


Если не получится на контроллере - сделаю на тразисторах и 155/176...
 
CraCk Дата: Пятница, 13.10.2017, 23:08 | Сообщение # 10
Полковник
Группа: Проверенные
Сообщений: 344
Награды: 2
Репутация: 3
Статус: Offline
С частю кода, расчет значение для управления заслонкой разобрался.
Но с управлением сервоприводом не идет. Там используется библиотека много многозадачности, и еще какой то  stepe=map(z1,0,180,544,2400). Не могу понять что здесь происходит и зачем еще время прилепили? Может рассчитанную переменную z1 просто напрямую подавать на вход сервопривода минуя этот кусок кода ?

***** Управление сервоприводом заслонки************
// управляем работой заслонки
if(pusk==HIGH){if(z2!=z1){if(currentTime>=(time3+5000)){time3=currentTime;  myOS.restartScheduler();z2=z1;
stepe=map(z1,0,180,544,2400);delay_ms(500); myOS.haltScheduler();


Сообщение отредактировал CraCk - Пятница, 13.10.2017, 23:08
 
Dev1 Дата: Суббота, 14.10.2017, 00:05 | Сообщение # 11
Генерал-лейтенант
Группа: Проверенные
Сообщений: 694
Награды: 13
Репутация: 18
Статус: Offline
Цитата CraCk ()
какой то  stepe=map(z1,0,180,544,2400). Не могу понять что здесь происходит
 
Пересчитывается угол поворота z1 из диапазона от 0 до 180 градусов, в длину импульса stepe от 544 до 2400. У разных серво длина импуса разная. 

Вам будет проще взять стандартный блок PID и блок SERVO. Пид настроить на выход 0-180 и получите угол. Как то так.
Прикрепления: 5415978.jpg(12Kb)


Win7/10-64 FLProg v3.0.2 external IDE 1.8.5

 
Форум » Основной » Спросить у знатоков » преобразование кода в flprog (преобразование кода в flprog)
Страница 1 из 11
Поиск:

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