J2Mod 基本主从问题

2024-02-18

我正在尝试使用 Modbus 从站和主站j2mod(它的版本是 1.0.6,所以与另一个程序兼容)。

对于我在网上找到的代码,我确实有一些一般性问题。

我几乎没有找到任何有用的文档,所以我有点无能为力。

TCP主控器

this.addr = InetAddress.getByName("127.0.0.1");

conn = new TCPMasterConnection(addr);
        conn.setPort(port);
        conn.connect();

req = new ReadInputDiscretesRequest(ref, count);

trans = new ModbusTCPTransaction(conn);
        trans.setRequest(req);
        
        trans.execute();
res = (ReadInputDiscretesResponse) trans.getResponse();

TcpSlave

spi = new SimpleProcessImage();
spi.addDigitalOut(bitOut);

ModbusCoupler.getReference().setProcessImage(spi);
ModbusCoupler.getReference().setMaster(false);
ModbusCoupler.getReference().setUnitID(1);

addr = InetAddress.getByName("127.0.0.1");

listener = new ModbusTCPListener(3);
listener.setPort(port);
listener.setAddress(addr);
listener.setUnit(1);
listener.setListening(true);
listener.run();

所以现在我在 trans.execute() 处收到非法数据地址错误
我的问题是:

Request中的两个参数到底是什么

req = new ReadInputDiscretesRequest(ref, count);

我在哪里定义UnitId大师必须访问(在大师班中)。


我希望我分享我对此的想法还不算太晚。我有时也发现 J2Mod 令人困惑。

对于您的第一个问题 - “请求中的两个参数到底是什么?”: 在标准 Modbus 设备上,数据存储在 4 个表中,每个表包含 9999 个值:

  1. 线圈(离散输出线圈) - 它们是读写内部寻址范围为 0000 至 270E。它们占用 Modbus 设备上的寄存器 1-9999。
  2. 离散输入(离散输入触点) - 它们是只读内部寻址范围为 0000 至 270E。它们占用 Modbus 设备上的寄存器 10001-19999。
  3. 输入寄存器(模拟输入寄存器) - 它们是只读内部寻址范围为 0000 至 270E。它们占用 Modbus 设备上的寄存器 30001-39999。
  4. 保持寄存器(模拟输出寄存器) - 它们是读写内部寻址范围为 0000 至 270E。它们占用 Modbus 设备上的寄存器 40001-49999。

Each Coil(1) or Contact(2) 为 1 位(1 字节)。

Each Register(3,4) 是 1 个字或 16 位(2 个字节)。

回到你的问题,ref是您想要阅读的联系人(在您的情况下)。例如,如果您想读取号码 10001 下的第一个联系人,则可以传递 0(因为它们的内部地址为 0000-270E)。第二个参数,count,是您要读取的触点数(位)。如果您只想读取联系人 10001,则可以传递 1(仅一个联系人)。

至于你的第二个问题,我不确定,因为我对J2mod没有太多经验。

通常在 Modbus TCP/IP 上,您有 7 个字节的 MBAP 标头。

  • 交易 ID - 2 字节
  • 协议 ID - 2 个字节(Modbus 为 0000)
  • 长度 - 2 个字节 - 显示后面的字节数(包括单元 ID)
  • 单元 ID - 1 字节

我将了解如何设置 ID,然后将我的发现回复给您。

希望你不断进步!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

