通过 C# 应用程序访问 Siemens S7-1200
Posted
技术标签:
【中文标题】通过 C# 应用程序访问 Siemens S7-1200【英文标题】:Access Siemens S7-1200 through C# Application 【发布时间】:2016-09-03 21:02:36 【问题描述】:我正在尝试访问 Siemens S7-1200 数据库,以通过我将在 Windows 上运行的 C# 可执行文件来设置和读取标签。目的是拥有一个桌面应用程序,可以通过 Wi-Fi/以太网与 PLC 建立连接。然后,该应用程序将允许用户从设备读取数据(并保存在 SQL 数据库或 .csv 等中)并向设备发送命令(通过设置某些标签,然后 PLC 执行指令)。
Siemens S7-1200 和 S7-1500 设备拥有一个网络服务器,允许用户创建网站并通过它设置/读取数据。我已经成功地工作了。我打算绕过网站并直接从设备中提取数据。而不是不断从网站中提取数据。
我已经看过以下内容:
Snap7 writing to a S7-1200 PLC Reading a JSON structure from a web server page on a Siemens S7 1500 PLC还有很多西门子教程和手册。
任何关于如何在 C# 中建立此连接的想法将不胜感激。
【问题讨论】:
Siemens OPC DA Client 或 Siemens OPC UA Client 我不想使用 OPC 服务器。我们的想法是最终拥有一个带有定制显示器的微处理器驱动的遥控器,该显示器能够监控和设置 PLC 元件,并通过诸如 Lantronix xPico 之类的 Wi-Fi 芯片进行连接。我在this Siemens link 中尝试过PDF,你会看到我也在那里写了一些东西。希望能帮助其他人完成这个任务...... 【参考方案1】:我终于让它工作了。请先阅读this Siemens link 中的 PDF。不幸的是,我无法在 Stack Overflow 上附加 PDF。然后在this Microsoft link 上实现 C# 代码。根据 PDF(未明确说明),PLC 建立连接并因此充当客户端。 PC 打开一个端口,因此充当服务器。
设置 PLC 时,请参阅附图。这将帮助您分别为 TX 和 RX 配置必要的 DB。将 TSEND 和 TRCV 块用于 TCP 连接(如 PDF 中所示)。确保选择的 TCP 端口存在于 2000 到 5000 之间。西门子不支持高于此值。我使用了 4005 端口。
配置发送器,以便在您按下按钮时将其耦合到 REQ 位,或将其设置为时钟高电平。请在实际块上按 F1 并阅读有关为什么以这种方式设置这些位的原因。数据库设置如下:
RX DB 设置如下:
不要通过路由器连接到 PLC! 您需要设置路由器来进行“端口转发”。有关更多信息,请参阅 link one 和 link two。
提示 #1:确保 C# 应用程序中的文件结尾分隔符 (EOF) 与 PLC 代码中的分隔符匹配。或者使用 C# 中的字符串处理来解释 EOF 的变化。当前的 EOF 在 C# 代码和 TX_DB 中很明显。
提示 #2:请记住始终清除 Siemens 寄存器的 TX 和 RX。下图显示了如何为 TX 执行此操作。基本上你使用“字符串移动”。
这不是一个完美或完整的解决方案。但它确实不需要 OPC 服务器并通过 FTP 服务器、JSON 结构等从网页中提取数据。
【讨论】:
以上是关于通过 C# 应用程序访问 Siemens S7-1200的主要内容,如果未能解决你的问题,请参考以下文章
AB RSlogix5000 PLC 与siemens 触摸屏能连吗?