通过C#应用程序访问西门子S7-1200

Access Siemens S7-1200 through C# Application

我正在尝试访问 Siemens S7-1200 数据库以通过 C# 可执行文件设置和读取标签,我将在 Windows 上 运行。目的是拥有一个桌面应用程序,可以通过 Wi-Fi/以太网与 PLC 建立连接。然后,该应用程序将允许用户从设备读取数据(并保存在 SQL 数据库或 .csv 等中)并向设备发送命令(通过设置某些标签,然后 PLC 执行指令)。

Siemens S7-1200 和 S7-1500 设备托管一个网络服务器,允许用户创建网站并通过它设置/读取数据。我已经成功地完成了这项工作。我打算绕过网站并直接从设备中提取数据。而不是不断地从网站上提取数据。

我已经看过以下内容:

以及大量西门子教程和手册。

任何有关如何在 C# 中设置此连接的想法将不胜感激。

我终于让它工作了。请先阅读 this Siemens link. Unfortunately, I can't attach PDF's on Stack Overflow. Then implement the C# code on this Microsoft link 中的 PDF。根据 PDF(未明确说明),PLC 建立连接,因此充当客户端。 PC 打开一个端口,因此充当服务器。

设置PLC时,参考附图。这将帮助您分别为 TX 和 RX 配置必要的 DB。将 TSEND 和 TRCV 块用于 TCP 连接(如 PDF 中所示)。确保所选的 TCP 端口存在于 2000 和 5000 之间。西门子不支持更高的端口。我使用了 4005 端口。

配置发射器,当您按下按钮时,它会耦合到 REQ 位,或将其设置为高时钟。请在实际块上按 F1 并阅读为什么要这样设置这些位。 DB设置如下:

RX DB设置如下:

不要通过路由器连接PLC!您需要设置路由器才能做到"port forwarding"。有关详细信息,请参阅 link one and link two

提示 #1:确保 C# 应用程序中的文件结束分隔符 (EOF) 与 PLC 代码中的匹配。或者在 C# 中使用字符串处理来解释 EOF 的变体。当前的 EOF 在 C# 代码和 TX_DB 中很明显。

提示 #2:请记住始终清除 TX 和 RX 的西门子寄存器。下图显示了如何为 TX 执行此操作。基本上你使用 "String Move".

这不是一个完美或完整的解决方案。但它确实可以工作,不需要 OPC 服务器并通过 FTP 服务器从网页中提取数据,JSON结构等