使用jamod建立Modbus ASCII通讯

本文主要记录一次使用JAVA 来建立满足Modbus协议的串口通信。
具体如下图通过运行下面的JAVA程序,向Modbus的slave端发送一个请求,而Slave回应这个请求,JAVA程序收到这个回应
在这里插入图片描述
Slave端响应JAVA程序的请求
在这里插入图片描述

本次需要用的工具和软件:

  • javax.comm 包,用于创建串口通讯
  • jamod包,实现了Modbus的协议
  • Modbus Slave 模拟Modbus协议中的Slave端,我的理解就是受的一方,不主动,具体可以看上一个文章关于Modbus协议的解释
  • VSPS 虚拟串口驱动,用来在电脑上模拟两个相连接的串口

写到这里就多说一点吧,现在使用JAVA来创建串口通信的包主要有

  1. Javax.comm 这个最古老了应该,不支持64位的JDK,所以运行本博客的代码请确保你是32位的JDK,当然32位的eclipse也是肯定的。
  2. RXTX,关于Javax.comm和RXTX的关系,请看这个网址,https://www.oschina.net/translate/serial_java?cmp&p=1 已经翻译成了中文,有助对JAVA在串口的编程有个理解
  3. JSSC 这包也是可以,也有例子,我在GITHUB上有人说这个包要比RXTX好,貌似是未来趋势? 不太确定,没细了解

然后是关于JAVA实现Modbus协议的框架有j2mod, jamod 本次使用的这个,因为看着这个稍微简单点,QAQ 还有这个modbus4j

第一步安装VSPD

这个稍微注意一下,有可能下载的VSPD不能用,换成6.9版本就好,我最开始下载的7.1不能用。下面是我所用的VSPD连接ttps://github.com/WunaiDczh/Jamod-demo
下载好创建一对串口就行了,我们后面就是靠这一对串口来通信的,如下图,COM4端口是因为我使用MODbus slave连接上了,所以后面有个[9600-E-E-1]
在这里插入图片描述

第二步下载安装Modbus Slave

这个 在我前一个博客有详细说过,也有下载地址,Slave端需要配置一下,因为要和后面的JAVA代码互相响应的。
在这里插入图片描述
在这里插入图片描述
然后点击连接后,你就会发现你的VSPD里面有变化了
在这里插入图片描述

第三步 JAVA代码

再次说明一下,由于Jamod 官方的手册里面是使用了javax.comm 来连接端口的,所以我也直接使用了javax.comm ,但是但是但是 javax.comm 不支持64位JDK 所以运行下面的JAVA代码需要你使用32位JDK和32位Eclipse
查看自己的JDK版本,需要去命令行里面 输入 JAVA -VERSION,32位的就是如下的信息,如果是64位的会有64这个数字出现
在这里插入图片描述
Eclipse版本确认方法是找到eclipse的目录下面打开一个文件如下图
在这里插入图片描述
下面这个图就是64的Eclipse了
在这里插入图片描述

  1. javax.comm 安装
    可以直接参考下面给出的那个博客的网址,里面也有javax.comm包的下载地址和安装方法,就是复制几个文件到JDK里面 https://blog.csdn.net/zhanghw_1229/article/details/7025034
  2. JAVA代码
    先去https://github.com/WunaiDczh/Jamod_demo 下载源码,然后使用Eclipse导入,导入方法就是先使用新的WorkSpace地址,然后再FILE的import里面选择在这里插入图片描述
    选择下载下来的源码,然后打勾把源码复制到当前的工作路径下
    在这里插入图片描述
    最后就是下图
    在这里插入图片描述
    然后确定Modbus Slave 连接COM4串口了,等着响应请求,打开DIsplay里面的Communication tafiic窗口如下图
    在这里插入图片描述

