Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
12.06.2009, 21:10
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Сообщение от lvadia
|
Я предлагал просто ввести в программу дополнительную форму.
|
Очень дельное предложение, для отладки намного удобнее будет,
Но может это просто сложно реализовать?... или сложно реализовать СРАЗУ.. а постепенно может и получится...
Сообщение от kos_ua
|
А в основном все просматривают а писать впадлу
|
Почему же, я например предлагал написать функции для контролеров AVR и PIC, правда Си я только начал изучать, в основоном пишу АСМ (уже лет 10).
И подобные контролеры реализовывал на Асм, конечно не программируемые а написаные под один или несколько алгоритмов переключаемые пользователем.
Была разработана идея (собственно продумана структура программы пользователя) программируемого но по другому принципу, что бы анализировалась не вся программа а некоторые этапы рабочего цикла, тогда скорость прохода по каждому этапу можно увеличить, то есть самое быстрое срабатывание может быть 20-100 микросек.
Так что помочь писать не смогу. Смогу только свои идеи...
|
|
|
|
15.06.2009, 13:26
|
|
Прописка
Регистрация: 07.07.2005
Сообщений: 111
Сказал спасибо: 2
Сказали Спасибо 12 раз(а) в 7 сообщении(ях)
|
Привет Всем....С прошедшими Вас Выходными!!!
Как и обещал выкладываю новый вариант проги...
Здесь внесены следующие изменения:
1. Все Task разделены на две группы- свободный Task и прерывания.
Если два раза кликнуть по закладке откроется свойство Task. Там и выбираем обычная задача это или прерывание.
2. По просьбе добавил реверсивный счетчик который считает от 0 и до 999.
3. В режиме симуляции если кликнуть 2 раза по входным переменным то откроется окошко для редактирования значений этой переменной.
4. Указатель мышки изменяется в зависимости от того что мы делаем)))
Пока что Все....жду критики))))
Прикрепленный файл: 3051226.rar
|
|
|
|
15.06.2009, 14:20
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Сообщение от kos_ua
|
2. По просьбе добавил реверсивный счетчик который считает от 0 и до 999.
Пока что Все....жду критики))))
|
Имхо как то неполно используются два байта в МК, тогда бы уже до 50 000 или 65 000
Прикрепленный файл: 3051226.rar
|
|
|
|
15.06.2009, 14:22
|
|
Прописка
Регистрация: 07.07.2005
Сообщений: 111
Сказал спасибо: 2
Сказали Спасибо 12 раз(а) в 7 сообщении(ях)
|
Сообщение от picavr
|
Сообщение от kos_ua
|
2. По просьбе добавил реверсивный счетчик который считает от 0 и до 999.
Пока что Все....жду критики))))
|
Имхо как то неполно используются два байта в МК, тогда бы уже до 50 000 или 65 000
|
Согласен....огрничение сугобо личное....Так написано в стандарте IEC 61131.
Подправить можно всегда))
if ((Items[0].AnchorValue) and not FpUP and (Items[6].AnchorValue‹999)) then Items[6].AnchorValue:=Items[6].AnchorValue+1;
Прикрепленный файл: 3051226.rar
Сообщение от picavr
|
Почему же, я например предлагал написать функции для контролеров AVR и PIC, правда Си я только начал изучать, в основоном пишу АСМ (уже лет 10).
И подобные контролеры реализовывал на Асм, конечно не программируемые а написаные под один или несколько алгоритмов переключаемые пользователем.
|
Что касается Си то он скажем так кроссплатформенный....исключение составляют регистры и порты....но к этому мы еще не подходили...так что думаю что сгенерированный код чуть чуть изменив можно сразу пихать в Си компилятор от АВР или ПИК....
Последний раз редактировалось mike-y-k; 14.04.2022 в 22:58.
Причина: 6.6
|
|
|
|
15.06.2009, 18:02
|
|
Частый гость
Регистрация: 22.08.2007
Сообщений: 43
Сказал спасибо: 3
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Сообщение от kos_ua
|
А в основном все просматривают а писать впадлу))...закроем тему...перейдем в ICQ...и ОК)
|
8O Вот те раз... Я, например, смотрю форум практически каждый день. Если есть, что написать - пишу. Если нет - зачем воду лить? И потом я заглядываю сюда и тогда, когда приходят сообщения об ответе. А они, сволочи такие, то приходят, а то нет. Если есть желание переписываться по мылу или аське - свисните, я с удовольствием.
Теперь по программе:
Все просто супер. Но есть небольшие замечания. Поскольку разговор был о счетчиках, то я начал с них.
1. Нарисовал свою схемку со счетчиком. Только вот в торопях забыл поставить переменные в выходные прямоугольнички. И запустил симуляцию. Программа даже не обругалась и продолжила работу. Только номера блоков горят красным. Это так и задумано?
2. Запустил симуляцию счетчика. Отключил симуляцию. Снова включил. И счетчик продолжил счет со старым значением. Т.е. не обнуляется при входе в симуляцию. Позже заметил, что все переменные не обнуляются при повторном запуске симуляции.
3. Что значит свободный Task? Т.е. циклический? После выполнения всех Task'ов программа переходит снова на первый?
4. Task'и (прерывания) по внешнему сигналу или по изменению значения не нужно завести?
5. Если Task работает как прерывание, то симуляция запускается, но изменить переменные не удается.
6. Основательно запутался как работает счетчик. На вход EN приходит 1, и на PV уже начинает что то считать.
Позже продолжу изучение. МОжет еще что накопаю.
|
|
|
|
15.06.2009, 18:23
|
|
Прописка
Регистрация: 07.07.2005
Сообщений: 111
Сказал спасибо: 2
Сказали Спасибо 12 раз(а) в 7 сообщении(ях)
|
Сообщение от Mixer79
|
Сообщение от kos_ua
|
А в основном все просматривают а писать впадлу))...закроем тему...перейдем в ICQ...и ОК)
|
8O Вот те раз... Я, например, смотрю форум практически каждый день. Если есть, что написать - пишу. Если нет - зачем воду лить? И потом я заглядываю сюда и тогда, когда приходят сообщения об ответе. А они, сволочи такие, то приходят, а то нет. Если есть желание переписываться по мылу или аське - свисните, я с удовольствием.
Теперь по программе:
Все просто супер. Но есть небольшие замечания. Поскольку разговор был о счетчиках, то я начал с них.
1. Нарисовал свою схемку со счетчиком. Только вот в торопях забыл поставить переменные в выходные прямоугольнички. И запустил симуляцию. Программа даже не обругалась и продолжила работу. Только номера блоков горят красным. Это так и задумано?
2. Запустил симуляцию счетчика. Отключил симуляцию. Снова включил. И счетчик продолжил счет со старым значением. Т.е. не обнуляется при входе в симуляцию. Позже заметил, что все переменные не обнуляются при повторном запуске симуляции.
3. Что значит свободный Task? Т.е. циклический? После выполнения всех Task'ов программа переходит снова на первый?
4. Task'и (прерывания) по внешнему сигналу или по изменению значения не нужно завести?
5. Если Task работает как прерывание, то симуляция запускается, но изменить переменные не удается.
6. Основательно запутался как работает счетчик. На вход EN приходит 1, и на PV уже начинает что то считать.
Позже продолжу изучение. МОжет еще что накопаю.
|
Заранее спасибо....а теперь по порядку и с конца)))
Пункт 6....без входа Enable счетчик работает нормально...если вход EN нарисован на схеме то счетчик действительно считает все время....баг уже справлен....честно проверял но без входа EN....забыл скобку поставить))).
Пункт 5.Проверь плз. на подпрограмме прерывания ON100ms b On10ms переменные меняются...а на прерывании OnStartUp не меняются...так как эта подпрограмма вызывается один раз при старте ПЛК(или симулятора).
Пункт 4. Все схемки называем Task(задача). Делим их на две категории. Группа задач вызывающихся по событию(прерывание)...думаю объяснять не надо.
Остальная группа задач вызывается циклически по порядку как они расположены в редакторе....путем перетаскивания мышки можно менять их порядок вызова.
Пункт 2. При компиляции Си кода ошибки вылетают при симуляции просто неуспел написать проверку такую же как при компиляции....реально не успеваю....скоро клаву менять буду))))....
Пункт 1. См. пункт 2....тоже не успел написать обнуление переменных....хотя много вопросов на эту тему...Попытаюсь объяснить.
Переменные I,Q берутся из физических датчиков подключенных к ПЛК. Т.е это наши переферийные модули. Возможно для симуляции их надо обнулять а в реально ПЛК...это информация должна читаться с модулей ввода-вывода.
Что касается меркерной области памяти(М)...то это область памяти предназначена для хранения наших переменных.....в хороших ПЛК и надеюсь что и в нашем ПЛК эта область памяти храниться в EEPROM...значит вывод....обнулять ее не надо...Для инициализации переменных при старте ПЛК я сделал прерывание OnStartUp.
Может у кого есть свои мнения по данной проблеме?)))
PS....а счетчики уже исправил))
|
|
|
|
15.06.2009, 22:15
|
|
Частый гость
Регистрация: 22.08.2007
Сообщений: 43
Сказал спасибо: 3
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Сообщение от kos_ua
|
....реально не успеваю....
|
Да не... все нормально. Я вообще (да и не я один наверно) удивляюсь как вы все это успеваете. Да еще с такой скоростью реагируете на замечания
Сообщение от kos_ua
|
Пункт 5.Проверь плз. на подпрограмме прерывания ON100ms b On10ms переменные меняются...а на прерывании OnStartUp не меняются...
|
Да, симуляция проверялась именно в OnStartUp. В связи с этим очередной вопрос, опережающий события: как на счет пошагового режима отладки
Сообщение от kos_ua
|
Пункт 4. Все схемки называем Task(задача). Делим их на две категории. Группа задач вызывающихся по событию(прерывание)...думаю объяснять не надо.
Остальная группа задач вызывается циклически по порядку
|
Вот теперь мне понятно что OnTimer10ms и OnTimer100ms это всего лишь примеры прерываний.
Сообщение от kos_ua
|
Пункт 1.См. пункт 2....
Переменные I,Q берутся из физических датчиков подключенных к ПЛК. Т.е это наши переферийные модули. Возможно для симуляции их надо обнулять а в реально ПЛК...это информация должна читаться с модулей ввода-вывода.
|
Это понятно, и на сколько я помню во всех симуляторах они обнуляются.
Сообщение от kos_ua
|
....в хороших ПЛК и надеюсь что и в нашем ПЛК эта область памяти храниться в EEPROM...
|
Хорошо, давайте снова сравним с SIEMENS. Ведь там мы указываем какую область мы сохраняем в EEPROM. А все, что не указали - стираем (обнуляем).
Сообщение от kos_ua
|
....скоро клаву менять буду))))....
|
... оно и правильно, женщин надо менять периодически. С периодом OnTimer10years или OnTimer100years
Ради такого случая и скинуться не грех. Уж что, что, а клаву то я думаю мы осилим
P.S. Ну и так... личные пожелания. Как правило все подобные проекты так же быстро забрасываются как и начинаются. Люди достигнув определенных результатов, останавливаются и забрасывают их. Хотелось бы, чтобы ваш проект будет исключением из правил
Не торопитесь. Оставьте время для личной жизни. Но и не забрасывайте на долго
Последний раз редактировалось mike-y-k; 14.04.2022 в 22:58.
Причина: 6.6
|
|
|
|
15.06.2009, 22:58
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Сообщение от Mixer79
|
Сообщение от kos_ua
|
....скоро клаву менять буду))))....
|
... оно и правильно, женщин надо менять периодически. С периодом OnTimer10years или OnTimer100years
Ради такого случая и скинуться не грех. Уж что, что, а клаву то я думаю мы осилим
|
И не только Клаву.. и Машу то же )))
|
|
|
|
15.06.2009, 23:55
|
|
Частый гость
Регистрация: 22.08.2007
Сообщений: 43
Сказал спасибо: 3
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Продолжил изучение и вот мои вопросы:
1. На дискретных элементах OR и AND не получается добавить EN.
2. У дискретных элементах OR и AND нельзя сделать больше 4 входов. Причем когда их 3, их еще можно и добавить и удалить. А когда 4 - не прибавишь, не удалишь.
3. Не понял в чем разница входа S и EN в таймере? По-моему они работают одинаково.
4. Когда и как срабатывает выход OUT на счетчике? Он активен уже при начале счета на увеличение. И остается активным до момента когда счетчик станет равным 0 при уменьшении. В таком случае как работает SP?
5. Для работы с действительными числами не хватает еще округления.
6. Хочется собраться и проверить работу программы на железе. Или хотя бы в протеусе. Зажечь, так сказать, свой первый светодиод Но примеры которые вы давали в моей версии протеуса не проходят
Кто пробовал работу с AVR?
|
|
|
|
16.06.2009, 08:42
|
|
Прописка
Регистрация: 07.07.2005
Сообщений: 111
Сказал спасибо: 2
Сказали Спасибо 12 раз(а) в 7 сообщении(ях)
|
Сообщение от Mixer79
|
Продолжил изучение и вот мои вопросы:
1. На дискретных элементах OR и AND не получается добавить EN.
2. У дискретных элементах OR и AND нельзя сделать больше 4 входов. Причем когда их 3, их еще можно и добавить и удалить. А когда 4 - не прибавишь, не удалишь.
3. Не понял в чем разница входа S и EN в таймере? По-моему они работают одинаково.
4. Когда и как срабатывает выход OUT на счетчике? Он активен уже при начале счета на увеличение. И остается активным до момента когда счетчик станет равным 0 при уменьшении. В таком случае как работает SP?
5. Для работы с действительными числами не хватает еще округления.
6. Хочется собраться и проверить работу программы на железе. Или хотя бы в протеусе. Зажечь, так сказать, свой первый светодиод Но примеры которые вы давали в моей версии протеуса не проходят
Кто пробовал работу с AVR?
|
1. На AND OR по стандарту не добавляется вход разрешения работы(EN) он та не нужен.
2. Колличество входов на AND OR элементах ограничено до 4(ИМХО).
3. Входы S и EN отличаются примерно как мальчик от девочки)))....Вход EN сразу отключает работу таймера и сбрасывает выход в 0. Вход S запускает таймер...а дальше таймер работает по тому алгоритму который вы выбрали....
SP-таймер формирователь импульса.
SE-таймер формирователь импульса вне зависимости от входа S.
SD- таймер формирователь задержки на включение.
SF- таймер формирователь задержки на отключение.
Все таймера работают в версии что выложу сегодня.....в старых версиях работал таймер SP and SD.
4. Счетчик работает так как вы и написали)))).
5. Для работы с действительными числами используйте функции INT_TO_FLT and FLT_TO_INT.....вторая функция округляет(сделал по простому отбрасывет дробную часть от Float и превращает ее в Integer)
6. Выложу сегодня схемку в протеусе ввиде jpg(прийдется ручками нарисовать).....
Да кстати у меня Протеус 6.9 sp5
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:05.
|
|