1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

FX3U Получить время в миллисекундах

Модераторы: Глоб.модераторы, специалисты по PLC

Ответить

Автор темы
demonlibra
здесь недавно
здесь недавно
Сообщения: 37
Зарегистрирован: 21 сен 2024, 18:17
Имя: Дмитрий
Страна: РФ
Благодарил (а): 10 раз
Поблагодарили: 3 раза

FX3U Получить время в миллисекундах

Сообщение demonlibra »

Регистры с D8013 по D8018 содержат данные RTC.
Регистр D8013 содержит секунды - от 0 до 59.

Можно ли штатными средствами получить время с меньшей дискретностью, десятки, а лучше единицы миллисекунд?
На ум приходит только записывать в DWORD количество пройденных циклов.

Код: Выделить всё

cyclesDone := cyclesDone + 1

pkl58
завсегдатай
завсегдатай
Сообщения: 544
Зарегистрирован: 19 мар 2012, 20:04
Имя: Павел
Страна: Россия
Благодарил (а): 6 раз
Поблагодарили: 59 раз

FX3U Получить время в миллисекундах

Сообщение pkl58 »

M8012 - системный бит 100 мсек. На форумах писали, что обновляется независимо от скана программы.

Автор темы
demonlibra
здесь недавно
здесь недавно
Сообщения: 37
Зарегистрирован: 21 сен 2024, 18:17
Имя: Дмитрий
Страна: РФ
Благодарил (а): 10 раз
Поблагодарили: 3 раза

FX3U Получить время в миллисекундах

Сообщение demonlibra »

А ещё есть M8011 - 10 мс
Получается только самому считать в отдельном POU

Код: Выделить всё

IF MEP(M8011) THEN
    timeRun := timeRun + T#10ms; (* timeRun : Time *)
END_IF;
Предполагал, что существует штатное решение, которое я не нашёл в документации на ПЛК.

Andreyit
не первый раз у нас
не первый раз у нас
Сообщения: 396
Зарегистрирован: 06 фев 2020, 16:09
Имя: Андрей
город/регион: Екатеринбург
Поблагодарили: 69 раз

FX3U Получить время в миллисекундах

Сообщение Andreyit »

Там есть таймеры с дискретностью на 1мс. -T246–T249. Как и 10мс - T200–T245. Один таймер дает путь второму таймеру, а уже он разрывает цепочку первого, и первый начинает заново.

Автор темы
demonlibra
здесь недавно
здесь недавно
Сообщения: 37
Зарегистрирован: 21 сен 2024, 18:17
Имя: Дмитрий
Страна: РФ
Благодарил (а): 10 раз
Поблагодарили: 3 раза

FX3U Получить время в миллисекундах

Сообщение demonlibra »

Я наивно рассчитывал на аналог функции TIME() из Codesys.

cond33
здесь недавно
здесь недавно
Сообщения: 19
Зарегистрирован: 25 мар 2022, 10:32
Имя: Жуков Данил
Страна: РФ
Поблагодарили: 12 раз

Re: FX3U Получить время в миллисекундах

Сообщение cond33 »

В FX3u есть кольцевой счётчик D8099. Добавляется 1 каждые 0.1мс, переполняется после 32767, после переполнения обнуляется. Включается M8099. Я его использую для функций рампы и регуляторов, которые требуют большую точность по времени.

Автор темы
demonlibra
здесь недавно
здесь недавно
Сообщения: 37
Зарегистрирован: 21 сен 2024, 18:17
Имя: Дмитрий
Страна: РФ
Благодарил (а): 10 раз
Поблагодарили: 3 раза

FX3U Получить время в миллисекундах

Сообщение demonlibra »

В итоге остановился на таком варианте

Код: Выделить всё

IF MEP(M81011) THEN
    timeRun := timeRun + T#10ms;
END_IF;
Этого хватит, чтобы хранить время до T#24d20h31m23s640ms с дискретностью 10 мс.
Время цикла ПЛК ~2 мс.

Изображение

pkl58
завсегдатай
завсегдатай
Сообщения: 544
Зарегистрирован: 19 мар 2012, 20:04
Имя: Павел
Страна: Россия
Благодарил (а): 6 раз
Поблагодарили: 59 раз

FX3U Получить время в миллисекундах

Сообщение pkl58 »

demonlibra писал(а): 20 окт 2024, 10:40 IF MEP(M81011) THEN
timeRun := timeRun + T#10ms;
END_IF;
может M8011?

Автор темы
demonlibra
здесь недавно
здесь недавно
Сообщения: 37
Зарегистрирован: 21 сен 2024, 18:17
Имя: Дмитрий
Страна: РФ
Благодарил (а): 10 раз
Поблагодарили: 3 раза

FX3U Получить время в миллисекундах

Сообщение demonlibra »

Да. Ошибся.

Кстати.
В симуляторе GX Works2 время цикла 100 мс, поэтому счёт времени происходит в 10 раз медленнее.
Вроде время цикла симулятора можно было менять. Не могу найти. Или такая возможность была в GX IEC Developer.
Аватара пользователя

keysansa
эксперт
эксперт
Сообщения: 2471
Зарегистрирован: 20 дек 2018, 04:45
Имя: Сергей
Страна: РБ/РФ
город/регион: РФ Сергиев Посад
Благодарил (а): 2121 раз
Поблагодарили: 208 раз

FX3U Получить время в миллисекундах

Сообщение keysansa »

На всякий случай, я бы добавил обработку переполнения...
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.
Ответить

Вернуться в «Mitsubishi»