再运行刚弄好的JAVA程序,就会多出来我箭头指出来的两行通信信息了
在这里插入图片描述
当然也可以使用Modbus PUll 和Modbus Slave通信,可以研究一下他们交换的数据,这个下一个博客再试着讨论下吧

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java使用Modbus与S7 1200进行通讯是可行的。S7 1200是西门子推出的一款具有强大功能的可编程逻辑控制器(PLC),而Modbus是一种通信协议,被广泛应用于工业自动化领域。 要使用Java与S7 1200进行通讯,需要使用到Java中的Modbus通信库,比如jamod等。首先,需要在Java程序中引入相应的Modbus库,并创建一个Modbus Master对象来与S7 1200进行通信。 在与S7 1200通信之前,要先了解S7 1200的通信配置。S7 1200支持通过以太网进行Modbus通信。所以我们需要知道S7 1200的IP地址、端口号以及Modbus协议的通讯参数(例如数据地址、寄存器类型、读取/写入的数据长度等)。 在Java程序中,可以使用Modbus Master对象的方法(如readInputRegisters()、writeMultipleRegisters())来读取或写入S7 1200的寄存器数据。通过创建相应的读写命令,可以与S7 1200建立连接并进行数据交互。 在与S7 1200通信时,需要注意S7 1200的响应时间以及异常处理。通常情况下,S7 1200会在一定时间内响应Modbus请求,但如果存在异常情况(如通信故障、寄存器地址错误等),则需要适当处理异常,保证通信的稳定性和可靠性。 总结来说,通过使用Java中的Modbus通信库,我们可以实现与S7 1200之间的通信。通过了解S7 1200的通信配置,并编写相应的读写命令,可以实现数据的读取和写入。在实际应用中,还需要注意异常处理和通信稳定性等问题,以确保通信的效率和可靠性。 ### 回答2: Java 可以使用 Modbus TCP 协议与 S7-1200 进行通信。Modbus 是一种常见的通信协议,用于在不同设备间进行数据传输。而 S7-1200 是 Siemens 公司生产的一款PLC(Programmable Logic Controller,可编程逻辑控制器)。 要使用 Java 和 Modbus 通信与 S7-1200 进行通信,首先需要安装一个 Java Modbus TCP 协议库,例如 JLibModbus。然后可以使用库提供的函数和类在 Java 中编写代码以实现与 S7-1200 的通信。 一般来说,与 S7-1200 进行 Modbus 通信的步骤如下: 1. 连接到 S7-1200 设备:使用库提供的函数连接到 S7-1200 设备的 IP 地址和端口。 2. 读取或写入数据:使用库提供的函数来读取或写入 S7-1200 设备的数据。可以通过指定起始地址和数据长度来读取和写入数据寄存器的值。 3. 关闭连接:使用库提供的函数关闭与 S7-1200 设备的连接。 需要注意的是,S7-1200 设备需要进行一些设置,以便与 Modbus TCP 通信。例如,需要在 S7-1200 中设置 Modbus TCP 服务器,并配置正确的 IP 地址和端口。 在使用 Java 与 S7-1200 进行通信时,需要具备一定的网络和编程知识,熟悉 Modbus TCP 协议和 Java 编程语言。同时,还需要根据具体的需求和场景,选择适合的 Java Modbus TCP 协议库和相关配置。 通过 Java 使用 Modbus 与 S7-1200 进行通信,可以实现对 S7-1200 设备的监控、控制和数据交互等功能。这样可以方便地将 S7-1200 与其他设备和系统进行集成,并实现更复杂的自动化控制和数据管理任务。 ### 回答3: Java可以通过使用modbus协议与S7 1200进行通信。Modbus是一种通信协议,用于将不同类型的设备连接到一个网络上,它允许数据在不同设备之间传输。 要使用Java与S7 1200进行Modbus通信,可以使用现有的Modbus库,如jamod或j2mod。这些库提供了一些类和方法,用于建立与S7 1200的连接,并发送和接收数据。 首先,需要创建一个Modbus主站(Master)对象,该对象将作为Java应用程序与S7 1200进行通信的接口。然后,可以使用该主站对象来建立与S7 1200的连接。 连接建立后,可以使用主站对象发送读取或写入请求到S7 1200。例如,可以使用主站对象发送一个读取保持寄存器的请求,并接收返回的数据。 要发送写入请求,可以使用主站对象发送一个写入保持寄存器的请求,并指定要写入的数据。 在与S7 1200通信期间,需要注意一些细节。例如,需要确保正确地指定S7 1200的IP地址和Modbus端口号。还需要了解S7 1200的数据类型和寄存器地址,以便正确地读取或写入数据。 总之,通过使用Java和Modbus协议,可以实现与S7 1200的通信。这使得可以从S7 1200读取数据,并向其写入数据。对于那些需要将Java应用程序与S7 1200集成的开发人员来说,这是一种非常有用的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值