4

我尽力搜索有关 SCADA 和开发您自己的 C++ 桌面应用程序以与 PLC 通信的所有主题,但找不到任何最近或在我看来符合我需要的相关主题。如果我错过了他们,将非常感谢他们的链接。如果我也碰巧在错误的部分发布了这个,或者你可以想到一个更好的部分让我发布这个,我会把它带到那里。

话虽如此,我提前感谢您花时间阅读我的问题,并感谢您提供的任何意见。


关于我在做什么的一点点

我目前在学校学习机电工程,在我最后一年的项目中,我正在开发一个 C++ 桌面应用程序来监控我们位于我们实验室之一的 PLC。

在这个实验室中,我有一个预先存在的以太网网络,将所有 PLC 连接到单点,我正在将其与 PC 绑定,并将从那里完成我的所有工作。

我将在 Qt 中开发应用程序,以便以一种简单的方式设计 GUI,并允许我访问 QNetworkInterface 和 QTcpSocket。

话虽如此,我不会说我是一个经验丰富的程序员,但我已经用几种语言(即:python、c++、c、php)鬼混了好几年了,现在仍然学习,考虑到学习永远不会停止。


我的问题

  1. 是否有任何我可以阅读的参考资料,您可以建议,以便更轻松地了解我需要通过什么样的过程来接收信息(即:单个 I/O、状态位、标签、日志等)。 ..) 直接来自 PLC,而不是通过 OPC 服务器?

  2. 如果需要 OPC 服务器,除了使用罗克韦尔自动化的 RSLinx 来抓取标签并在 excel 中显示它们的值之外,我从未处理过 OPC 链接(我已经使用该确切方法创建了一个原型,但想离开excel,如果可能的话,还有 OPC 服务器 (RSLinx))。对于对 OPC 服务器主题一无所知的人,或者据我所知,对于一般的 OPC,您有什么建议?

  3. 你们中的任何人以前是否编写过自己的应用程序来做类似的事情,如果与我想要完成的事情性质不同的话?

  4. 对于正在尝试此类项目的人,您有什么建议或建议?


PS:作为这个项目的开始,我最初只是想读取 I/O(标签或地址)以查看它们的当前值(输入关闭或打开,输出通电或不通电)。但最终我还希望能够根据我从它们那里收到的值将值写入我正在监视的 PLC 上的标签。

PSS:我想再次指出,我仍然是一名学生,并且仍在全面了解这个主题。我想请您耐心等待,因为我可能第一次无法完全掌握!

如果我错过了您认为能够提供答案的任何信息,请告诉我!我会尽力及时提供上述信息!

谢谢!


编辑#1:在另一个问题中添加,并稍微改变了我的第一个问题

编辑#2:修正问题 2

4

4 回答 4

5

恕我直言,SCADA 程序应该具有能够连接到 OPC 服务器的最低要求。OPC 用于大多数商业 PLC。

严格来说,不需要 OPC 服务器/客户端方法,但它为您提供了灵活性并为您提供了一个抽象模型。如果您想使用协议直接连接到 PLC,那么这当然也是可能的。然后,您需要了解有关协议及其各种版本的更多详细信息。

是的,我在一个开发商业 SCADA 应用程序的团队中工作了几年。

在这样的项目中很容易迷失细节,所以尽量保持简单。通过使用 OPC,您将节省时间,而不是直接摆弄协议。您可以添加为其他协议添加自定义驱动程序的功能 - 取决于您的时间范围。在开始对模型的鸟瞰图进行编码之前,请尝试对您的项目进行建模,并避免迷失在细节中。

于 2013-12-29T22:14:08.597 回答
4

我会远离编写您自己的代码以直接连接到 AB PLC - 您可以在您的应用程序中使用一些产品: http ://www.rtaautomation.com/software/ethernetip/client/tagc /ControlWin.html http://www.automatedsolutions.com/products/dotnet/ascomm/

您最好使用 OPC - 如果需要,您可以编写自己的 OPC 客户端,并按照您在此处找到的示例进行操作: http ://www.opcconnect.com/source.php#freesource

根据这个http://www.control.com/thread/1026173407你应该能够得到 Kepwares OPC 快速客户端的源代码。

在这个例子中使用库可能会更容易(RSLogix,C#): http ://www.mesta-automation.com/opc-client-with-c-an-how-to-video/

你可能会发现这个有用: http : //www.rockwellautomation.co.kr/applications/gs/ap/GSKR.nsf/files/rslinxsdk_ma_eng.pdf/$file/rslinxsdk_ma_eng.pdf

一些资源: http ://www.opcconnect.com/,http : //www.mesta-automation.com/

于 2013-12-29T11:49:12.363 回答
1

对问题 #4 的回答 - 意识到您的实验室在技术上将来可能包含任何制造商的 PLC。如果您曾经参加过数据通信课程,您就会意识到对于 N 种不同的 PLC 类型,您必须为您的 PLC 客户端编写 N 种不同的通信驱动程序。

这就是标准有帮助的地方。如果不使用标准协议,扩展您的实验室可能会变得更加耗时且难以管理。这就是存在通信标准的原因。

但是,并非所有 PLC 都必须支持您可能决定的标准。

最佳选择是 OPC/UA。许多 PLC 都有现成的服务器驱动程序。这意味着您的客户端只需要了解 1 个协议 (OPC/UA),然后它就可以“轻松”连接到任何具有该标准驱动程序的 PLC。

之后,就是 OPC。之后,Modbus(TCP 和 RTU 风格),一种相对简单的行业标准,大多数 PLC 都支持。EtherNet/IP 也是一种可能的选择,尽管并非所有 PLC 都支持它作为“服务器”角色(许多确实支持它作为客户端,但这不是您所需要的)。

于 2016-08-12T13:18:42.553 回答
0

看看 github 上的 pycomm 或 github 上的 pylogix,它们是 Python 编写的驱动程序,用于链接到 clx plc。

于 2016-08-08T18:47:33.083 回答