Showing posts with label runtime. Show all posts
Showing posts with label runtime. Show all posts

June 5, 2018

Новый билд без ошибок совместимости

Новость недельной давности — Бекхофф выложил новый билд TwinCAT 3.1.4022.20 в котором закрыта ошибка запуска локального рантайма.

Во время установки новой версии, могу посоветовать поставить галку Activate TC Settings. С ним изменится раскладка панелей в Visual Studio (возможно, вам это не понравится), без него — придется ковыряться в дебрях Visual Studio в поисках всех этих кнопок и панелей TwinCAT и вытаскивать их вручную (возможно, это вам не понравится).



После установки нового билда под Windows 10 Home 1803, TwinCAT у меня, несмотря на включенную опцию автостарта сервиса, так и не запустился. Пришлось вручную открыть "Службы" Windows и запустить TcSysSrv (TwinCAT3 System Service). После этого все отлично заработало.

May 25, 2018

Compatibility error Windows 10 v1803

Suddenly, TwinCAT 3.1.4022.16 have got an error of compatibility with the latest update of Windows 10 version 1803. Local runtime of TwinCAT x64 drops down with exception after an attempt to switch into the run mode.


This error occurs both in Home and in Pro versions of Windows 10. The engineering version of the TwinCAT tools still work properly. We are waiting for a new update of TwinCAT.

Ошибка совместимости Windows 10 версии 1803

Свежее обновление Windows 10 до версии 1803 не совместимо с локальным 64-разрядным рантаймом TwinCAT 3.1.4022.16 (или наоборот - TwinCAT не совместим с обновлением Windows).

Тем не менее, после обновления Windows не получится сделать контроллер из локального ПК разработчика: при активации конфигурации с переходом в рабочий режим, рантайм падает с ошибкой и не запускается. Ошибка проявляется на 64-х разрядных версиях Windows 10 как в Home, так и Pro версиях.


Инженерные функции по прежнему работают отлично, можно спокойно конфигурировать и программировать отдельно стоящие контроллеры. Ждем очередного обновления TwinCAT 3.1.

January 13, 2017

System Manager и четыре рантайма

При попытке создать несколько рантаймов и добавить несколько ПЛК-проектов, System Manager начинает капризничать, брыкаться, а в конце выдает ошибку: Runtime system is used by another project!



... и это не баг и не фича — это нюанс, который придется обойти.

Проект строится с помощью двух системных программ: System Manager — конфигуратор ПЛК и PLC Control в котором непосредственно разрабатывается программа контроллера. В какой-то момент разработки необходимо пробросить между ними мостик и познакомить их, передавать настройки из одной в другую и обратно. Для этого служат файлы с расширением .tpy, которые делает PLC Control при сборке (Project → Build) или пересборке (Project → Rebuild all) проекта.
Кроме файлов TPY, также существуют файлы TPA. Их создает System Manager, когда вы добавляете в конфигурацию новый проект или пересканируете уже существующие приекты (Rescan Project...). В эти TPA-файлы System Manager сохраняет конфигурацию переменных ввода/вывода (%I*, %Q*), заменяя звездочки (*) на реальные адреса.

При последующей пересборке проекта, PLC Control увидит файл TPA, созданный ранее System Manager'ом, и добавит в ПЛК-проект конфигурацию переменных, которую впоследствии можно увидеть в Resources → Global Variables → TwinCAT_Configuration.
В файле TPY находится полная информация о проекте, в том числе информация о рантайме, в котором планируется исполнять ПЛК-программу. К сожалению, невозможно выбрать нужный рантайм вручную, если вы разрабатываете проект без контроллера на столе и рядом с вами. По умолчанию система автоматически подставляет в проект первый рантайм, а затем сама же на это ругается, когда вы пытаетесь добавить второй, третий или четвертый проект в System Manager: ведь первый рантайм уже занят и нужно выбрать другой?

Чтобы покинуть тупиковую ситуацию, придется вручную отредактировать файл TPY, а конкретнее поле <Port> настроек роутинга <RoutingInfo> проекта <PlcProjectInfo>. Откройте в любом текстовом редакторе файл с расширением .tpy:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--This file is created by the TCatPlcCtrl automatically. Manually changes will be overwritten!-->
<PlcProjectInfo xmlns:p="http://www.beckhoff.com/2002/01/TcPlcProjectDesc">
    <ProjectInfo>
