26

Re: Осваиваю Canny 5 Nano

ipsurin пишет:

обнаружилось, что у Canny нет классической оперативной памяти. Есть энергонезависимая память, но её не рекомендуется слишком часто дёргать.

Каждый коммутатор, каждый триггер  D-, RS-, SR- доступный вам программно, в его аппаратном виде является классическим элементом организации оперативной памяти большинства современных вычислительных платформ.

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

ipsurin пишет:

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

Подключайте, не вижу технических проблем. Однако, какую практическую цель вы планируете достичь таким образом?


Спасибо за поздравления и теплые пожелания! И вас с Новым годом! Всех благ!

27 (01-01-2016 23:57:53 отредактировано ipsurin)

Re: Осваиваю Canny 5 Nano

С Новым Годом.

Ни дня без Канни.

Пока разбираюсь сам.   Я в область современной электроники оказался недавно. Система команд CFD вызывает у меня восторг. (А от СИ болит голова). Очень удачно сделаны иконки. Подбор функциональных блоков очень удачный.. Решая практическую задачу необходимо во всём разобраться. Самому.

С оперативной памятью всё просто. Скажем, у меня есть integer i.  Я помещаю в это i некоторое значение и выдёргиваю это значение в произвольный момент..  Обычная практика программирования на неком языке программирования. Моим любимым языком была Симула-67. Привычка.  В Канни эта операция в чистом виде происходит через энергонезависимую память.  Вопрос только в ресурсе этой памяти... Сколько циклов записи-чтения может эта память выдержать..  Однако, попробую сделать оперативные ячейки памяти на триггерах.  Мысль дельная.

Аппетит, понятное дело, приходит со временем..   Мне очень понравилось делать надписи в схеме..  За это спасибо.

Ага.. Вчитался в триггера.. Это же готовые элементы оперативной памяти..  Интересно получается. Я эти триггера не проходил в школе. Осваиваю прямо с колёс сейчас.

Тут невольно встаёт вопрос о подпрограммах (классах) в Канни.. Чем каждый раз расписывать  одни и те же блоки, некоторые совокупности блоков неплохо хранить в виде некой библиотечной подпрограммы (классе).  С этим я столкнулся при выводе через Уарт.


Интересное сообщение то выходит то не выходит "Не удалось запустить симулятор".  Решение состоит в перезапуске КанниЛаба..

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

28

Re: Осваиваю Canny 5 Nano

И вас с Новым годом!

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

При обнаружении ошибке на диаграмме при переходе в симулятор, при сохранении или при попытке записи диаграммы в контроллер CANNY Lab выделяет вызвавшие ошибку элементы диаграммы.

Если есть возможность - перешлите на info@canny.ru диаграмму, вызывающую у вас ошибку CANNY Lab.

29

Re: Осваиваю Canny 5 Nano

Ошибка пока не проявляется.  Поймаю- вышлю.
Последнее время отложил написание приёмника RZ кода на Канни. Написал его на Ардуино.  Там есть функция Interrupt, которая запускает программу- обработчик.  Первый этап обеспечить работу на скорости 10 килобод. Видимо и генератор придётся через некоторое время перенести то ли на Ардуино, то ли на STM32. Пока генератор написан на Канни и управляет микросхемой L293DNE.  Скорость небольшая, зато всё видно.
    Бродят преинтересные идеи сращивания Канни и Ардуино. Управление и верхний интерфейс формирования и приёма слов сделать на Канни, а приёмник-передатчик канала с RZ кодом сделать на Ардуино.   Ну там ещё всякие оптопары будут и H-мосты.. Связь, видимо, между Канни и Ардуино по Уарт. Начал думать в эту сторону.
      Я посмотрел импульсы, которые выдаёт Ардуино Уно.  Передний фронт 0,1 микросекунда при нагрузке на силовой ключ от Амперки. При нагрузке 270 ом вышло 20 наносекунд.  Интересно, что Ардуино прибавляет 5 микросекунд.  Так что самый короткий импульс, который можно получить равен шести микросекундам (командой DelayMicroseconds).
На Канни не проверял.  Придётся написать ВЧ ШИМ и посмотреть. 
Написал.  Времена у Канни в ВЧ ШИМ выставляются чётко.  Передний фронт порядка 30-40 наносекунд на нагрузке 270 ом. У меня под рукой другого резистора нет.

