C#.NET中的PLC编程

我可以在C#中编写用于PLC控制的程序吗? 怎么样?

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

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

这是一个非常好的网站,用于列出选项。

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

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

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

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

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

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

干杯,

LazzMaTazz

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

EN | TwinCAT 3:Visual Studio集成,语言支持(SPS / IPC / DRIVES 2010)

来自Beckhoff的TwinCAT就是这样! 在其他方面,您必须使用IEC 6113-3及其5种编程样式,包括最接近“文本代码外观”的“结构化文本”代码。

警告,永远不要创建具有恒定循环的程序(而(1))它将被检测为故障。 循环是全局的并且经过validation。

享受PLC编程。

不,至少现在不行。 至于未来? 几乎可以肯定的是,IMO。

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

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

大多数,如果不是所有领先的PLC制造商现在都可以使用它,包括欧姆龙,西门子,艾伦布拉德利,三菱,Telemecanique等等。

是的你可以。

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

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

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

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

哦,除了梯形图编程,或任何废话,它的愚蠢,专为电气工程师,使他们的过渡更容易。

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

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

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

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

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

如果找不到.NET库,通常可以获取一些C / C ++代码,然后自行移植。 然后,如果情况变得更糟,并且只有预编译的库,那么总是存在本地互操作 。

自从我进行任何PLC编程以来已经很长时间了,但PLC不仅仅是一组逻辑门,它们根据输入,定时器等进行决策并发布输出? 那么为什么vb或c#或任何.Net语言不能执行这种逻辑呢?

这不是指示plc的问题,如果硬件,驱动程序和dll可用,它更可能取代plc。

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

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

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

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

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

  • OPC DA通过COM
  • OPC UA通过TCP或Web服务

那么整合呢 ? 有通信驱动程序,包含所有单元模型的源代码

PLC世界中没有使用C#。 最接近的就是FEZ Domino和.NET Micro Framework。