Как связать Beckhoff TwinCAT 3 с человеко-машинным интерфейсом Visual Studio, созданным на C#?

Я новичок в TwinCAT 3 и .NET framework. Я пытаюсь просто создать HMI с помощью кнопки и связать ее с переменной в TwinCAT 3. Я управляю TwinCAT 3 выходной платой Beckhoff (EL2014), поэтому я создал следующую переменную с именем «Out_1» и связал ее с одной выход карты:

Конфигурация переменных

Переменные свойства:

введите здесь описание изображения

Код кнопки такой:

private void button1_Click(object sender, EventArgs e)
{
    TwinCAT.Ads.TcAdsClient tcAds = new TwinCAT.Ads.TcAdsClient();
    tcAds.Connect(301);

    tcAds.WriteSymbol("TIRT.Task 2.Outputs.Out1", true, 
        reloadSymbolInfo: true);
}

Появляется следующее сообщение:

Дополнительная информация: ошибка рекламы 0x710: символ не найден.

Имя символа, используемое для доступа к переменной de, неверно, и я действительно не знаю, как его написать.

Кто-нибудь знает, как я могу получить доступ к этой переменной?

Большое спасибо.


person Emm    schedule 27.01.2017    source источник


Ответы (1)


Если вы опустите "TIRT", он будет работать, например, "Task 2.Outputs.Out1".

Убедитесь, что флажок «Создать символы» отмечен при двойном щелчке задачи:введите здесь описание изображения

person stevenv    schedule 29.01.2017
comment
Спасибо, это сработало! Как насчет прямого доступа к регистрам конкретного терминала? В моей конфигурации это позволило мне проверить создание символов только для устройства уровня 5 (EtherCAT), но не для конкретных терминалов (например, термин 5 (EL2014)). Я хотел бы получить доступ к его регистрам и напрямую управлять его выходами, не создавая никаких переменных, связанных с этими выходами. Спасибо за ваше время! - person Emm; 30.01.2017
comment
Я считаю, что это невозможно или, по крайней мере, не рекомендуется. Если вы не свяжете переменные устройства ввода-вывода с задачей, TwinCAT при активации сообщит, что ему нужен мастер синхронизации (переменная ввода-вывода, связанная с переменной задачи) для устройства. Поэтому должна быть промежуточная задача. Хотя я никогда не делал этого раньше, возможно, вы можете создать ADS-соединение с портом 11 и использовать полное имя какой-либо переменной ввода-вывода, которую вы можете увидеть, дважды щелкнув по ней, например: TIID^Device 1 (EtherCAT)^Term 1 (EK1100)^Term 2 (EL2042)^Channel 1^Output (без TIID). Или используйте индексную группу и смещение. - person stevenv; 31.01.2017