TwinCAT 3.0 自动化接口无需 Visual Studio?

2024-03-05

我需要从 C# 应用程序启动/关闭 TwinCAT 3.0。 正如善意回答的如何从控制台/C#程序启动/关闭TwinCAT系统? https://stackoverflow.com/questions/54077462/how-to-startup-shutdown-twincat-system-from-console-c-sharp-program我可以使用 TwinCAT 自动化接口。 在 TC 2.0 中,可以简单地实例化自动化接口:

var systemManager = new TcSysManager(); // missing method exception: 
                                        //  no constructor without parameters defined

在 TC 3 中,它给了我上面的运行时错误。

我似乎需要在要使用自动化接口的 PC 上有一个 Visual Studio 实例。具有自动化功能的平板电脑位于机器上,并且未安装 VS。

是否可以使用自动化接口,或者以编程方式启动/关闭 TC 3.0,而无需在计算机上安装 Visual Studio? 谢谢。


下面的答案是启动和停止特定的 PLC 实例。要在配置和运行之间更改整个 TwinCAT 运行时,请连接到系统服务 ADS 端口(端口 10000)并将状态设置为AdsState.Run or AdsState.Config.

可以找到所有有效的状态值。可以找到所有端口值.

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

        try
        {
            // Connect to TwinCAT System Service port 10000
            tcClient.Connect(AmsPort.SystemService);
            // Send desired state
            tcClient.WriteControl(new StateInfo(AdsState.Config, tcClient.ReadState().DeviceState));

        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
            Console.ReadKey();
        }
        finally
        {
            tcClient.Dispose();
        }
    }

要以编程方式启动或停止 TwinCAT 运行时,可以使用 ADS 命令将 AdsState 更改为运行或停止。 Beckhoff 为此提供了 C# 和 C++ 库。一个 C# 示例:

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

    try
    {
        // Connect to local PLC - Runtime 1 - TwinCAT 3 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();
    }
}

Source:

一个 C++ 示例在这里:


