Вход на форум 
В начало e-Mail

Форум

Ресурсы Rockwell

Product Directory

Essential Components

Literature Library

Knowledge Base

Electronic News&Magazines

Блог

Encompass Program

Product Certification

  
Smart Solutions VDT :: Просмотр темы - Не растет REAL выше 1024.0
 FAQFAQ   ПоискПоиск   ГруппыГруппы   ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Не растет REAL выше 1024.0

 
Начать новую тему   Ответить на тему    Список форумов Smart Solutions VDT -> Программные средства систем автоматизации
Предыдущая тема :: Следующая тема  
Автор Сообщение
SergeyM
Частый гость
Частый гость


Зарегистрирован: Jul 21, 2010
Сообщения: 28
Рейтинг: +0/-0

СообщениеДобавлено: Вт 22 Июл, 2014 11:56:43    Заголовок сообщения: Не растет REAL выше 1024.0 Ответить с цитатой

Добрый день!

Есть 3 вопроса.

1.
Есть проект на контроллер ControlLogix. В нем есть следующий участок:

Код:

GSV(TASK,MainTask,LastScanTime,CycleScan_Milisec);
   SYS_CPUCycleTime := CycleScan_Milisec/1000000;

   TimeWork := TimeWork + SYS_CPUCycleTime;


По сути это учет времени наработки (хоть и не очень корректный - все таки время задачи не равно времени цикла контроллера, об этом ниже). Теги TimeWork и SYS_CPUCycleTime имеют тип REAL

Ну так вот, значение TimeWork вырастает до 1024.0 нормально. После этого рост либо останавливается либо очень сильно замедляется. В чем дело никак не пойму.

2. В чем же все таки выражается время задачи вытащенное командой GSV? во внутренней справке RSLogix5000 написано, что в микросекундах, но по ощущениям это скорее миллисекунды.

3. Как получить полное время цикла контроллера? Нужно для таймеров используемых внутри программы. Переход на стандартные таймеры очень и очень затруднителен.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
dv_
Эксперт
Эксперт


Зарегистрирован: Sep 14, 2006
Сообщения: 776
Рейтинг: +41/-1
Откуда: Донецк

СообщениеДобавлено: Вт 22 Июл, 2014 13:01:16    Заголовок сообщения: Re: Не растет REAL выше 1024.0 Ответить с цитатой

SergeyM писал(а):
Добрый день!

Есть 3 вопроса.

1.
Есть проект на контроллер ControlLogix. В нем есть следующий участок:

Код:

GSV(TASK,MainTask,LastScanTime,CycleScan_Milisec);
   SYS_CPUCycleTime := CycleScan_Milisec/1000000;

   TimeWork := TimeWork + SYS_CPUCycleTime;


По сути это учет времени наработки (хоть и не очень корректный - все таки время задачи не равно времени цикла контроллера, об этом ниже). Теги TimeWork и SYS_CPUCycleTime имеют тип REAL

Ну так вот, значение TimeWork вырастает до 1024.0 нормально. После этого рост либо останавливается либо очень сильно замедляется. В чем дело никак не пойму.

2. В чем же все таки выражается время задачи вытащенное командой GSV? во внутренней справке RSLogix5000 написано, что в микросекундах, но по ощущениям это скорее миллисекунды.

3. Как получить полное время цикла контроллера? Нужно для таймеров используемых внутри программы. Переход на стандартные таймеры очень и очень затруднителен.

1. Прочитай эту тему, про проблемы REAL.
2. Микросекунды.
3. Через GSV считывай 64 бита времени (2 по 32) и делай вычитание. Пример для вычитания 64 битных ищи здесь.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
SergeyM
Частый гость
Частый гость


Зарегистрирован: Jul 21, 2010
Сообщения: 28
Рейтинг: +0/-0

СообщениеДобавлено: Вт 22 Июл, 2014 14:25:13    Заголовок сообщения: Ответить с цитатой

1. Вот оно как Smile Никогда с накоплением в REAL не сталкивался
2. Спасибо
3. Я так понимаю нужно считывать текущее время контроллера и вычислять время цикла. Не до конца понятно в какие моменты производить считывание? Одно в начале задачи, а другое в конце (у меня 1 Task в проекте контроллера). Чем оно будет отличаться от значения полученного просто считыванием атрибута LastScanTime? Или что то другое имеется ввиду?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
dv_
Эксперт
Эксперт


Зарегистрирован: Sep 14, 2006
Сообщения: 776
Рейтинг: +41/-1
Откуда: Донецк

СообщениеДобавлено: Вт 22 Июл, 2014 14:39:53    Заголовок сообщения: Ответить с цитатой

SergeyM писал(а):
1. Вот оно как Smile Никогда с накоплением в REAL не сталкивался
2. Спасибо
3. Я так понимаю нужно считывать текущее время контроллера и вычислять время цикла. Не до конца понятно в какие моменты производить считывание? Одно в начале задачи, а другое в конце (у меня 1 Task в проекте контроллера). Чем оно будет отличаться от значения полученного просто считыванием атрибута LastScanTime? Или что то другое имеется ввиду?
Считывать один раз, после вычисления - запоминать текущее для вычисления на следующем цикле. Этим способом ты учтешь и служебное время контроллера. Внимательно с первым проходом после перевода в RUN.
Для LastScanTime придется суммировать, с Long проблемы насыщения не будет, но нужно учитывать, что после (2^31-1) будет перенос.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Smart Solutions VDT -> Программные средства систем автоматизации Часовой пояс: GMT + 1
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах

Powered by phpBB © 2001, 2005 phpBB Group
Яндекс цитирования

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.124 секунды
/n