1 (19-07-2016 10:51:55 отредактировано alex_engine)

Тема: Признак наличия данных в ячейке энергонезависимой памяти

Проверьте, пожалуйста, диаграммку.
По событию 3_3 из одних ячеек энергонезависимой памяти значения должны переписаться в другие ячейки. Как только данные в ячейки перепишутся, нужен признак наличия новых данных в ячейках после записи. Логическая функция "И" годится для контроля наличия данных в ячейке или нужно что-то специфическое?

http://forum.canny.ru/misc.php?action=p … download=0

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

Иконка вложения pin.png 32.29 кб, скачивался 92 раз, последний раз 2016-07-19 

2

Re: Признак наличия данных в ячейке энергонезависимой памяти

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

3 (19-07-2016 13:51:19 отредактировано alex_engine)

Re: Признак наличия данных в ячейке энергонезависимой памяти

Как проверить наличие данных? Логика "И" сработает в этом случае?
Или есть что-то наподобие "есть данные кан"?
Мне нужно быть уверенным, что запись произошла. А в идеале еще и отобразить что именно записалось. Там десятичное число будет.

Спасибо

4

Re: Признак наличия данных в ячейке энергонезависимой памяти

alex_engine пишет:

Как проверить наличие данных?

Если я правильно понял вопрос - см. рис.

Если нет, то поясните, что значит "проверить"?

alex_engine пишет:

Или есть что-то наподобие "есть данные кан"?

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

alex_engine пишет:

А в идеале еще и отобразить

Куда отобразить?

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

eeprom.png, 6.37 кб, 551 x 124
eeprom.png 6.37 кб, скачивался 140 раз, последний раз 2016-07-19 

5 (19-07-2016 14:28:34 отредактировано alex_engine)

Re: Признак наличия данных в ячейке энергонезависимой памяти

Спасибо. По наличию данных в ячейке понял.
Отобразить - на этапе моделирования хотя бы светодиодом на плате.
В ячейке число 2 - светится второй диод, число 4 - четвертый.

Также не совсем разобрался с диодами в симуляторе. Есть красный и зеленый и все?  Я могу задать для разных целей десяток зеленых? Что-то вроде диод1, диод2 и т.д?

6

Re: Признак наличия данных в ячейке энергонезависимой памяти

Есть красный и зеленый и все?

http://wiki.canny.ru/index.php?title=CA … 1.80.D0.B0

В ячейке число 2 - светится второй диод, число 4 - четвертый.

см.рис.

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

eepromled.png, 32.17 кб, 690 x 372
eepromled.png 32.17 кб, скачивался 165 раз, последний раз 2016-07-19 

7

Re: Признак наличия данных в ячейке энергонезависимой памяти

alex_engine пишет:

Что-то вроде диод1, диод2 и т.д?

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

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

simled.png, 16.89 кб, 473 x 205
simled.png 16.89 кб, скачивался 151 раз, последний раз 2016-07-19 

8

Re: Признак наличия данных в ячейке энергонезависимой памяти

благодарю, буду пробовать

9 (19-07-2016 16:07:23 отредактировано alex_engine)

Re: Признак наличия данных в ячейке энергонезависимой памяти

Сделал диаграммку, которая моргает одним светодиодом количество раз равным содержимому ячейки памяти. Пока меня так устраивает.
Спасибо

http://i.piccy.info/i9/5a0410a65dedd46971ccb56b242ada2c/1468933597/75882/1053136/led_800.jpghttp://i.piccy.info/a3/2016-07-19-13-06/i9-10068141/800x484-r/i.gif

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

Иконка вложения led.png 66.58 кб, скачивался 48 раз, последний раз 2016-07-19 

10

Re: Признак наличия данных в ячейке энергонезависимой памяти

Cледующий вопрос. На этой диаграмме почему-то значение из ячейки установки
энергонезависимой памяти не передается в ячейку чтения. Для этого нужно какое-то условие?
http://i.piccy.info/i9/b085059b8e90944dc83f2e14e749ce5f/1469005543/81214/1053136/led_800.jpghttp://i.piccy.info/a3/2016-07-20-09-05/i9-10071014/800x484-r/i.gif

на выходе блока 9 появляется число, согласно условий функционирования. Но на вход блока 6 оно не передается.

Подскажите плиз.

входы блоков 7-8-9 задаются кнопками на отладочной плате, надеюсь правильно изобразил?

Спасибо

11

Re: Признак наличия данных в ячейке энергонезависимой памяти

На этой диаграмме почему-то значение из ячейки установки энергонезависимой памяти не передается в ячейку чтения

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

В вашем случае, для того чтобы отладить ваш алгоритм в симуляторе, необходимо соединить выход блока №9 со входом "Cлагаемое X" блока №6, предварительно отсоединив от них регистры. А после отладки, перед записью в контроллер, вернуть диаграмме прежний вид.

входы блоков 7-8-9 задаются кнопками на отладочной плате, надеюсь правильно изобразил?

Похоже что да. Только 8-9-10 а не 7-8-9.

12

Re: Признак наличия данных в ячейке энергонезависимой памяти

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

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

Cпасибо, на этом стопорнулся.

13

Re: Признак наличия данных в ячейке энергонезависимой памяти

Подскажите, пожалуйста.
По ходу выполнения диаграммы, полученные значения сохраняю в энергонезависимую память. Но, после перевключения питания платы симулятора эти ячейки оказываются пустыми.
Конкретно - результаты счетчика сохраняю в ячейку памяти, после чего схемка моргает диодом количество раз, соответствующее значению из ячейки. Все работает до перевключения питания.
Как сделать, чтобы схемка запускалась сразу после включения питания используя значения из ячейки энергонезависимой памяти?

