如何获取PLC S7-300串行六进制数据

本文关键字:数据 S7-300 PLC 何获取 获取 | 更新日期: 2023-09-27 17:58:50

我们有带以太网通信端口的西门子PLC S7-300。哪种类型的java或其他语言编码可用于获取plc的帧数据。?该PLC仅与step7软件通信。

这种框架结构的数据还可以存储在一些文本文件的xml中,这样我们就可以连续地将其发送到互联网上。

请帮助我

如何获取PLC S7-300串行六进制数据

有第三方库允许这样做。在我们公司,我们使用Accon AGLink。这是一个本地库,但它也提供了。NET包装器。图书馆有点快。你也可以试试这个(indi.an PLCCom),它是有管理的,速度不那么快,但它有一个免费版本。

或者,您可以尝试设置OPC服务器,并使用OPC客户端读取PLC数据,但它们有些昂贵。

看看Snap7,它是用C编写的,但有许多可用的封装器和端口。包括Python、Node.js、.NET、C#、Arduino,以及Java中一个名为Moka7的封装器。

来自官方文件:

Snap7是一个开源的32/64位多平台以太网通信套件,用于与西门子S7 PLC进行本地接口。这个新的CPU 1200/1500、旧的S7200、小的LOGO 0BA7/0BA8和SINAMICS驱动器也得到部分支持

我假设您的设置包含一个带有CP 343通信模块的S7-300 CPU。要从CPU读取数据,系统必须运行S7服务器(可通过NetProSIMATIC Manager内部进行配置,如西门子调试手册中所述)。远程计算机应该使用Snap7客户端库。

该库包括读取不同内存区域的功能,如进程输入(I)、进程输出(Q)、合并器(M)、计时器(T)和计数器(C),以及通用数据块(DB)。如果启用了服务器,并且配置不受限制(例如,某个IP地址),则默认情况下,客户端应至少可以访问I、Q和M,以及一些系统属性(如CPU型号和固件版本)。

对于您在Java中的案例,可以查看Moka7文档,该文档可以在同一下载包中找到。有几个代码示例可以开始使用。

如果成功,ReadArea函数将返回指定字节的十六进制数据(即开始读取的内存位置和字节数)。请注意,请记住,大多数西门子PLC都是big-endian,因此,如果您正在读取存储不同类型数据的存储区域,则可能需要进行转换。