Showing posts with label regedit. Show all posts
Showing posts with label regedit. Show all posts

October 30, 2020

Нагрузка процессора CX8090

Измерять производительность — это хороший способ знать, что осталось за кадром. Правда иногда это просто любопытство. В случае с бюджетным CX8090, все немного тяжелее, и не только по причине слабого процессора частотой в 400 МГц. Кстати, на подходе CX7000, и там будет целых 480 МГц, новый ARM Cortex™-M7 против старого ARM9.

При первом подключении к CX8090, мы видим постоянную загрузку процессора в 10%. Так сделано специально — измерение нагрузки добавляет нагрузку на процессор. Внезапно, эта тема обозрена в статье справочной системы CPU load. Не стоит пренебрегать таким полезным ресурсом, и вообще полезно гуглить, ведь так удобнее искать.

В рабочем режиме измерение лучше отключить, лишняя нагрузка не нужна. И наоборот — на этапе отладки полезно включить. Для этого необходимо запустить редактор реестра: Start → Run... → regedit. И внести изменения в один ключ: HKLM/SOFTWARE/BECKHOFF/TWINCAT/RTime/EnableRTimeMeasurement. 0 = отключено, 1 = включено. Замеры производятся раз в 10 миллисекунд. Точность замеров нагрузки не гарантируется, если циклы задач длиннее 10 мс.

И здесь пост должен был закончиться… посмотрим, как будет вести себя нагрузка, если время цикла увеличить с 10 мс до 50 мс. Просто увеличим время цикла в пять раз.


При реальной нагрузке приблизительно в 30-33% график плющит и колбасит от нуля до реального значения. Кстати, чтобы работал нижний график System Latency, его нужно включить в реестре. Рядом с параметром EnableRTimeMeasurement лежит параметр EnableLatencyMeasurement; 1 = работает, 0 = отключено.

И здесь пост должен был закончиться… но я набросал небольшую программу, дублирующую показометры системной нагрузки. Внезапно программные функции дали стабильный результат. Показания из программы я снимал через Scope первой версии. Просто чтобы потренироваться в работе на старых системах.

В результате получил ровный, красный график нагрузки на процессор. Latency выведен зря, никакой пользы я от него не нашел.


Превышаем лимит нагрузки

Превысим нагрузку процессора и начнем с графика, показывающего времени цикла:

Время цикла по прежнему 50 мс. На графике уставлен потолок в 60 мс, чтобы график было видно. Потолок устанавливается правой кнопкой мыши, Settings…

Значение Total показывает 52,108 мс, что на 2 мс больше лимита времени цикла. Здесь же начинает увеличиваться счетчик превышения лимита Exceed counter. Все очень плохо. Посмотрим на график нагрузки процессора. Сначала системный, затем программный:


Когда значения не совпадают

Результат на графиках выше вполне ожидаемый, но(!) так бывает не всегда. На следующих трех графиках время цикла находится в допустимых пределах, а нагрузка процессора якобы превышена. Что происходит на самом деле понять трудно.


Выводы

Стоит обратить внимание на примечания в справочной системе. Графики времени цикла и нагрузки на процессор нужно анализировать по отдельности. Показания нагрузки на процессор строится как-то хитро, даже при времени цикла ≤10мс. Например, при трехкратном превышении времени цикла можно получить нагрузку на процессор в 56%. Это некорректное показания. Значит для тонкой настройки ПЛК желательно использовать программный способ. Все это относится конкретно к CX8090 и TwinCAT 2.

Разбор программы для измерения и краткое описание функций будет отдельным постом чуть позже.

May 9, 2020

Автозагрузка TwinCAT 3 в различных режимах

При старте операционной системы TwinCAT 3 может автоматически загрузится как в рабочем режиме, так и в режиме конфигурации. Впрочем, аналогичное происходит и со старой второй версией. Здесь важно, что задать режим можно только создав пустой проект или открыв текущий. Затем необходимо подключиться к локальной системе или удаленной системе, выбрать режим и нажать кнопку Apply. Очень много телодвижений. Иллюстрация ниже:


На самом деле режим автозагрузки хранится и устанавливается через реестр, и соответствующая кнопка прямо-таки напрашивается в трейбар, который также известен как системный лоток лежащий рядом с часами. Пока же эта кнопка не вернулась на свое законное место, мы будем использовать редактор реестра regedit или писать скрипты для задания режима. Кстати, ведь было же всё в TwinCAT 2, зачем убрали?

Для работы с 32-х разрядными системами:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Beckhoff\TwinCAT3\System]
"SysStartupState"=dword:00000005

Для работы с 64-х разрядными системами путь чуть длиннее, добавляется магическое WOW6432Node:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Beckhoff\TwinCAT3\System]
"SysStartupState"=dword:0000000F

Я назвал пост в честь TwinCAT 3.1, но мы все еще помним старушку TwinCAT 2, и там все будет выглядеть аналогично: просто нужно убрать номер версии из пути ключа, то есть сделать как-то так: HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Beckhoff\TwinCAT\System. Не забывая, конечно же, про разрядность операционной системы и валшебного суффикса WOW6432Node.

Непосредственно режим задают магические числа в значении ключа SysStartupState:
  • 05 - рабочий режим / Run Mode / зеленая иконка.
  • 0F - режим конфигурации / Config Mode / синяя иконка. И да, это =15 в десятичной системе счисления.

Остается создать .reg файл и кликать по нему мышкой или отправить по почте. Вышеперечисленное относится к настольным операционным системам.

Autoload TwinCAT 3 Different Modes

When the operation system is loading TwinCAT 3 may load either in a Run Mode or in a Config Mode. Same things happen with an old version number 2. So important, you can choose the working mode only if you create a new empty project or open already existed. Then you have to connect to the local or remote system, choose working mode and finally press the Apply button. Too long way, need a short cut. Illustration next:


Actually, on loading mode stored and defined through the windows registry. This option is just necessary in the traybar menu next by the system clock. Till we are waiting for this option we will use regedit or write registry scripts for defining a working mode. So, this option already present in TwinCAT 2. Why it absent in the third one?

For the x32 systems:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Beckhoff\TwinCAT3\System]
"SysStartupState"=dword:00000005

For the x64 systems the path is a little longer. Just added a magic voodoo word WOW6432Node:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Beckhoff\TwinCAT3\System]
"SysStartupState"=dword:0000000F

This blog post is about TwinCAT 3.1 but we still remember about the oldest one TwinCAT 2. Everything is exactly the same. Just remove the version number from the path key and voila: HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Beckhoff\TwinCAT\System. Still need remember of the voodoo magic WOW6432Node and a bit depth of the operating system.

The working mode is defined by value of the registry key SysStartupState:
  • 05 - Run Mode | green icon.
  • 0F - Config Mode | blue icon. Equal = 15 in decimal system.

The last but not the least make a .reg file then click it by mouse on the target system or send through e-mail. For desktop systems oonly.