Как программно развернуть проект twincat 3 на ПЛК - PullRequest
0 голосов
/ 11 июля 2019

Я ищу способ активировать конфигурацию и обновить загрузочный проект через C #. Мой проект Twincat 3 скомпилирован, и все необходимые файлы находятся в папке / _Boot. Следующим шагом является программа на C # (на самом деле модульные тесты), которая загружает и выполняет проект на моем ПЛК.

До сих пор я прочитал Информационную систему Beckhoff, но не смог найти подсказки.

Ответы [ 2 ]

2 голосов
/ 12 июля 2019

Если в вашем распоряжении есть только папка _Boot, вам просто нужно скопировать содержимое _Boot \ TwinCAT RT (x64) \ Plc в целевую загрузочную папку C: \ TwinCAT \ 3.1 \ Boot \ Plc и запустить ПЛК через ADS-Command.

ПЛК загрузится с замененным скомпилированным проектом.

Вот пример из официальной документации ADS для запуска plc:

static void Main(string[] args)
{
    //Create a new instance of class TcAdsClient
    TcAdsClient tcClient = new TcAdsClient();

    try
    {
        // Connect to local PLC - Runtime 1 - TwinCAT2 Port=801, TwinCAT3 Port=851
        tcClient.Connect(851);

        Console.WriteLine(" PLC Run\t[R]");
        Console.WriteLine(" PLC Stop\t[S]");
        Console.WriteLine("\r\nPlease choose \"Run\" or \"Stop\" and confirm with enter..");
        string sInput = Console.ReadLine().ToLower();

        //Process user input and apply chosen state
        do{
            switch (sInput)
            {
                case "r": tcClient.WriteControl(new StateInfo(AdsState.Run, tcClient.ReadState().DeviceState)); break;
                case "s": tcClient.WriteControl(new StateInfo(AdsState.Stop, tcClient.ReadState().DeviceState)); break;
                default: Console.WriteLine("Please choose \"Run\" or \"Stop\" and confirm with enter.."); sInput = Console.ReadLine().ToLower(); break;
            }
        } while (sInput != "r" && sInput != "s");
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
        Console.ReadKey();
    }
    finally
    {
        tcClient.Dispose();
    }
}
2 голосов
/ 11 июля 2019

Вам необходим API интерфейса Twincat Automation для активации вашей конфигурации и запуска ПЛК.

Пример из официальной документации:

        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Text;
        using EnvDTE100;
        using System.IO;
        using TCatSysManagerLib;

        namespace ActivatePreviousConfiguration{

            class Program
            {

                static void Main(string[] args)
                {
                    Type t = System.Type.GetTypeFromProgID("VisualStudio.DTE.10.0");
                    EnvDTE.DTE dte = (EnvDTE.DTE)System.Activator.CreateInstance(t);
                    dte.SuppressUI = false;
                    dte.MainWindow.Visible = true;
                    EnvDTE.Solution sol = dte.Solution;
                    sol.Open(@"C:\Temp\SolutionFolder\MySolution1\MySolution1.sln");

                    EnvDTE.Project pro = sol.Projects.Item(1);
                    ITcSysManager sysMan = pro.Object;
                    sysMan.ActivateConfiguration();
                    sysMan.StartRestartTwinCAT();
                }
            }
        }

Есть также много другие вещи, которые вы можете сделать с этим API, например, сгенерировать код для вашего ПЛК ..

Документацию можно найти здесь:

Интерфейс автоматизации pdf

...