我试图访问西门子S7-1200数据库,通过我将在Windows上运行的C#可执行文件设置和读取标签。目的是建立一个可以通过Wi-Fi /以太网与PLC建立连接的桌面应用程序。然后,应用程序将允许用户从设备读取数据(并保存在SQL数据库或.csv等中)并向设备发送命令(通过设置某些标签,然后PLC执行指令)。
西门子S7-1200和S7-1500设备托管一个网络服务器,允许用户通过它创建网站和设置/读取数据。我已经成功地工作了。我打算绕过网站并直接从设备中提取数据。而不是不断从网站上提取数据。
我已经看过以下内容了:
除了很多西门子的教程和手册外。
有关如何在C#中建立此连接的任何想法将不胜感激。
答案 0 :(得分:2)
我终于得到了它的工作。请先阅读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并阅读这些位设置的原因。数据库设置如下:
不要通过路由器连接到PLC!您需要设置路由器以进行"端口转发"。有关详细信息,请参阅link one和link two。
提示#1:确保C#应用程序中的文件结束分隔符(EOF)与PLC代码中的结尾符号(EOF)匹配。或者在C#中使用字符串处理来考虑EOF的变化。当前的EOF在C#代码和TX_DB中很明显。
提示#2:请记住始终清除TX和RX的西门子寄存器。下图显示了如何为TX执行此操作。基本上你使用" String Move"。
这不是一个完美或完整的解决方案。但它无需OPC服务器,通过FTP服务器,JSON结构等从网页中提取数据。