问题标签 [modbus]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
6601 浏览

visual-studio-2010 - MFC 中的 libmodbus

我正在尝试将 libmodbus 提供的 modbus 库集成到 Visual Studio 2010 中的自定义 MFC 项目中。

到目前为止,我遵循的步骤如下:

1) 我在 Visual Studio 2010 中创建了项目,如下面的快照所示:

图1

图2

图3

2)我已经编辑了代码以包含一个小的 hello world 代码,只是为了检查它是否可以编译。

图4

3) 我已将 libmodbus-3.0.3 的 src 文件夹中的 .c 和 .h 文件复制到 Visual Studio 项目文件夹中,如下所示,并将它们包含在项目中。

图5

图6

4)当我尝试编译时,它给了我以下错误:

图7

我的疑惑如下:

1) 我是否在我的项目中正确包含了 libmodbus?还是有更好或更正确的方法来做同样的事情?

2)如何消除即将出现的错误:无法打开包含文件:'config.h'。没有这样的文件或目录。我已经看到我从http://libmodbus.org/download/
下载的 libmodbus-3.0.3 中没有 config.h 文件 如何继续?

谢谢你。

0 投票
0 回答
338 浏览

java - Java libmodbus 本机库 unsatisfiedLinkError

嗨,当我执行我的项目 jar 时,我得到以下信息。

该库在我的路径中。我也尝试过绝对路径,但没有任何安慰。但是当我运行一个具有相同共享库的小型测试程序时,它运行良好。但是当我将它包含在我的项目中时,它会产生异常。我不知道为什么它表现得很奇怪。

这是我的文件

JNI Java 类 ::

C 代码的头文件

本机 C 代码

我没有奇怪的行为。谁能指导我解决我的问题?

谢谢

0 投票
1 回答
128 浏览

function - Seneca Z-3AO 是否理解功能 5 代码(Modbus RTU)?

在用户手册中他们只指定了“模拟输出保持寄存器”的地址,它允许您实现功能码 3、6 和 16。

PS。我想更改 Eprflag 寄存器(位 12)中的单个线圈(位),但用户手册没有指定该线圈的数据地址。例如:第 12 位的线圈编号为 00002,这给了我们 2-1=1 作为数据地址。

0 投票
1 回答
2049 浏览

arduino - Arduino ModBus 通信

我有主/从代码 Arduinos。如何将它们与 Arduino 板上的引脚连接?我正在使用SimpleModbus库,但没有关于连接它们的信息。

图书馆是

0 投票
1 回答
382 浏览

vala - 在 Vapi 定义中用于通过引用传递数组的参数

我有以下使用 libmodbus 使用 ModbusTCP 读取单个设备寄存器的 C 代码:

现在尝试使用我生成的 Vapi 将其切换到 Vala,new 和 read 的内容是:

翻译后的 Vala 程序是:

巧合的是,当我将它编译成 C 代码,然后使用 gcc 编译成二进制文件时,我得到了错误:

这并不奇怪。但我不确定我应该如何修改 Vapi 内容以更接近 libmodbus 标头中的原型:

我尝试了混合使用数组选项并使用“out”,但一次只能获得一个双字节寄存器。

感谢您的任何建议。

0 投票
2 回答
4677 浏览

python-3.x - 如何在 Python 中重新排列字节数组中的字节?

我是 python 新手,从事与嵌入式相关的工作(我的大部分编程经验都是使用 C)。

我正在从串行端口将一个四字节浮点数读入一个字节数组,但它不是正常的小端顺序 DCBA,而是编码为 CDAB。或者它可能被编码为 BADC。(其中 A 是最高有效字节,D 是 LSB)。在字节数组中交换字节的正确方法是什么?

例如,我有

我希望能够任意排列 tmp 中的字节,然后将其 unpack() 放回浮点数中。

在做任何与嵌入式系统相关的事情时,这样的事情似乎是必不可少的,但要么我在谷歌上搜索错了,要么没有明确的答案(还没有!)。

编辑:当然,我可以这样做:

但必须有更好的方法......

理想情况下,我希望能够随意切片和重新连接,或者如果可能的话,甚至一次更换一个切片。

0 投票
3 回答
78688 浏览

python - Python modbus 库

我必须控制带有串行接口的 modbus 设备。我没有使用modbus的经验。但我的简短研究揭示了几个 modbus 库

有什么优点/缺点,还有更好的选择吗?

0 投票
1 回答
491 浏览

modbus - 您如何找到总 Modbus/TCP 数据的长度?

Modbus/TCP 数据包包括长度部分,即总 Modbus/TCP 数据的长度减去 6 个字节。您如何计算 Modbus/TCP 总数据的长度?

https://www.scadaforce.com/modbus

0 投票
3 回答
24911 浏览

java - 获取字节数组的 CRC 校验和并将其添加到该字节数组

我有这个字节数组:

现在,这个字节数组的CRC校验和应该是0x60,0x0A。我希望 Java 代码重新创建此校验和,但我似乎无法重新创建它。我试过crc16:

并使用 Integer.toHexString() 转换它们,但没有一个结果与正确的 CRC 匹配。有人可以在CRC公式方面为我指出正确的方向。

0 投票
3 回答
335 浏览

c# - 如何从定时事件中恢复功能

好的,所以我有一个名为 readSensor 的函数,你猜对了……读取传感器。

但传感器通常需要大约 100 毫秒才能做出响应。所以在 readSensor 函数中,我基本上只是在启动一个计时器。

在定时事件中,我读取了串口并得到了回复。

然而,这意味着当我希望它位于 readSensor 函数中时,我的响应位于 onTimedEvent 中。

基本上从我希望能够做到这一点的主要形式。

值 = 读取传感器()

此刻我所能做的就是 readSensor() ,然后一旦 timedEvent 触发,我就可以通过在消息框中显示响应来看到响应正在返回。

这是我的代码。(我错过了很多串口设置和东西,但希望你能看到我遇到的问题)

我不想在函数中等待 100 毫秒,尽管轮询计时器,因为这会使我的程序变慢..

我想以某种方式将响应返回到 readSensor 函数,然后返回到表单。

在主要形式中,我基本上只是在说

单击按钮。