Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#.NET中的PLC编程_C#_Plc - Fatal编程技术网

C#.NET中的PLC编程

C#.NET中的PLC编程,c#,plc,C#,Plc,我可以用C#编写PLC控制程序吗? 怎么做?不太可能。C#需要公共语言运行库(CLR)的实现来运行用该语言或任何.NET语言开发的应用程序。我想说,由于各种原因,不太可能制造出支持这一点的PLC 现在您可以做的是让您的C#应用程序使用OPC协议从PLC读取和写入数据。有几个不同的库可用于使用OPC,这些库可用于.NET Framework 是一个很好的网站,可以列出选项。不,至少现在不行。至于未来呢?几乎可以肯定的是,我也不是 PLC太过硬件专用,无法使用CLR编写程序 如果您对编写可跨不同类型

我可以用C#编写PLC控制程序吗? 怎么做?

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

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


是一个很好的网站,可以列出选项。

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

PLC太过硬件专用,无法使用CLR编写程序

如果您对编写可跨不同类型PLC移植的代码感兴趣,那么现在最接近的方法就是使用代码


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

C#在PLC世界中不使用。最接近的是.NET Micro Framework。

怎么样。unitronics的所有plc型号都有带有源代码的通信驱动程序

是的,您完全可以编写软件,使用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

当然,如果不是已经存在的话,这将很快出现。

< TWCCAT版本3(BEKHOFF PLC开发环境)将支持C++编程语言,除了C<


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

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

虽然这是完全可能的,但您可能忽略了直接在PLC环境中进行编程的一些关键优势:

  • 确定性行为
  • 运行时安全
  • 话虽如此,它有很多好处——能够非常简单地连接任何类型的前端技术,将数据直接记录到数据库中,以及两者之间的一切

    干杯


    贝克霍夫的TwinCAT就是这样!另外,您必须使用IEC 6113-3的5种编程样式,包括“结构化文本”代码,该代码与“文本代码外观”最接近

    警告,切勿创建具有恒定循环的程序(而(1))它将被检测为故障。该循环是全局的,并且经过验证

    享受PLC编程。

    是的,你可以

    我现在正在一个活生生的环境中做这件事。我们使用的是Modbus协议,通过TCP

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

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

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


    哦,不要使用梯形图编程,不管它是什么,它很愚蠢,是为电气工程师设计的,目的是让他们的转换更容易

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

    在DELTA PLC站点上,您可以找到C#与DELTA PLC通信的代码

    要了解如何将PLC与VB通信,可以访问


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

    TCPIP与plc的通信可通过仅与西门子plc兼容的开源api snap7完成

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

    有几种.NETAPI可以购买