30 (23-01-2016 01:14:39 отредактировано Константин, CANNY)

Re: Осваиваю Canny 5 Nano

ipsurin пишет:

    Бродят преинтересные идеи сращивания Канни и Ардуино. Управление и верхний интерфейс формирования и приёма слов сделать на Канни....

Аналогично. Но только у меня всё наоборот : связь по CAN шине на CANNY, математика и управление на Ардуине. Почему так ? Потому что я программист и CFD вызывает у меня мягко скажем "недопонимание", реализовать математику сложнее "принять сообщение - включить реле/опросить состояние - послать сообщение" превращается в хаос прямоугольников с трудно прогнозируемым состоянием.
Обидно, что на самом деле CANNY гораздо мощнее Ардуины, и при наличии SDK и библиотек на ней можно творить такие вещи, что Ардуино тихо будет плакать в углу. Но политика создателей "не пущать" глубже кубиков - тупик.

Константин, CANNY пишет:

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

Ага-ага. Кубики в кубике ? Или все-таки дадите попрограммировать ? Чего боитесь-то?

31 (23-01-2016 02:55:51 отредактировано Константин, CANNY)

Re: Осваиваю Canny 5 Nano

ipsurin пишет:


      Я посмотрел импульсы, которые выдаёт Ардуино Уно.  Передний фронт 0,1 микросекунда при нагрузке на силовой ключ от Амперки. При нагрузке 270 ом вышло 20 наносекунд.  Интересно, что Ардуино прибавляет 5 микросекунд.  Так что самый короткий импульс, который можно получить равен шести микросекундам (командой DelayMicroseconds).
...
.  Времена у Канни в ВЧ ШИМ выставляются чётко.  Передний фронт порядка 30-40 наносекунд на нагрузке 270 ом. У меня под рукой другого резистора нет.

CANNY5nano построен на PIC18F25K80, а это 64мГц тактовой частоты, что в 4раза (!) выше чем у Ардуины. По остальным параметрам Ардуино вообще на порядок слабее.

И при этом нам предлагают забивать гвозди микроскопом...

Модераторское: Сообщения не относящиеся к теме удалены, продолжить можно здесь: http://forum.canny.ru/viewtopic.php?pid=4841

32

Re: Осваиваю Canny 5 Nano

dimax пишет:
ipsurin пишет:

    Бродят преинтересные идеи сращивания Канни и Ардуино. Управление и верхний интерфейс формирования и приёма слов сделать на Канни....

Аналогично. Но только у меня всё наоборот : связь по CAN шине на CANNY, математика и управление на Ардуине. Почему так ? Потому что я программист и CFD вызывает у меня мягко скажем "недопонимание", реализовать математику сложнее "принять сообщение - включить реле/опросить состояние - послать сообщение" превращается в хаос прямоугольников с трудно прогнозируемым состоянием.
Обидно, что на самом деле CANNY гораздо мощнее Ардуины, и при наличии SDK и библиотек на ней можно творить такие вещи, что Ардуино тихо будет плакать в углу. Но политика создателей "не пущать" глубже кубиков - тупик.

Константин, CANNY пишет:

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

Ага-ага. Кубики в кубике ? Или все-таки дадите попрограммировать ? Чего боитесь-то?

Я всё же не программист.  И "игра в кубики" вполне соответствует инженерному подходу. Пример тому- принципиальные и разные структурные схемы..  Без них в инженерном деле никуда.
Надо заметить, то уже создавая небольшие программы постоянно образуются"стандартные наборы блоков". Так что я ожидаю с нетерпением такую возможность.

Ардуино берёт множеством всяких примеров... Но всё это  на СИ. У всякого нормального инженера от Си начинает болеть голова.  Недаром есть всякие Скады, особенно  (и именно) в промавтоматизации.  Понятно, что совсем не помешал бы учебник по Канни в стиле Джереми Блума. В конце концов просто заменить все эти безумные конструкции, сделанные на СИ,  на вменяемые конструкции на CFD.

Я разобрался с подачи Константина как сделать ячейку "оперативной памяти".  Пара триггеров (в моём случае это D и RS триггеры) и вот она ячейка оперативной памяти. Видимо, можно попробовать и на других триггерах сделать ячейки и даже линейки памяти.

33

Re: Осваиваю Canny 5 Nano

