Некоторые общие вопросы.

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Ответить
findeler
Рядовой
Сообщения: 76
Зарегистрирован: 16.07.2016{, 08:31}
Репутация: 0
Откуда: Рязань

Некоторые общие вопросы.

#1

Сообщение findeler » 17.07.2016{, 12:32}

Здравствуйте, осваивать язык начал пару дней назад. Видеоматериалы все (почти) отсмотрел.
Остались вопросы, ответов на них пока не нашёл.

1. Последовательность выполнения плат идёт сверху вниз ? (вроде так)
2. Если я буду использовать переменные/выходы вычисляемые в верхних платах они уже будут изменёнными ?
3. Какова последовательность выполнения внутри платы ? (Внутри платы можно выход использовать как вход, не призойдёт ли путаницы что второе действие будет сделано раньше первого.)
4. Значения по умолчанию они только при запуске программы или каждый цикл ? (вроде при запуске)
5. Внутри блоков используется delay или работа через таймер. (речь например про опрос датчиков DS18B20 не будет ли останавливаться программа на момент опроса ?
6. Есть ли проблема при переполнении внутреннего таймера?

"Примерно через 50 дней программа работать перестанет: счетчик millis () обнулится и условия if ((currentMillis — lastUpdate) > updateInterval), (currentMillis — previousMillis >= OnTime) и (currentMillis — previousMillis >= OffTime) возможно никогда больше и не выполнятся. Чтобы этого избежать при условии, что не сильно критичен единичный сбой раз в 50 дней ......" (с)

7. Элемент bounce, нужен или нет если включена защита от дребезга.
8. Счётный триггер ТТ, если инвертировать вход будет ли он меняться по заднему фронту, и если будет то как ?
9. Массивы в переменных не отображаются ?

Пока всё.

Буду очень признателен за ответы.

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 25
Откуда: Новосибирск

Некоторые общие вопросы.

#2

Сообщение Слимпер » 17.07.2016{, 14:43}

1. Да
2. Да. Вычисление новой платы начинается только после обработки предыдущей. 
3.

support  однажды в теме  отвечал
Блоки в плате могут быть трёх видов. Расчитываемые, оконечные, и логические.  В первую очередь обрабатываются расчитываеммые блоки. Это триггеры, таймеры, генераторы, сенсоры и т.д. Затем обрабатываются оконечные блоки. Это в основном блоки которые не имеют выходов. Например вывод на дисплей, вывод на UART, запись в переменные. Порядок обработки блоков внутри групп организован следующим образом.  Первым обрабатывается блок наиболее близкий по прямой (пришлось вспоминать расчёт гипотенузы в прямоугольном треугольнике) к правому верхнему углу платы. Последним соответственно самый дальний. Логические блоки  (например AND, OR, входы, математика) не рассчитываются. При обработке блоков других типов запрашивается состояние выходов таких блоков. Они в ответ выдают логические выражения (готовый код С) соответствующие своей логике.  Такое решение принято для экономии памяти контроллера. Не хорошо было бы для каждого логического или математического действия создавать переменную. В большинстве случаев в этом нет необходимости. Ну где то так. Это очень упрощённо, на самом деле логика компилятора намного сложнее. Я даже не очень представляю как её описать подробно. На это потребуется много времени и сил.
4. Это те значения присваиваются при запуски, и остаются таковыми до первой перезаписи, уже в ходе выполнения программы.
5. Нет, там используется millis(), micros(). Остановки не будет, а опрос  происходит только в некоторых циклах, если с последнего опроса прошло больше времени чем было указано в паузе.
6. Не должно быть, когда то давно было в багах, но авто уже исправлял. 
7. НЕТ.
8. Будет.
9. Не понял вопрос.

findeler
Рядовой
Сообщения: 76
Зарегистрирован: 16.07.2016{, 08:31}
Репутация: 0
Откуда: Рязань

Некоторые общие вопросы.

#3

Сообщение findeler » 17.07.2016{, 15:01}

Спасибо понятно.

3. В общем всё достаточно сложно. Для двойного использования лучше логические цепочки разносить по высоте и не перекрещивать.

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 25
Откуда: Новосибирск

Некоторые общие вопросы.

#4

Сообщение Слимпер » 17.07.2016{, 15:43}

findeler писал(а):3. В общем всё достаточно сложно. Для двойного использования лучше логические цепочки разносить по высоте и не перекрещивать.
В некоторых случаях бывает надо и на разные платы разносить.

Ответить

Вернуться в «Спросить у знатоков»