转自:https://forums.ni.com/ [tr]概述 [tr]此示例提供了labviewVI库,可用于通过TCP/IP上的以太网端口与西门子S7-300PLC通信。
[tr]描述 [tr]此示例通过以太网与S7-300系列PLC通信,不需要适配器。该示例提供了一个API,用于读取/写入PLC上的寄存器。 [tr]据我所知,西门子从未公布过S7协议的细节。在S7上公开提供的大部分内容都是基于其他人对协议的观察。有一个开放源码的s7数据交换包可在[tr]http://libnodave.sourceforge.net/[tr]这记录了许多S7功能。
[tr]这些VIS是基于张贴在[tr]http://decibel.ni.com/content/docs/DOC-5467[tr]。通过观察和模拟协议转换器与S7-300系列PLC之间的S7数据交换,对它们进行了修改。这些观测是用Wireshark网络协议分析器完成的,可在[tr]http://www.wireshark.org/[tr]和Wireshark插件für S7-ProTokoll,可在[tr]http://sps-forum.de/showthread.php?p=202763.
[tr]执行代码的步骤 [tr]该示例包含两个顶级VIS:S7Com_Once.vi和S7Com_W+R_Loop.vi。 [tr]1.S7Com_Once.vi每次执行一次读或写。它从I32数组写入目标PLC,从目标PLC读取到I32数组。写入的字节数与要写入的数组中的元素数和传输大小参数成正比。 [tr]2.S7Com_W+R_Loop.vi定期写入目标PLC中的一对DBS并从其中读取。为了使用它,您的步骤7 PLC项目应该提供两个数据块,DB 11和DB 12。请参阅屏幕截图图像DB 11和12,PNG的布局。下载DBS到您的PLC后,使用增值税监视和更改DB值。从VI中可以看出,传输大小为DWORD。 [tr]3.有关更多信息,请参阅下载中包含的ReadMe。
[tr]所需 [tr]软件 [tr]LabVIEW 8.5或更高版本
[tr]硬件 [tr]西门子S7-300
[tr]下载版本 [tr]西门子S7 TCP v3_3 LV 8_5.zip [tr]此代码被设置为容错的;也就是说,如果电缆断开或连接丢失,则可以调用“S7_ERROR_REMENICt.vi”来清除坏连接并重新打开一个良好的连接。对于从单个DB块读取多个寄存器,有一些优化。[tr]串行MPI S7协议
[tr]S7Com_2009_11_06.zip [tr]这个代码是由一位开发人员提供的(谢谢!)并使用稍微不同的架构。
[tr]注:所附文件为实验文件,仅为教育目的而提供。没有明示或暗示的保证。您应该测试您的代码,并完全理解写入或从操作的PLC中读取的含义。
1
|
|
|
|