据我所知,自动化接口至少需要安装 Visual Studio Shell。当您使用自动化接口时,您可以看到一个实例devenv.exe在后台启动。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TwinCAT 3.0 自动化接口无需 Visual Studio? 的相关文章

  • 将复选框添加到 UniformGrid

    我正在尝试将复选框动态添加到 wpf 中的统一网格中 但看起来网格没有为它们分配足够的空间 所以它们都有点互相重叠 这就是我将它们添加到后面的代码中的方法 foreach string folder in subfolders PathCh
  • 如何使 Windows 窗体的关闭按钮不关闭窗体但使其不可见?

    该表单有一个 NotifyIcon 对象 当用户单击 关闭 按钮时 我希望表单不关闭而是变得不可见 然后 如果用户想再次查看该表单 可以双击系统托盘中的图标 如果用户想关闭表单 可以右键单击该图标并选择 关闭 有人可以告诉我如何使关闭按钮不
  • 如何验证文件名称在 Windows 中是否有效?

    是否有一个 Windows API 函数可以将字符串值传递给该函数 该函数将返回一个指示文件名是否有效的值 我需要验证文件名是否有效 并且我正在寻找一种简单的方法来完成此操作 而无需重新发明轮子 我正在直接使用 C 但针对的是 Win32
  • 如何使用GDB修改内存内容?

    我知道我们可以使用几个命令来访问和读取内存 例如 print p x 但是如何更改任何特定位置的内存内容 在 GDB 中调试时 最简单的是设置程序变量 参见GDB 分配 http sourceware org gdb current onl
  • pthread_cond_timedwait() 和 pthread_cond_broadcast() 解释

    因此 我在堆栈溢出和其他资源上进行了大量搜索 但我无法理解有关上述函数的一些内容 具体来说 1 当pthread cond timedwait 因为定时器值用完而返回时 它如何自动重新获取互斥锁 互斥锁可能被锁定在其他地方 例如 在生产者
  • UML类图:抽象方法和属性是这样写的吗?

    当我第一次为一个小型 C 项目创建 uml 类图时 我在属性方面遇到了一些麻烦 最后我只是将属性添加为变量 lt
  • 使闭包捕获的变量变得易失性

    闭包捕获的变量如何与不同线程交互 在下面的示例代码中 我想将totalEvents 声明为易失性的 但C 不允许这样做 是的 我知道这是错误的代码 这只是一个例子 private void WaitFor10Events volatile
  • 如果使用 SingleOrDefault() 并在数字列表中搜索不在列表中的数字,如何返回 null?

    使用查询正数列表时SingleOrDefault 当在列表中找不到数字时 如何返回 null 或像 1 这样的自定义值 而不是类型的默认值 在本例中为 0 你可以使用 var first theIntegers Cast
  • 在 ASP.NET Core 3.1 中使用包含“System.Web.HttpContext”的旧项目

    我们有一些用 Net Framework编写的遗留项目 应该由由ASP NET Core3 1编写的API项目使用 问题是这些遗留项目正在使用 System Web HttpContext 您知道它不再存在于 net core 中 现在我们
  • 如何将图像路径保存到Live Tile的WP8本地文件夹

    我正在更新我的 Windows Phone 应用程序以使用新的 WP8 文件存储 API 本地文件夹 而不是 WP7 API 隔离存储文件 旧的工作方法 这是我如何成功地将图像保存到 共享 ShellContent文件夹使用隔离存储文件方法
  • C# 中的递归自定义配置

    我正在尝试创建一个遵循以下递归结构的自定义配置部分
  • 将自定义元数据添加到 jpeg 文件

    我正在开发一个图像处理项目 C 我需要在处理完成后将自定义元数据写入 jpeg 文件 我怎样才能做到这一点 有没有可用的图书馆可以做到这一点 如果您正在谈论 EXIF 元数据 您可能需要查看exiv2 http www exiv2 org
  • clang 实例化后静态成员初始化

    这样的代码可以用 GCC 编译 但 clang 3 5 失败 include
  • 当操作繁忙时,表单不执行任何操作(冻结)

    我有一个使用 C 的 WinForms 应用程序 我尝试从文件中读取一些数据并将其插入数据表中 当此操作很忙时 我的表单冻结并且无法移动它 有谁知道我该如何解决这个问题 这可能是因为您在 UI 线程上执行了操作 将文件和数据库操作移至另一个
  • 如何在 VBA 中声明接受 XlfOper (LPXLOPER) 类型参数的函数?

    我在之前的回答里发现了问题 https stackoverflow com q 19325258 159684一种无需注册即可调用 C xll 中定义的函数的方法 我之前使用 XLW 提供的注册基础结构 并且使用 XlfOper 类型在 V
  • 如何让Gtk+窗口背景透明?

    我想让 Gtk 窗口的背景透明 以便只有窗口中的小部件可见 我找到了一些教程 http mikehearn wordpress com 2006 03 26 gtk windows with alpha channels https web
  • 在 Dynamics CRM 插件中访问电子邮件发件人地址

    我正在编写一个 Dynamics CRM 2011 插件 该插件挂钩到电子邮件实体的更新后事件 阶段 40 pipeline http msdn microsoft com en us library gg327941 aspx 并且在此阶
  • const、span 和迭代器的问题

    我尝试编写一个按索引迭代容器的迭代器 AIt and a const It两者都允许更改容器的内容 AConst it and a const Const it两者都禁止更改容器的内容 之后 我尝试写一个span
  • C 中的异或运算符

    在进行按位操作时 我在确定何时使用 XOR 运算符时遇到一些困难 按位与和或非常简单 当您想要屏蔽位时 请使用按位 AND 常见用例是 IP 寻址和子网掩码 当您想要打开位时 请使用包含或 然而 XOR 总是让我明白 我觉得如果在面试中被问
  • 限制C#中的并行线程数

    我正在编写一个 C 程序来生成并通过 FTP 上传 50 万个文件 我想并行处理4个文件 因为机器有4个核心 文件生成需要更长的时间 是否可以将以下 Powershell 示例转换为 C 或者是否有更好的框架 例如 C 中的 Actor 框

