modbus协议中的线圈是对某一个bit的操作就是对线圈的操作吗?

2019-07-14 16:54发布

小弟最近在搞关于modbus方面的东西,主要参考的是freemodbus v1.5,看到线圈的代码后有点不能理解,主要是我的水平原因,就到坛子上来请教做过modbus的大神。
我的理解:
线圈和离散量都被看成单个的数字量,按我的理解是对某一个bit的操作就是对线圈的操作。
我的困惑:
但是让我困惑的是在源码中,对线圈进行操作也是通过对字节的操作来的,那么是不是可以这样理解,比如我的从机中有16个线圈,起始地址是0x0000,那么我要对第1个和8个线圈写1,那么我应该向从机发送0x8100就能达到效果呢。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
testd035
1楼-- · 2019-07-14 20:29
没有使用过
wang21cj
2楼-- · 2019-07-14 22:08
顶上去         
she558742
3楼-- · 2019-07-15 02:31
本帖最后由 enjoyfreescal 于 2015-12-11 15:59 编辑

起始地址只是你要从哪个地址开始写或则读,比如你有16个DO,写第一个和第八个那么起应该是u8 CoilBuf[]中的CoilBuf[0] |= 0x81;freemodebus中V1.5对应的地址。
//读写线圈状态 0x01 0x05 0x0F
u8 ucRegCoilsBuf[REG_COILS_SIZE/8]={0};


在Port.c中有具体怎么读,怎么写的逻辑的。
chiaho168
4楼-- · 2019-07-15 03:13
 精彩回答 2  元偷偷看……

一周热门 更多>