Спасибо

14

Re: Признак наличия данных в ячейке энергонезависимой памяти

По ходу выполнения диаграммы, полученные значения сохраняю в энергонезависимую память. Но, после перевключения питания платы симулятора эти ячейки оказываются пустыми.

Приложите диаграмму или её часть отвечающую за чтение-запись ЭНП.

15

Re: Признак наличия данных в ячейке энергонезависимой памяти

http://i.piccy.info/i9/570410ceef59940cfef7539a44fed90b/1478684416/94010/1087899/count_800.jpghttp://i.piccy.info/a3/2016-11-09-09-40/i9-10496683/800x484-r/i.gif
вот мой счетчик

http://i.piccy.info/i9/02d1a2633928f41736fbbf294a463c8c/1478684456/83362/1087899/flesh_800.jpghttp://i.piccy.info/a3/2016-11-09-09-40/i9-10496690/800x484-r/i.gif так схемка моргает. На картинке фрагмент, таких блоков для каждой ячейки есть. Все работает как мне надо до отключения питания.

http://i.piccy.info/i9/40ae00cec61ee5919a8f35efaee45d37/1478684497/75864/1087899/mem_800.jpghttp://i.piccy.info/a3/2016-11-09-09-41/i9-10496697/800x484-r/i.gif вот так я переношу из одних ячеек (которые обнуляются со счетчиком) в другие, которые должны запомниться.

Спасибо

16

Re: Признак наличия данных в ячейке энергонезависимой памяти

Использовать для работы с ЭНП D-триггер не правильно. При старте контроллера, 0 на выходе триггера будет держаться до тех пор, пока на его входе Е будет 0, при этом триггер на первом же цикле выполнения диаграммы запишет состояние своего выхода в регистр записи ЭНП.
Используйте коммутатор 2-в-1, аналогично показанному тут: http://forum.canny.ru/viewtopic.php?pid=5502#p5502
Статья о ЭНП в wiki, с примером использования: http://wiki.canny.ru/index.php?title=CA … %9D%D0%9F)

UPD

17

Re: Признак наличия данных в ячейке энергонезависимой памяти

благодарю, попробую

18 (09-11-2016 17:45:04 отредактировано alex_engine)

Re: Признак наличия данных в ячейке энергонезависимой памяти

переделал так
http://i.piccy.info/i9/534385928ead82010a2a8304e96a558b/1478701117/60472/1087899/mem.jpghttp://i.piccy.info/a3/2016-11-09-14-18/i9-10498020/653x400-r/i.gif
Все равно, после выключения питания обнуляется.

http://i.piccy.info/i9/99b97355ae8d25250075d5faaf0b0e73/1478701210/75466/1087899/count_800.jpghttp://i.piccy.info/a3/2016-11-09-14-20/i9-10498028/800x484-r/i.gif

вот эта  схема не "подхватывает" значения и не начинает моргать диодом. Я подозреваю, что все еще почему-то данные из ячеек стираются.

Может нужен какой-то запуск? Событие? Или достаточно просто подать питание на плату?

Подскажите.
Спасибо

19

Re: Признак наличия данных в ячейке энергонезависимой памяти

Корректная схема работы с ЭНП (см. рисунок).
При выполнении условия сохранения в ЭНП (лог. 1 соответствующей сети) значение из сети "Сохраняемое значение" будет передано в регистр установки ЭНП00 и будет сохранено.
При других обстоятельствах (восстановление питания, невыполнение условия сохранения в ЭНП и т.п.) в регистр установки ЭНП00 будет передаваться значение, ранее сохраненное в ней, при этом ресурс ЭНП расходоваться не будет. Потери сохраненных данных не произойдет.
Внимательно ознакомьтесь с темами http://forum.canny.ru/viewtopic.php?pid=4924, http://forum.canny.ru/viewtopic.php?id=79 и примером из описания драйвера ЭНП (комбинация блоков №№1 и 2).

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

eeprom.png, 11.02 кб, 516 x 111
eeprom.png 11.02 кб, скачивался 161 раз, последний раз 2016-11-09 

20

Re: Признак наличия данных в ячейке энергонезависимой памяти

Спасибо! Получилось.
Еще два вопроса, если можно.
Коммутатор 1 в 8. Копирует нули на все выходы, кроме заданного индексом. Можно ли как-то сделать, чтобы после перемены индекса, нули не появлялись, а оставались прежние значения? Грубо говоря, если на выходе коммутатора именованные сети, значение которых я задаю передавая с входа с нужным индексом, то после присвоения значения следующей сети - на всех остальных нули будут. Д триггеры ставить и вводить еще условия записи?

Второй вопрос - как можно получить число по модулю. На диаграмме есть блок "вычитание" и все хорошо, пока результат не отрицательный. Как "отбросить" минус? Числа всегда разные. И вычитаемое может быть больше уменьшаемого.

Спасибо

21

Re: Признак наличия данных в ячейке энергонезависимой памяти

Например так:

Для новых вопросов создавайте пожалуйста новые темы на форуме.

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

examples.png, 34.7 кб, 621 x 546
examples.png 34.7 кб, скачивался 144 раз, последний раз 2016-11-10 

22

Re: Признак наличия данных в ячейке энергонезависимой памяти

Cпасибо!