J2Mod 基本主从问题 的相关文章

  • 有没有创建 Cron 表达式的 Java 代码? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要一个 Java 代码来根据用户输入创建一个 cron 表达式 用户输入是时间 频率和执行次数 只需从评论中添加 自己创建 即可
  • 垃圾收集器如何在幕后工作来收集死对象?

    我正在阅读有关垃圾收集的内容 众所周知 垃圾收集会收集死亡对象并回收内存 我的问题是 Collector 如何知道任何对象已死亡 它使用什么数据结构来跟踪活动对象 我正在研究这个问题 我发现GC实际上会跟踪活动对象 并标记它们 每个未标记的
  • 为什么即使我的哈希码值相同,“==”也会返回 false

    我写了一个像这样的课程 public class HashCodeImpl public int hashCode return 1 public static void main String args TODO Auto generat
  • 如何在 JPQL 或 HQL 中进行限制查询?

    在 Hibernate 3 中 有没有办法在 HQL 中执行相当于以下 MySQL 限制的操作 select from a table order by a table column desc limit 0 20 如果可能的话 我不想使用
  • Android中如何使用JNI获取设备ID?

    我想从 c 获取 IMEIJNI 我使用下面的代码 但是遇到了未能获取的错误cls 它总是返回NULL 我检查了环境和上下文 它们都没有问题 为什么我不能得到Context班级 我在网上搜索了一下 有人说我们应该使用java lang Ob
  • 如何检查某个元素是否存在于一组项目中?

    In an ifJava中的语句如何检查一个对象是否存在于一组项目中 例如 在这种情况下 我需要验证水果是苹果 橙子还是香蕉 if fruitname in APPLE ORANGES GRAPES Do something 这是一件非常微
  • 如何在 ant 中为 junit 测试设置 file.encoding?

    我还没有完全完成file encoding 和 ant https stackoverflow com questions 1339352 how do i set dfile encoding within ants build xml
  • Akka 与现有 java 项目集成的示例

    如果我已经有现有的javaWeb 应用程序使用spring and servlet容器 将 Akka 集成到其中的正确方法是什么 就像我将会有Actor1 and Actor2互相沟通的 开始使用这些演员的切入点是什么 例如 1 把它放在那
  • 在Java中运行bat文件并等待

    您可能会认为从 Java 启动 bat 文件是一项简单的任务 但事实并非如此 我有一个 bat 文件 它对从文本文件读取的值循环执行一些 sql 命令 它或多或少是这样的 FOR F x in CD listOfThings txt do
  • 蓝牙发送和接收文本数据

    我是 Android 开发新手 我想制作一个使用蓝牙发送和接收文本的应用程序 我得到了有关发送文本的所有内容逻辑工作 但是当我尝试在手机中测试它时 我看不到界面 这是Main Activity Code import android sup
  • 如何将 HTML 链接放入电子邮件正文中?

    我有一个可以发送邮件的应用程序 用 Java 实现 我想在邮件中放置一个 HTML 链接 但该链接显示为普通字母 而不是 HTML 链接 我怎样才能将 HTML 链接放入字符串中 我需要特殊字符吗 太感谢了 Update 大家好你们好 感谢
  • 使用 Elastic Beanstalk 进行 Logback

    我在使用 Elastic Beanstalk 记录应用程序日志时遇到问题 我正在 AWS Elastic Beanstalk 上的 Tomcat 8 5 with Corretto 11 running on 64bit Amazon Li
  • 在 Java 中获取并存储子进程的输出

    我正在做一些需要我开始子处理 命令提示符 并在其上执行一些命令的事情 我需要从子进程获取输出并将其存储在文件或字符串中 这是我到目前为止所做的 但它不起作用 public static void main String args try R
  • JDBC 时间戳和日期 GMT 问题

    我有一个 JDBC 日期列 如果我使用 getDate 则会得到 date 仅部分2009 年 10 月 2 日但如果我使用 getTimestamp 我会得到完整的 date 2009 年 10 月 2 日 13 56 78 890 这正
  • 不可变的最终变量应该始终是静态的吗? [复制]

    这个问题在这里已经有答案了 在java中 如果一个变量是不可变的并且是final的 那么它应该是一个静态类变量吗 我问这个问题是因为每次类的实例使用它时创建一个新对象似乎很浪费 因为无论如何它总是相同的 Example 每次调用方法时都会创
  • java 中的蓝牙 (J2SE)

    我是蓝牙新手 这就是我想做的事情 我想获取连接到我的电脑上的蓝牙的设备信息并将该信息写入文件中 我应该使用哪个 api 以及如何实现 我遇到了 bluecove 但经过几次搜索 我发现 bluecove 不能在 64 位电脑上运行 我现在应
  • Java RMI - 客户端超时

    我正在使用 Java RMI 构建分布式系统 它必须支持服务器丢失 如果我的客户端使用 RMI 连接到服务器 如果该服务器出现故障 例如电缆问题 我的客户端应该会收到异常 以便它可以连接到其他服务器 但是当服务器出现故障时 我的客户端什么也
  • 抛出 Java 异常时是否会生成堆栈跟踪?

    这是假设我们不调用 printstacktrace 方法 只是抛出和捕获 我们正在考虑这样做是为了解决一些性能瓶颈 不 堆栈跟踪是在构造异常对象时生成的 而不是在抛出异常对象时生成的 Throwable 构造函数调用 fillInStack
  • MiniDFSCluster UnsatisfiedLinkError org.apache.hadoop.io.nativeio.NativeIO$Windows.access0

    做时 new MiniDFSCluster Builder config build 我得到这个异常 java lang UnsatisfiedLinkError org apache hadoop io nativeio NativeIO
  • Java 11 - 将 Spring @PostConstruct 替换为 afterPropertiesSet 或使用 initMethod

    我正在使用 spring 应用程序 有时会使用 PostConstruct用于代码和测试中的设置 看来注释将被排除在外Java 11 https www baeldung com spring postconstruct predestro

