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

时间:2013-02-12 09:00:57

标签: c# java plc

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

这个帧结构数据也可以存储在某个文本文件的xml中,这样我们就可以连续发送到互联网。

请帮帮我

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

查看 Snap7 用C编写但有许多包装和端口可用,包括Python,Node.js,.NET,自你提问以来,C#,Arduino和Java中的一个名为Moka7

来自官方文件:

  

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

我假设您的设置包含带有CP 343通信模块的S7-300 CPU。要从CPU读取数据,系统必须运行S7服务器(可通过 NetPro 进行配置,在 SIMATIC Manager 中,如Siemens commissioning manual中所述)。远程计算机应该使用Snap7客户端库。

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

对于Java中的情况,查看Moka7文档,可以在同一download package中找到。有几个代码示例可供使用。

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

相关问题