How to start TwinCAT with Pyads

Question:

I’m trying to control my Beckhoff device by means of Python Pyads wrapper.

If TwinCAT is in Config mode on my target device, is it possible to start it with a Python command?

Asked By: nicc96

||

Answers:

I don’t think this is possible from pyads. It is possible to do it with the TwinCAT automation interface. See example code from InfoSys:

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:TempSolutionFolderMySolution1MySolution1.sln");

            EnvDTE.Project pro = sol.Projects.Item(1);

            ITcSysManager sysMan = pro.Object;

            sysMan.ActivateConfiguration();
            sysMan.StartRestartTwinCAT();
        }
    }
} 

Then you could use PythonNET to call this program from Python.

Answered By: Roald

This should be possible using the method write_control in the connection class. And sending the device state ADSSTATE_RUN.

The example in C is here: https://infosys.beckhoff.com/content/1033/tc3_adsdll2/124821771.html?id=4386625485690101318

But this should translate to pyads as it’s just a wrapper around the C DLL.

Answered By: chrisbeardy
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.