随机推荐

  • 为什么这个性能计数器总是返回零? [复制]

    这个问题在这里已经有答案了 我有这个代码 using PerformanceCounter pfc new PerformanceCounter Processor Processor Time Total return pfc NextV
  • Backbone.js:将视图、集合、模型分离到不同的js文件中,它们无法相互识别

    我使用 Backbone js 创建一个 Web 应用程序 将所有视图 集合和模型写入一个 js 文件 成功了 现在我想将它们分成不同的js文件 就像
  • VBA Excel 文件转换为 CSV,保持 CSV 文件名与原始工作簿相同

    我正在努力寻找一种快速的方法来拯救我的xlsx文件为csv具有相同文件名的文件xlsx文件 就在csv格式 我已经用快捷方式录制了一个宏 但问题是 每当我尝试使用新文件时 它都会保存为与我录制初始宏相同的文件名 即见下文 可能是因为我在代码
  • 如何将数组转换为ARM模板中一个对象的属性?

    我正在寻找一种将数组 例如字符串 转换为一个对象的方法 其中属性是从数组值生成的 用例 我想生成一个tags基于资源名称列表的具有资源链接的对象 我需要这样做 以link App Service资源到一个Application Insigh
  • AWK 比较两个文件,如果匹配,则将新列从第二个文件添加到第一个文件

    我有问题 我想比较两个文件 第一个文件是参考 ABCA4 INHR AMT INHR BTK ONKO1 PAP ONKO2 第二个文件用于比较 3 1 2 T ENG1 ABCA4 ff 3 1 2 T ENG1 ABCA4 gg 5 1
  • HTML5 Canvas 和鼠标事件问题

    我正在尝试创建一个包含客户签名框的 HTML5 页面 这大部分用于平板电脑 这是通过 Canvas 元素和鼠标上的 JavaScript 事件来完成的 问题 1 Y 部分工作完美 但 X 部分仅在我将画布设置为 300 时才工作 如果宽度为
  • 使用 ANTLR 通过 Python 解析一些 Java 代码

    我想在 Python 中使用 ANTLR 构建一个 Java 解析器 我从 ANTLR 存储库下载了语法 Lexer https github com antlr grammars v4 blob master java java Java
  • XNA 中的四元数旋转

    我这样做对吗 显然不是因为否则我不会在这里发布问题 但我正在尝试围绕另一个模型对一个模型进行四元数旋转 假设我有一个具有向量 3 位置和浮动旋转角度的盒模型 我还有一个指向盒子模型的截头锥体模型 其位置可以说距盒子模型 50 个单位 平截头
  • EC2实例克隆

    是否可以克隆 EC2 实例数据以及全部数据 你可以做一个AMI http docs aws amazon com AWSEC2 latest UserGuide AMIs html现有实例 然后使用该实例启动其他实例AMI http doc
  • 在本地测试谷歌地图V3地理位置?

    我正在尝试在我的计算机上测试一些地理定位代码 但我什至无法运行这些示例 虽然它们从文档网站完美运行 但当我尝试从计算机打开 html 文件时 我得到一个空白页面 但我所做的就是尝试检测我的位置 这是代码
  • (新)收到GCM消息,但如何解析?

    我正在使用 新 GCM 它是 Google Play 服务的一部分 它不使用适用于 Android 和服务器的 jar Android 使用 Google Play apk 来注册 接收甚至发送消息 在服务器端 我们与 GCM 通信所需要做
  • 为什么选择 PRG 模式而不是其他模式?

    我需要防止为客户的网站重复提交表单 我们需要用户提供一些表单数据用于订单确认页面 我们对网络服务器使用负载平衡 方法 1 发布 重定向 获取 PRG pattern http en wikipedia org wiki Post Redir
  • 如何在 JavaScript 代码中获取数据属性的值?

    我有下一个html span span 是否可以获取以data 并将其用在JavaScript代码类似于下面的代码 现在我得到null结果 document getElementById the span addEventListener
  • 在 JAX-RS 资源中组合 @Context 和 @RolesAllowed?

    是否可以使用Context http docs oracle com javaee 6 api javax ws rs core Context html注释和允许的角色 https docs oracle com javaee 6 api
  • Valgrind 未显示错误使用 c_str() 的无效内存访问

    想象一下这样的代码 string f string r ab return r int main const char c f c str printf s n c return 0 这段代码可能会崩溃 对吧 因为那个字符串c指向被破坏 但
  • 将大型 NumPy 数组写入文件的有效方法

    我目前有一个在 PiCloud 上运行的项目 其中涉及 ODE 求解器的多次迭代 每次迭代都会生成一个约 30 行和 1500 列的 NumPy 数组 每次迭代都会附加到先前结果数组的底部 通常 我只是让函数返回这些相当大的数组 将它们保存
  • React Google Maps Api 在第一次渲染时不会渲染子元素

    我正在尝试在我的应用程序中使用 Google Maps Api 一切都很好 直到我想在地图的第一次渲染时显示标记 标记没有显示 但如果我在渲染完成后再添加一个标记 标记就会出现 所以问题是我想用已经存在的标记渲染地图 我不想等待选择某个位置
  • Excel 图表不应有尾随的空单元格占用轴上的空间

    想要在一系列数据上绘制图表 其长度可以根据用户输入而改变 因此 范围末尾的空单元格不应出现在图表上 并且轴根本不应具有这些值 Detail 复利计算器 用户可以进入投资期 如果图表正确显示 10 年 并且用户将期间更改为 5 年 那么图表应
  • 带有外键字段列表的 Django 表单

    我有以下模型 我正在尝试为其创建表单 class Letter models Model title models CharField max length 100 publish date models TimeField class L
  • J2Mod 基本主从问题

    我正在尝试使用 Modbus 从站和主站j2mod 它的版本是 1 0 6 所以与另一个程序兼容 对于我在网上找到的代码 我确实有一些一般性问题 我几乎没有找到任何有用的文档 所以我有点无能为力 TCP主控器 this addr InetA