По сути это учет времени наработки (хоть и не очень корректный - все таки время задачи не равно времени цикла контроллера, об этом ниже). Теги TimeWork и SYS_CPUCycleTime имеют тип REAL
Ну так вот, значение TimeWork вырастает до 1024.0 нормально. После этого рост либо останавливается либо очень сильно замедляется. В чем дело никак не пойму.
2. В чем же все таки выражается время задачи вытащенное командой GSV? во внутренней справке RSLogix5000 написано, что в микросекундах, но по ощущениям это скорее миллисекунды.
3. Как получить полное время цикла контроллера? Нужно для таймеров используемых внутри программы. Переход на стандартные таймеры очень и очень затруднителен.
По сути это учет времени наработки (хоть и не очень корректный - все таки время задачи не равно времени цикла контроллера, об этом ниже). Теги TimeWork и SYS_CPUCycleTime имеют тип REAL
Ну так вот, значение TimeWork вырастает до 1024.0 нормально. После этого рост либо останавливается либо очень сильно замедляется. В чем дело никак не пойму.
2. В чем же все таки выражается время задачи вытащенное командой GSV? во внутренней справке RSLogix5000 написано, что в микросекундах, но по ощущениям это скорее миллисекунды.
3. Как получить полное время цикла контроллера? Нужно для таймеров используемых внутри программы. Переход на стандартные таймеры очень и очень затруднителен.
1. Прочитай эту тему, про проблемы REAL.
2. Микросекунды.
3. Через GSV считывай 64 бита времени (2 по 32) и делай вычитание. Пример для вычитания 64 битных ищи здесь.
1. Вот оно как Никогда с накоплением в REAL не сталкивался
2. Спасибо
3. Я так понимаю нужно считывать текущее время контроллера и вычислять время цикла. Не до конца понятно в какие моменты производить считывание? Одно в начале задачи, а другое в конце (у меня 1 Task в проекте контроллера). Чем оно будет отличаться от значения полученного просто считыванием атрибута LastScanTime? Или что то другое имеется ввиду?
1. Вот оно как Никогда с накоплением в REAL не сталкивался
2. Спасибо
3. Я так понимаю нужно считывать текущее время контроллера и вычислять время цикла. Не до конца понятно в какие моменты производить считывание? Одно в начале задачи, а другое в конце (у меня 1 Task в проекте контроллера). Чем оно будет отличаться от значения полученного просто считыванием атрибута LastScanTime? Или что то другое имеется ввиду?
Считывать один раз, после вычисления - запоминать текущее для вычисления на следующем цикле. Этим способом ты учтешь и служебное время контроллера. Внимательно с первым проходом после перевода в RUN.
Для LastScanTime придется суммировать, с Long проблемы насыщения не будет, но нужно учитывать, что после (2^31-1) будет перенос.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
Smart Solutions VDT GmbH | Friedrich-List-Allee 38, D-41844 Wegberg-Wildenrath, Germany Tel.: +49 2432 933 57 83 | e-Mail: office@vdt-solutions.de Все товарные знаки и торговые марки являются собственностью их владельцев.
При использовании материалов сайта ссылка на данный сайт обязательна. Открытие страницы: 0.146 секунды