Обсуждаем контроллеры компании Atmel.
Ответить

Re: Реализация Графического Языка Программирования

Пт янв 02, 2015 21:24:40

Изображение
Изображение

Re: Реализация Графического Языка Программирования

Пт янв 02, 2015 21:43:08

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

Re: Реализация Графического Языка Программирования

Пт янв 02, 2015 21:44:16

открываешь программу, обновляешь, перезагружаешь программу. работаешь.

Re: Реализация Графического Языка Программирования

Пт янв 02, 2015 21:50:37

ок.
было бы не плохо добавить полосу загрузки...

Re: Реализация Графического Языка Программирования

Пт янв 02, 2015 21:55:18

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

Re: Реализация Графического Языка Программирования

Пт янв 02, 2015 22:01:59

Если бы эта программа еще исходник выдавала :)))

Re: Реализация Графического Языка Программирования

Пт янв 02, 2015 22:25:16

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

Re: Реализация Графического Языка Программирования

Пт янв 02, 2015 23:12:36

не нашел.

Re: Реализация Графического Языка Программирования

Сб янв 03, 2015 05:51:16

При обновлении программа:
1. Скачивает update.xml, его можно посмотреть "меню -> параметры -> структура обновления".
2. Программа Configurator локально рассчитывает MD5 имеющихся файлов, определяет список файлов необходимых для загрузки. (вот здесь долго висит :( )
3. Скачивает необходимые файлы.

Re: Реализация Графического Языка Программирования

Сб янв 03, 2015 05:51:59

D.i.M.K.i.N. писал(а):Разобрался.
Обнова не проходит, если открыт проект.


Странно попробую.

Re: Реализация Графического Языка Программирования

Сб янв 03, 2015 05:54:26

Исходный код открыт: "меню над FBD блоком-> параметры -> исходный код блока".

Re: Реализация Графического Языка Программирования

Сб янв 03, 2015 18:52:36

Обновление программы:
http://horizontautomatics.ru/Configurator/index.php?id=update

Re: Реализация Графического Языка Программирования

Вт янв 06, 2015 17:44:50

Всех с Новым годом!!!

Просматриваю предыдущую работу "светофор":
Изображение

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

Блок будет работать следующим образом:
Изображение

Вероятно и размер прошивки в этом случае уменьшиться.

Re: Реализация Графического Языка Программирования

Вт янв 06, 2015 22:57:52

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

Re: Реализация Графического Языка Программирования

Ср янв 07, 2015 05:29:26

xkp писал(а):1. может есть смысл задуматься над универсальным генератором? а в его настройках уже делать что надо... пилу, синус, прямоугольник.
2. можно как то сделать что бы обязательные блоки, необходимые для других блоков, вносились в проект автоматически. например, береш блок "генератор" и автоматически в проекте появляется блок "счетчик миллисекунд".


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

2. Полностью согласен, пока не знаю как это реализовать.

Составил код, вышеприведенного блока:
Код:

#ifndef _FBD48_
#define _FBD48_ FBD48
#message define FBD48 generator pila
;Размер FBD блока
;1 байт  -вход                         //In
;2 байта - время прирощения            //параметры блока
;2 байта - минимальное значение        //параметры блока
;2 байта - максимальное значение       //параметры блока
;1 байт  -выход                        //Out
;Оперативная память:
;  2 байта - текущее значение
;  2 байта - отсечка времени

FBD48_run:
  ld    Uz3L, X+                                   ;текущее значение Lw
  ld    Uz3H, X+                                   ;текущее значение Hw
  ld    Uz1L, X+                                   ;отсечка времени Lw
  ld    Uz1H, X+                                   ;отсечка времени Hw
  sbiw  XL,   4                                    ;Возвращаем указатель

  rcall Read_cfg_Load_Uz2                          ;вход

  rcall Read_cfg                                   ;время прирощения  Lw
  mov   A, Addr_Data                               ;время прирощения  Lw
  rcall Read_cfg                                   ;время прирощения  Hg
  mov   B, Addr_Data                               ;время прирощения  Hg
 
  rcall Read_cfg                                   ;минимальное значение  Lw
  mov   C, Addr_Data                               ;минимальное значение  Lw
  rcall Read_cfg                                   ;минимальное значение  Hg
  mov   D, Addr_Data                               ;минимальное значение  Hg

  rcall Read_cfg                                   ;максимальное значение  Lw
  mov   E, Addr_Data                               ;максимальное значение  Lw
  rcall Read_cfg                                   ;максимальное значение  Hg
  mov   F, Addr_Data                               ;максимальное значение  Hg

//***************** Отслеживаем сигнал **********************
  sbrs Uz2L, 0               //Проверка состояния входа
  rjmp FBD48_clear

  rcall Timer_Diff           //Вычисляем разницу времени
  cp   ZL,  A                //Сраниваем
  cpc  ZH,  B                //Сраниваем
  brmi FBD46_end

//******************** Увеличение +1  ***********************
  add  Uz3L, One             //Uzl3=Uz3+1
  adc  Uz3H, Zero            //Uzl3=Uz3+1

//********** Сравниваем с максимальным **********************
  cp   E, Uz3L                //Сраниваем максимальное значением
  cpc  F, Uz3H                //Сраниваем максимальное значением
  brpl FBD48_cutoff_time


FBD48_clear:
  lds Uz3L, C                              //Минимальное состояние
  lds Uz3H, D                              //Минимальное состояние

FBD48_cutoff_time:
  lds Uz1L, TimerCounter0_DATA_RAM+1       //Отсечка времени
  lds Uz1H, TimerCounter0_DATA_RAM+2       //Отсечка времени

FBD46_end:
  st   X+,   Uz3L            //сохраняем
  st   X+,   Uz3H            //сохраняем
  st   X+,   Uz1L            //сохраняем
  st   X+,   Uz1H            //сохраняем
  rcall Read_cfg_Save_Uz3    //выводим состояние
  ret

FBD48:
 .db 8, 4            //Размер FBD блока, необходимая оперативная память
 .dw FBD48_run, Init_default


#else
 #error redeclared FBD48 __FILE__
#endif


Вечером буду отлаживать.

Re: Реализация Графического Языка Программирования

Ср янв 28, 2015 10:42:26

Добавил новый блок "RTRIG":
http://horizontautomatics.ru/FBD/index.php?help=trigger_TRIG
Пример работы:

Re: Реализация Графического Языка Программирования

Чт янв 29, 2015 10:18:06

Посмотрел видео.... :shock: :shock:
Это же нерационально решение! Все равно что ехать из Питера в Москву через Камчатку!
Зачем триггеры? Зачем логические элементы? Это же не ПЛИС! Данная задача решается элементарно через сдвиг и получится не только более быстрый и компактный код, но еще и намного нагляднее!

Re: Реализация Графического Языка Программирования

Чт янв 29, 2015 11:21:49

Система все более и более приближается к классической FBD системе, используемой в ПЛК.
Если именно к этому стремится автор, то я бы рекомендовал вместо генераторов пилы и т.п. наворотов использовать блоки типа "запускаемый/автономный/перезапускаемый таймер" или "одновибратор". Для примера "светофор" в этом случае потребовались бы 3 таймера и логические элементы синхронизации их работы.

Re: Реализация Графического Языка Программирования

Чт янв 29, 2015 16:21:34

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

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

Re: Реализация Графического Языка Программирования

Чт янв 29, 2015 16:26:09

ARV писал(а):Система все более и более приближается к классической FBD системе, используемой в ПЛК.
я бы рекомендовал вместо генераторов пилы и т.п. наворотов использовать блоки типа "запускаемый/автономный/перезапускаемый таймер" или "одновибратор".

Подробно описать блоки, сколько входов\выходов, внутренние свойства, логика работы. Блоков работы со временем у меня 4 штуки из которых 3 таймера.
Ответить