随机推荐

  • Jenkins 管道按顺序构建多个项目?

    对于詹金斯来说 我是一个新手 我希望能够采用不同的项目并通过管道按顺序构建它们 我注意到 Jenkins 可以通过管道按顺序或并行运行各个阶段 有没有办法通过顺序或并行运行同一节点上的项目来实现这种情况 我知道这个问题有点老了 但如果有人可
  • 随机“[Errno -2]名称或服务未知”错误

    我正在使用第三方服务填充本地数据库 我有一个网址列表 大约 500 个 我在循环中调用每个网址 并使用返回的数据更新我的数据库 代码流程如下所示 for url in urllist req urllib urlopen url data
  • ZF2 getServiceLocator() 未找到?

    我一生都无法让 this gt getServiceLocator 在我的控制器中工作 我已经阅读并尝试了一切 我猜我错过了什么 这是一些代码 namespace Login Controller use Zend Mvc Controll
  • google cloud dataflow (apache beam)可以使用ffmpeg来处理视频或图像数据吗

    数据流进程可以使用 ffmpeg 处理视频或图像吗 如果可以 示例工作流程会是什么样子 是的 您可以使用以下命令确保工作人员可以使用必要的二进制文件 及其依赖项 filesToStage 管道选项 https cloud google co
  • Python:在大型字符串语料库中查找部分字符串匹配

    我对在 Python 中实现自动完成很感兴趣 例如 当用户输入字符串时 我想显示磁盘上名称以该字符串开头的文件子集 在大型语料库 例如几十万个字符串 中查找与某些条件匹配的字符串的有效算法是什么 就像是 matches s for s in
  • 如何增加标签和图表区域之间的空间?

    我所有的标签都在栏的顶部 我可以看到这个 but I want that would be like this 填充不适用于税费 但适用于税费 legend display false scales xAxes position top s
  • 无需邻接列表或邻接矩阵的Boost图设计[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有没有办法在 C boost 中不使用邻接列表或邻接矩阵来创建图结构 使用指向其邻居顶点的指针的顶点结构 当然 只要您的数据具有理论图的
  • LightGBM 警告:没有有意义的特征,因为所有特征值都是常数

    我尝试过以下简单的代码 import lightgbm pandas params objective multiclass num classes 4 train df pandas DataFrame f0 0 1 2 3 5 f1 0
  • 从初始化程序返回之前,不会在所有路径上调用 super init

    我制作了一个包装 Alamofire 的框架 在我的框架中进行测试时 在测试目标中 我有这段代码可以正常工作 import Foundation testable import NetworkManager class MockRouter
  • 向量上管道运算符中的 Case_when 语句

    我试图了解如何更好地使用if else or case when在操作向量时在管道中 在抓取网站的元素后 我留下了这个向量 1 66 121 112 150 211 197 25 72 8 59 100 69 194 c 66 121 11
  • PHP - 自动检测文件何时/是否已更新

    PHP 有没有办法检测文件何时更新和保存 如果不是 最好的方法是什么 伪造 这个 IE 在执行某个操作之前 检查文件的最后保存日期 PHP 脚本无法自动检测文件的更改 因为必须请求该页面 您可以编写一个脚本并运行一个 cron 计划任务 来
  • 在 Azure DevOps REST API 中查找附件以进行删除

    当我向 Azure DevOps REST 服务 创建 提交附件时 是否可以在某个地方可视化其中的所有附件 或者我最好的做法是发送一个 GET 来给我列表 然后我的问题就变成了 我无法删除不需要的附件 有没有一个地方可以让我可视化所有附件
  • 有关来自 oracle.com 的并发代码的问题,该代码解释了死锁

    我从 oracle com 得到了一段代码 它解释了一般的并发性和特别的死锁 代码来自 https docs oracle com javase tutorial essential concurrency deadlock html ht
  • 如何转换从 json 创建的 `_InternalLinkedHashMap`?

    有时 当在 Dart 中遍历复杂的 json 文件时 如果我们能够告诉编辑器期望的结构是什么 这样我们就可以充分利用编辑器的结构 那就太好了 智能代码补全特征 作为一个玩具示例 请考虑以下脚本作家 dart import dart conv
  • php 中转换为 md5 是错误的

    我有一个表格 其中我从用户那里获取用户名和密码 我正在将密码转换为 md5 然后我将其插入数据库 在用户登录表单中 我获取密码并将其转换为 md5 然后我比较两个密码 它在某些条件下匹配 但如果密码 则失败p w0rd 有什么问题吗 这个问
  • 在 Windows CMD 上递归删除文件或文件夹

    如何从命令行在 Windows 上递归删除文件或文件夹 我找到了这个解决方案 我们在命令行上驱动路径并运行此命令 我给出了一个带有 svn 文件扩展名文件夹的示例 for r R in svn do if exist R rd s q R
  • 安卓短信API

    我知道 SMS 内容提供商不是公共 API 的一部分 至少没有记录 但如果我理解正确 只要您知道如何使用 API 仍然可以使用许多 SMS 功能 例如 将短信插入收件箱非常简单 ContentValues values new Conten
  • 如何使用 jQuery 获取具有相同 z-index 的元素?

    现在 我有不同的元素z index 我想使用 jQuery 将它们分组 div class float div div class float div div class float div 我可以用 attr style 得到z inde
  • 确定我正在使用的实体框架版本?

    我相信有两个版本1和2 版本 2 被称为实体框架 4 0 我如何知道应用程序中正在使用哪个版本 这是在我的 web config 中 这是否意味着我正在使用版本 2
  • TwinCAT 3.0 自动化接口无需 Visual Studio?

    我需要从 C 应用程序启动 关闭 TwinCAT 3 0 正如善意回答的如何从控制台 C 程序启动 关闭TwinCAT系统 https stackoverflow com questions 54077462 how to startup