Глупые вопросы новичка

Инженерное программное обеспечение
Бардичев Виктор
Любитель
Сообщения: 36
Зарегистрирован: 06 дек 2017, 11:18

Re: Глупые вопросы новичка

Сообщение Бардичев Виктор »

А почему бы не избавиться от REAL? Использовать INT или DINT. Считать, что точка расположена в определенном месте целого числа. Например, 1 единица будет равна 0.01 мм., а 1 мм = 100 единиц.

POV
Специалист
Сообщения: 105
Зарегистрирован: 04 авг 2016, 16:28
Откуда: Нижний Новгород

Re: Глупые вопросы новичка

Сообщение POV »

Бардичев Виктор писал(а):А почему бы не избавиться от REAL? Использовать INT или DINT. Считать, что точка расположена в определенном месте целого числа. Например, 1 единица будет равна 0.01 мм., а 1 мм = 100 единиц.
Современные ЦПУ быстрые, не так актуально как на первых S7-300 (например). Вынужден предупредить, что при таком варианте можно поиметь проблем при архивировании такого числа в Log-и и отображении его на трендах (особенно на панелях). Где-то придется пересчитывать.

Аватара пользователя
Ka3ax
Специалист
Сообщения: 299
Зарегистрирован: 07 сен 2013, 10:09

Re: Глупые вопросы новичка

Сообщение Ka3ax »

Бардичев Виктор писал(а):А почему бы не избавиться от REAL? Использовать INT или DINT. Считать, что точка расположена в определенном месте целого числа. Например, 1 единица будет равна 0.01 мм., а 1 мм = 100 единиц.
вот это сейчас к какой теме?
Supervision of erection

KanS
Профан
Сообщения: 2
Зарегистрирован: 14 окт 2020, 12:47

Re: Глупые вопросы новичка

Сообщение KanS »

Здравствуйте!
Подскажите, пожалуйста, в чем моя ошибка при вычислении?

#output := (#Hour * #fCount)/ (#Koef_wf * #fInterval);
Значения переменных:
Hour= 3600000.0 (real)
fCount - это преобразованное с помощью word_to_Dword и dword_to_real число входных импульсов датчика (Real).
Koef_wf - коэффициент 55.466 (real)
finterval - значение времени, преобразованное в real с помощью TIME_TO_DWORD и DWORD_TO_REAL.
output - real.
На мой взгляд, ошибки в согласовании типов данных нет, но результат всегда output = 7FC0 0000.

Для наглядности прикладываю скан выполнения программы. (скрин 1)

Для проверки сделала следующее: расписала по отдельности частные #Hour / #Koef_wf и #fCount/ #fInterval, но результат тот же. (скрин 2)
У вас нет необходимых прав для просмотра вложений в этом сообщении.

POV
Специалист
Сообщения: 105
Зарегистрирован: 04 авг 2016, 16:28
Откуда: Нижний Новгород

Re: Глупые вопросы новичка

Сообщение POV »

А если
KanS писал(а):
14 окт 2020, 13:49
#fInterval
равен 0, будет деление на 0?

KanS
Профан
Сообщения: 2
Зарегистрирован: 14 окт 2020, 12:47

Re: Глупые вопросы новичка

Сообщение KanS »

POV, FInterval не будет равен 0 в принципе. По условию не может быть менее 40 с

SMax
Дилетант
Сообщения: 20
Зарегистрирован: 14 окт 2018, 09:28

Re: Глупые вопросы новичка

Сообщение SMax »

Попробуйте использовать:
WORD_TO_DINT
DINT_TO_REAL

Михайло
Администратор
Сообщения: 3976
Зарегистрирован: 19 сен 2012, 19:16

Re: Глупые вопросы новичка

Сообщение Михайло »

Word и DWord - это типы данных для случаев, когда вы в слове и двойном слове размещаете наборы битов (флагов). Эти типы для хранения чисел не следует использовать. Для чисел Int, Uint, Dint, Udint.

SMax
Дилетант
Сообщения: 20
Зарегистрирован: 14 окт 2018, 09:28

Re: Глупые вопросы новичка

Сообщение SMax »

plcSim2.jpg
С DINT_TO_REAL - все должно работать
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Ответить