Обнаружил два регистра идентификатор устройства в разделе Состояние контроллера. Сходу не нашёл описания. Что содержат эти регистры и что с ними можно делать?

34

Re: Осваиваю Canny 5 Nano

Да, описание не поспевает.
С некоторых пор, каждый произведенный контроллер имеет уникальный идентификатор, своего рода серийный номер. Его можно увидеть при подключении контроллера к CANNY Lab через пункт меню Устройство->Информация, он будет в верхней строчке таблицы. Из диаграммы к нему можно получить доступ через названные вами регистры. Один из вариантов использования - привязка диаграммы к конкретному экземпляру контроллера.

35

Re: Осваиваю Canny 5 Nano

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

36

Re: Осваиваю Canny 5 Nano

ipsurin пишет:

Столкнулся с явлением того, что транслятор переименовывает функциональные блоки так как считает нужным.

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

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

Функция ручного назначения пользователем номеров блоков появится в следующих версиях CANNY Lab, однако номера блоков никак не влияют на порядок их исполнения. Блоки исполняются в соответствии с основным правилом - блок может был исполнен только тогда, когда вычислены значения всех его входов. Если на диаграмме присутствуют циклы - соединение выходов блока с его же входами через цепочку из одного или нескольких промежуточных блоков, то последним в цепочке будет исполнен тот блок, который находится правее остальных. Циклы вызывают зависимость результата вычисления от взаимного расположения блоков, это плохо, по возможности избегайте циклов.

37

Re: Осваиваю Canny 5 Nano

Верно.   У меня есть цикл. Попробую его дециклировать.

38 (30-01-2016 00:50:42 отредактировано Константин, CANNY)

Re: Осваиваю Canny 5 Nano

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

39

Re: Осваиваю Canny 5 Nano

Всё-таки логика программирования на CFD заметно отличается от программирования на обычных языках программирования.  Разбираюсь. Экспериментирую. Разбираться, так разбираться.

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

Смущает вот этот "повторный вход потока".  В описании есть пример. Непонятно происходит Шаг три в текущем потоке выполнения или в следующем.

40

Re: Осваиваю Canny 5 Nano

ipsurin пишет:

Смущает вот этот "повторный вход потока".  В описании есть пример. Непонятно происходит Шаг три в текущем потоке выполнения или в следующем.

Поток выполнения всегда один. На каждом цикле исполнения диаграммы поток исполнения "заходит" в каждый блок диаграммы один раз и исполняет его. Цикл исполнения диаграммы заканчивается, когда исполнен последний блок диаграммы, после чего, цикл немедленно начинается заново, с первого блока диаграммы.

Тут прямая аналогия с бесконечным циклом в императивном языке программирования; функциональные блоки - последовательные операции внутри тела цикла; поток исполнения - последовательное исполнение операций процессором.

Цитата очевидно из руководства CANNY Lab из описания функционального блока "Детектор переднего фронта"?

Поясняю по шагам примера рассмотренного там:

Шаг 1 - состояние блока после его исполнения во время первого цикла диаграммы
Шаг 2 - состояние блока после его исполнения во время второго цикла диаграммы
Шаг 3 - состояние блока после его исполнения во время третьего цикла диаграммы

41 (28-01-2016 18:45:38 отредактировано ipsurin)

Re: Осваиваю Canny 5 Nano

Сегодня случилось пренеприятное явление.
Сделал вчера программу, а сегодня при загрузке выходит диагностика- Не удалось загрузить файл. Выбранный файл не является файлом диаграммы CannyLab. Все остальные программы загружаются нормально.   Я вчера загружал два экземпляра КанниЛаб. Два экрана- очень удобно. Выходил с сохранением файла. Возможно ли попробовать восстановить нечитаемый файл. Или хотя бы как-то прочитать.

Ещё я выделял куски на другой диаграмме и вставлял в эту. Всё вставлялось.

42

Re: Осваиваю Canny 5 Nano

ipsurin пишет:

Возможно ли попробовать восстановить нечитаемый файл. Или хотя бы как-то прочитать.

Сообщений о подобных проблемах к нам ранее не поступало. Присылайте файл -  посмотрим.

43

Re: Осваиваю Canny 5 Nano

Послал по почте.
Есть ещё соображение о пользе резервного копирования разрабатываемой схемы. В стиле файла bak или периодической записи.

44

Re: Осваиваю Canny 5 Nano