[...]
    </ProjectInfo>
    <RoutingInfo>
        <AdsInfo>
            <NetId>0.0.0.0.0.0</NetId>
            <Port>801</Port>
            <TargetName>
                <![CDATA[Target: Local (192.168.56.1.1.1), Run Time: 1]]>
            </TargetName>
        </AdsInfo>
    </RoutingInfo>

Номера портов жестко фиксированы: 1 — 801; 2 — 811; 3 — 821; 4 — 831. Достаточно заменить номер порта на соответствующий необходимому рантайму, а все остальные упоминания о рантайме можно оставить без изменений: на них система не обращает никакого внимание. Сохраните файл и без проблем добавьте его в конфигурацию System Manager'а.

July 26, 2016

Вебинар. Оптимизация нагрузки многоядерных систем TwinCAT 3

30 июня Кнут Гётель провел вебинар на тему оптимизации нагрузки многоядерных систем в TwinCAT 3 (TwinCAT 3 | Optimised utilisation of multi-core features). Большая часть нюансов многозадачности в TwinCAT 3 уже рассматривалась, поэтому далее только крошки.


Как обстоят дела в TwinCAT 2:
  • Рантайм может исполнятся только на одном ядре.
  • Рантайм работает только в 32-х разрядных системах.
  • Выбор ядра на котором будет выполняться рантайм производится через реестр (можно считать, что 98% пользователей об этом не знает).

Однако, большинство современных процессоров (в том числе и ARM) уже хотя бы с двумя ядрами (плюс интеловский гипертрединг, дающий в два раза больше). Мегагерцы растут медленнее, чем количество ядер. Интел грезит (или грозит) приблизительно 128-256 ядер на систему уже в ближайшее время. Нужно куда-то бежать и что-то с этим делать.

Как обстоят дела в TwinCAT 3:
  • Отзывчивость (Latency) меньше одной микросекунды (на тестовом Intel Core i5).
  • Настраиваемый уровень предупреждений превышения уровня отзывчивости: если вероятен сильный джиттер (jitter, дрожание, отклонение) — можно задать уровень паники. Будет вылезать мутная табличка, что на этапе наладки скрасит скудность средств отладки производительности.
  • Вроде бы гарантируют не превышение отведенного времени для TwinCAT. Вероятно, в случае, когда TwinCAT нагружен чересчур сильно, он перестанет отнимать время у бедного Windows. И по косвенным результатам, этому уже есть подтверждения.


Нюансы многоядерности


Задачи цифрового управления движением NC SAF и NC SVB должны быть закреплены за одним ядром. Для CNC такого ограничения нет.

Для запуска TwinCAT и Windows на одном и том же ядре в 64-х разрядной системе необходима поддержка процессором VT-x технологии. Во всех остальных случаях (AMD, старые процессоры, виртуальные машины и т. п.), придется запускать TwinCAT на отдельном ядре. Причем для TwinCAT, ядро нужно изолировать от Windows, т. е. уделить TwinCAT 100% процессорного времени.

Гипертрединг рекомендуется выключить т. к. псевдо-полу-ядра очень тесно взаимодействуют в плане блоков процессора, кеша, памяти и прочих устройств в единственном числе (физически — это по прежнему одно ядро, поэтому возможно нарушение синхронизации).


Взаимодействие ПЛК-модулей


Когда ПЛК-задачи запускаются на разных ядрах, у нас все еще остается общая память и ряд других общих ресурсов. Поэтому возможны несколько способов обмена данными: одни быстрее, другие — надежнее.

1. Маппинг данных между операционными образами.
  • Доступно для всех языков.
  • Гарантируется целостность данных.
  • Передача выполняется синхронно с тактами задачи (пульс задачи, task pulse).

2. Указатель на область данных.
  • Не гарантирует целостности данных.
  • Прямой синхронный доступ из программы (данные никуда не копируются, прямой доступ к ним).

3. Вызов методов через интерфейс.
  • Прямой, синхронный доступ.
  • Не гарантируется целостность данных

4. Протокол ADS.
  • Асинхронный и событийный способы доступа.
  • Клиент-сервер.
  • Вертикальное и горизонтальное применение для обмена данными.
  • Доступен обмен между ядрами.
  • Доступен обмен по локальной/глобальной сети (например, через TCP/IP).
  • Целостность данных — гарантируется.