Segnetics

Вернуться   Segnetics > Форум Segnetics > Вопросы о программировании

Вопросы о программировании Вопросы, касающиеся программирования на FBD

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.11.2017, 10:44   #1
andre
Senior Member
 
Регистрация: Jun 2015
Сообщения: 551
Благодарил(а): 25 раз(а)
Поблагодарили: 9 раз(а) в 9 сообщениях
По умолчанию Time to Tick

переводит секунды в тики. а если надо часы перевести?

Если просто умножить на 10 при тике 100мс - точность отсчета по времени не пострадает?
(счетчик CNTR 32, переменная long соответственно)
andre вне форума   Ответить с цитированием
Старый 23.11.2017, 11:16   #2
Gromov
Уволен из Сегнетикс
 
Регистрация: Nov 2015
Адрес: CПб/ВЛГ
Сообщения: 0
Благодарил(а): 0 раз(а)
Поблагодарили: 1 раз в 1 сообщении
По умолчанию Ответ: Time to Tick

Если нужно перевести часы - соберите преобразователь "часы-секунды" и секунды подавайте на Time To Tick.


__________________
В сегнетиксе не работаю с самого начала 2019 года.
Gromov вне форума   Ответить с цитированием
Старый 23.11.2017, 11:45   #3
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 020
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Time to Tick

Цитата
Сообщение от andre Посмотреть сообщение
переводит секунды в тики. а если надо часы перевести?
Умножьте часы на 60, получите минуты. Умножьте минуты на 60, получите секунды. Секунды переведите в тики.

Можно короче. Умножьте часы на 3600, получите секунды. Секунды переведите в тики.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 23.11.2017, 12:42   #4
andre
Senior Member
 
Регистрация: Jun 2015
Сообщения: 551
Благодарил(а): 25 раз(а)
Поблагодарили: 9 раз(а) в 9 сообщениях
По умолчанию Ответ: Time to Tick

Цитата Можно короче. Умножьте часы на 3600, получите секунды. Секунды переведите в тики.
6 часов = 21 000 секунд = 210 000 тиков.

блок Time to Tick - на выходе дает число int
что я получу, если ему на вход подам 21 000 секунду?

потому и спрашиваю про математику используя переменные long
andre вне форума   Ответить с цитированием
Старый 23.11.2017, 13:02   #5
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 020
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Time to Tick

Цитата
Сообщение от andre Посмотреть сообщение
6 часов = 21 000 секунд = 210 000 тиков.

блок Time to Tick - на выходе дает число int
что я получу, если ему на вход подам 21 000 секунду?

потому и спрашиваю про математику используя переменные long
1) Скачиваете, внутри удаляете блок long->int

2) Ну математика же, расчёты не сложнее тех, что я вам привёл выше... Класс 5 школы по сложности. Умножаете секунды на 1000, получая миллисекунды, затем делите на величину тика, получая количество тиков. Вот и всё волшебство


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 23.11.2017, 14:48   #6
andre
Senior Member
 
Регистрация: Jun 2015
Сообщения: 551
Благодарил(а): 25 раз(а)
Поблагодарили: 9 раз(а) в 9 сообщениях
По умолчанию Ответ: Time to Tick

Цитата:
Сообщение от Arsie Посмотреть сообщение
1) Скачиваете, внутри удаляете блок long->int

2) Ну математика же, расчёты не сложнее тех, что я вам привёл выше... Класс 5 школы по сложности. Умножаете секунды на 1000, получая миллисекунды, затем делите на величину тика, получая количество тиков. Вот и всё волшебство
5 классов - роскошь, у меня коридор.

я и спрашивал, можно ли простой математикой заменить блок Time to Tick или есть какие либо "подводные" камни при пересчете - может реальный тик отличается от заданного.
Миниатюры
Нажмите на картинку для увеличения

Название:  минуты-тики.png
Просмотров: 123
Размер:  7.5 Кбайт  
andre вне форума   Ответить с цитированием
Старый 23.11.2017, 15:43   #7
Gromov
Уволен из Сегнетикс
 
Регистрация: Nov 2015
Адрес: CПб/ВЛГ
Сообщения: 0
Благодарил(а): 0 раз(а)
Поблагодарили: 1 раз в 1 сообщении
По умолчанию Ответ: Time to Tick

Реальный тик может быть ниже или выше заданного.
Если реальный тик ниже заданного - это штатный режим работы системы. Например, SetTick=100, RealTick=20. Таким образом, из 100мс цикла, процессор занимается выполнением программы 20мс, остальные 80 - ничего не делает.
Если реальный тик выше заданного - возникнет рассинхронизация процессов, связанных с исчислением реального времени. Таким образом, тик будет длиться дольше, чем запланировано. Это очень негативно скажется на выполнении алгоритма. Поэтому таких ситуаций допускать нельзя.


__________________
В сегнетиксе не работаю с самого начала 2019 года.
Gromov вне форума   Ответить с цитированием
Старый 23.11.2017, 16:07   #8
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 020
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Time to Tick

Цитата
Сообщение от andre Посмотреть сообщение
5 классов - роскошь, у меня коридор.

я и спрашивал, можно ли простой математикой заменить блок Time to Tick или есть какие либо "подводные" камни при пересчете - может реальный тик отличается от заданного.
Ок, тогда вам сюда: http://forum.segnetics.com/showthread.php?t=2161


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать свои сообщения

BB code is Вкл.
[IMG] код Вкл.
HTML код Выкл.



Часовой пояс GMT +4, время: 09:37.


Версия vBulletin: 3.8.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Segnetics 2005 - 2023