代码之家  ›  专栏  ›  技术社区  ›  Hossein Moradinia

C.NET中的PLC编程[关闭]

  •  4
  • Hossein Moradinia  · 技术社区  · 15 年前

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

    12 回复  |  直到 9 年前
        1
  •  11
  •   Brian Gideon    15 年前

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

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

    Here 是一个很好的网站,可以为你提供选择。

        2
  •  7
  •   Mark Lazarides    12 年前

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

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

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

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

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

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

    干杯,

    拉兹马兹

        3
  •  4
  •   Ahmad Z. Tibi    13 年前

    TWICAT版本3(BECKHOFF PLC开发环境)除了C语言外,还支持C++编程语言。

    EN | TwinCAT 3: Visual Studio integration, language support (SPS/IPC/DRIVES 2010)

        4
  •  4
  •   David Gouffé    12 年前

    来自贝克霍夫的Twincat就是这样!或者,您必须使用IEC 6113-3,它有5种编程风格,包括“结构化文本”代码,这是最近的“文本代码类似”。

    警告:不要创建带有常循环的程序(而(1)),它将被检测为故障。循环是全局的并经过验证。

    喜欢PLC编程。

        5
  •  3
  •   Andy    15 年前

    不,至少现在不行。至于未来?在我看来,几乎肯定也不是。

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

    如果您对编写可在不同类型的PLC上移植的代码感兴趣,现在最接近的方法是使用 IEC 6113-3 Structured Text 代码。

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

        6
  •  3
  •   WeNeedAnswers    12 年前

    是的,你可以。

    我目前正在一个真实的环境中做这件事。我们使用的是基于TCP的Modbus协议。

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

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

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

    哦,别再搞阶梯式编程了,不管是什么垃圾,它太蠢了,专为电气工程师设计,让他们的转换更容易。

        7
  •  3
  •   Harry dbr    12 年前

    是的,许多PLC制造商提供了与基于PC的软件(如vb、c_、vb.net)通信的dll文件。

    在Delta PLC站点上,您可以找到与Delta PLC通信的代码。

    要查看如何与VB通信,可以访问

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

        8
  •  2
  •   Scott Lerch    13 年前

    是的,您一定可以使用C编写读写到PLC的软件。然而,这可能需要大量的工作。如果你幸运的话,你可以为你感兴趣的PLC找到.NET库。在我的例子中,这是一个Directlogic PLC EBC模块,我在那里找到了一个vb.net库。 here 还有一个Allen-Bradley SLC微型计算机,我在那里找到了另一个vb.net库。 here . 这两种情况下,我都需要对代码进行一点重构,然后从我的C应用程序引用它。

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

        9
  •  2
  •   Scott Foxall    13 年前

    我已经很久没有做过任何PLC编程了,但是PLC不是一组逻辑门,它们根据输入、定时器等做出决定,并发布一个输出吗?那么,为什么VB、C或任何.NET语言都不能实现这种逻辑呢?

    这不是指导PLC的问题,而是如果硬件、驱动程序和DLL可用的话,它能否取代PLC的问题。

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

        10
  •  2
  •   free    9 年前

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

    TCPIP与PLC的通信可以通过仅与西门子PLC兼容的OpenSource API Snap7完成。

    也许更可靠的设置是通过OPC服务器进行通信。这可以由Kepware或SNMP Siemens完成。

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

    • OPC-DA通过COM
    • 通过TCP或Web服务的OPC UA
        11
  •  0
  •   sjngm quinti    13 年前

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

        12
  •  -1
  •   avra    14 年前

    C在PLC世界中没有使用。你能得到的最接近的是 FEZ Domino 使用.NET Micro Framework。