Видимо, разрушение файла связано с глючность Виндоуса-10.  Я поторопился перейти на него с Виндоуса-7.

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

Наличие независимой от потока выполнения памяти очень удобная вещь. Позволяет формально разорвать цикл выполнения. В одном месте пишу, в другом читаю. Было бы неплохо иметь в Канни 5 Нано некоторое количество ячеек оперативной памяти. Полагаю, что в процессоре остались незадействованные ячейки ОЗУ.  Для разгона хватило бы штук 8-16 ячеек (слов).

45

Re: Осваиваю Canny 5 Nano

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

46

Re: Осваиваю Canny 5 Nano

В приложении файл приёмника RZ кода. По каналам 3 и 4 приходят биты информации. В зависимости от того пришёл ноль или единица, выбирается способ обработки буфера. При нуле просто сдвигается влево. При единице буфер сдвигается влево и добавляется единица в младший разряд буфера. Модифицированное значение буфера записывается в ячейку ЭНП00. Если пришло 16 бит информации, значение буфера отправляется в UART, буфер обнуляется.

В верхней части схемы остатки отладочноё схемы.

RZ код имеет три состояния 1,0 и отсутствие сигнала. Передача строго последовательная. Поэтому приходящий сигнал на канал 3 или 4 всегда имеет значение 1.

47

Re: Осваиваю Canny 5 Nano

Не понял куда делось приложение. Пробую послать ещё.

Вложений в сообщении

Иконка вложения Приёмник RZ кода.cfd 4.79 кб, скачивался 333 раз, последний раз 2016-01-29 

48 (30-01-2016 00:51:10 отредактировано Константин, CANNY)

Re: Осваиваю Canny 5 Nano

ipsurin пишет:

Видимо, разрушение файла связано с глючность Виндоуса-10.  Я поторопился перейти на него с Виндоуса-7.

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

Пока написал буфер с использованием  энергонезависимой памяти.

По-моему в вашей диаграмме достаточно было бы просто соединить выход 17го блока со входом 8го.
Перенумерация блоков из меню Сервис программы покажет результирующий порядок исполнения блоков. Мне показалось что он не будет отличаться от исходного.

Тем не менее, прилагаю свой вариант. Он, требует выполнения по крайней мере двух условий:
1. Ситуация, когда на каналах 3 и 4 одновременно (за время меньшее чем длительность одного цикла диаграммы) появляется и удерживается сигнал исключена (у меня в этом случае примется единица, у вас не примется ничего)
2. Между исчезновением сигнала на любом из каналов и появлением следующего на любом из каналов, проходит время не меньшее чем длительность двух циклов диаграммы (у вас это условие так же необходимо)

Вложений в сообщении

Иконка вложения Приёмник RZ кода2.cfd 1.9 кб, скачивался 305 раз, последний раз 2016-01-30 

49

Re: Осваиваю Canny 5 Nano

Спасибо.

Изучаю.  Побитовое или я пока не освоил. Да и до использования заднего фронта для запуска передачи слова не дошёл.
Не хватает сброса счётчика в ноль после прихода 16 битов.  Надо изучать приёмы программирования на CFD.  Всё равно пока в голове сидит обычное программирование высокого уровня.
Пока не понял будет ли обнуляться вход Триггера D (оператор 10). Именно из-за этого у меня вся проблема. После прихода шестнадцатого бита надо передать шестнадцатибитное слово, а затем его обнулить, чтобы начать приём новых 16 бит.

Может есть какое-то руководство, книга по методам программирования в стиле CFD. Да и сам язык, я полагаю, основывается на некой концепции..  Было бы полезно почитать, поучиться. Посоветуйте. Тем не менее, некоторое количество ячеек оперативной памяти не помешало бы.

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

Я написал и приёмник и передатчик RZ кода на Канни именно потому, что сразу писать на ArProLе или СИ труднее для меня. Вот отработаю на Канни, тогда можно будет скорость выжимать на Ардуино или STM.

50

Re: Осваиваю Canny 5 Nano

Протестируйте диаграмму, возможно ничего обнулять и сбрасывать и не потребуется. Ячейки ОЗУ в CFD есть, каждая линия на диаграмме и есть ячейка оперативной памяти. По литературе, попробуйте поискать что-нибудь по FBD Function Block Diagram, двоичной логике. С ходу не могу ничего конкретного посоветовать кроме руководства по CANNY Lab.