7

我可以用 C# 编写用于 PLC 控制的程序吗?如何?

4

12 回答 12

14

不见得。C# 需要公共语言运行时 (CLR) 的实现来运行以该语言或任何 .NET 语言开发的应用程序。我想说的是,由于各种原因,任何支持这一点的 PLC 都不太可能被制造出来。

现在您可以做的是让您的 C# 应用程序使用 OPC 协议从 PLC 读取和写入数据。有几个不同的库可用于 .NET Framework。

是一个很好的网站,用于布置选项。

于 2010-07-21T18:34:35.983 回答
8

Beckhoff 实际上提供了一个接口 (ADS),用于使用 C#(和其他语言)直接操作 PLC 程序中的变量,该接口可用于 TwinCAT 2 或 3。正如 Ahmed Yazan Tibi 也正确地说,您可以直接在您的TC3中的PLC程序也是如此。

见这里:http ://www.beckhoff.com/english.asp?twincat/twincat_ads_communication_library.htm

您仍然需要在 PLC 程序中创建变量,并使用 Beckhoff 的系统管理器软件将它们“连接”到物理接口,然后才可以使用。

虽然这是完全可能的,但如果沿着这条路线走,您将忽略并忽略直接在 PLC 环境中编程的一些关键优势:

  1. 确定性行为
  2. 运行时安全

话虽如此,它有很多好处——从能够非常简单地连接任何类型的前端技术到将数据直接记录到数据库中,以及介于两者之间的一切。

干杯,

拉兹马塔兹

于 2012-12-10T16:33:15.117 回答
4

Twincat 版本 3(即 Beckhoff PLC 开发环境)除了支持 C# 之外,还将支持 C++ 编程语言

中文 | TwinCAT 3:Visual Studio 集成、语言支持 (SPS/IPC/DRIVES 2010)

于 2012-10-09T21:25:23.167 回答
4

Beckhoff 的 TwinCAT 就是这样!否则,您必须使用 IEC 6113-3 及其 5 种编程风格,包括最接近“类似文本代码”的“结构化文本”代码。

警告,永远不要创建具有恒定循环的程序(while(1)),否则会被检测为错误。该循环是全局的并且经过验证。

享受 PLC 编程。

于 2013-02-28T12:48:57.997 回答
3

不,至少现在不是。至于未来?几乎肯定不会,IMO。

PLC 的硬件太特殊,无法使用 CLR 编写程序。

如果您有兴趣编写可跨不同类型 PLC 移植的代码,那么您现在最接近的是使用IEC 6113-3 结构化文本代码。

大多数(如果不是所有)领先的 PLC 制造商现在都能够使用它,包括 Omron、Siemens、Allen Bradley、Mitsubishi、Telemecanique 等等。

于 2010-07-22T19:52:31.107 回答
3

是的你可以。

我目前正在这样做,在现场环境中。我们通过 TCP 使用 Modbus 协议。

我不会说它容易上手,或 PLC 编程的最佳选择,但它确实有效,而且我们在世界各地都有现场机器,在您附近的医院工作和运行 :)

它甚至不必是 C#,您可以使用任何可以通过 TCP 进行通信的语言,您只需编写一个通过 TCP 工作的 Modbus 接口,这非常容易。然后,您需要掌握一些采用 Modbus TCP 的从控制器,并将命令转换到设置的其他部分。

很多人此时会皱起眉头,说诸如“不是确定性环境”、“内存管理”或我最喜欢的“不在 RTOS 上运行”之类的废话。这些都是垃圾。很少有环境需要 RTOS 或确定性编程才能使其工作,事实上 200 毫秒的响应时间就可以了,我们发现 c# 最能做到这一点。如果您的环境需要 RTOS,我不建议使用 C#,但如果像大多数环境一样,您只需要在人类感知时间内控制东西,那么 C# [在此处填写您的语言选择] 就可以了。

哦,不要使用梯形编程,或者任何垃圾,它愚蠢的,专为电气工程师设计,使他们的过渡更容易。

于 2013-09-30T13:29:56.147 回答
3

是的,许多 PLC 制造商提供 DLL 文件以与基于 PC 的软件(如 VB、C#、VB.NET)进行通信。

在 DELTA PLC 网站上,您将找到 C# 代码以与 Delta PLC 通信。

要了解如何与 VB 进行 PLC 通信,您可以访问

http://plc-scada-dcs.blogspot.com/2013/06/plc-visual-basic-60-communication-using.html

于 2013-10-05T04:50:22.800 回答
2

是的,您绝对可以使用 C# 编写软件来读取和写入 PLC。但是,这可能需要做很多工作。如果幸运的话,您可以为您感兴趣的 PLC 找到一个 .NET 库。就我而言,这是一个 DirectLogic PLC EBC 模块,我在这里找到了一个 VB.NET 库,而在 Allen Bradley SLC Micro 中,我在这里找到了另一个 VB.NET 库。在这两种情况下,我都必须稍微重构一下代码,然后从我的 C# 应用程序中引用它。

如果找不到 .NET 库,通常可以获取一些 C/C++ 代码,然后自己移植。然后,如果情况变得更糟并且只有一个预编译库,那么总会有原生 interop

于 2011-12-20T18:35:22.173 回答
2

我已经很久没有进行任何 PLC 编程了,但 PLC 不只是一组逻辑门,它们根据输入、计时器等做出决策并发布输出吗?那么为什么 vb 或 c# 或任何 .Net 语言都不能执行这个逻辑呢?

这不是指导 plc 的问题,更多的是如果硬件、驱动程序和 dll 可用的话,它能否替代 plc。

如果还没有,这肯定会很快到来。

于 2012-08-12T01:35:59.813 回答
2

您可以通过从 plc 的内存中检索或存储数据来从.net 应用程序与 plc 进行通信,这称为DB。然后就可以使用这些变量来操作plc的代码了。

与 plc 的 TCPIP 通信可以使用仅与 siemens plc 兼容的开源 api snap7 来完成。

也许更可靠的设置是通过 opc 服务器进行通信。这可以通过 kepware 或 SNMP SIEMENS 完成

可以购买几个 .net API,允许通过这些协议通过 opc 进行通信(还有其他协议)

  • 通过 COM 的 OPC DA
  • 通过 TCP 或 Web 服务的 OPC UA
于 2016-02-20T16:04:45.593 回答
0

Unitronics呢?Unitronics的所有plc型号都有带有源代码的通信驱动程序

于 2011-06-09T22:05:52.050 回答
-2

C# 不用于 PLC 世界。您可以获得的最接近的是带有 .NET Micro Framework 的FEZ Domino 。

于 2011-01-05T02:24:42.110 回答