永发信息网

在MODSCAN调试,怎么一直有“modbus message time-out”是什么原因

答案:4  悬赏:30  手机版
解决时间 2021-03-10 08:39
在MODSCAN调试,怎么一直有“modbus message time-out”是什么原因
最佳答案
Modbus两种协议的编程方法:

1、LRC校验
LRC域是一个包含一个8位二进制值的字节。LRC值由传输设备来计算并放到消息帧中,接收设备在接收消息的过程中计算LRC,并将它和接收到消息中LRC域中的值比较,如果两值不等,说明有错误。
LRC校验比较简单,它在ASCII协议中使用,检测了消息域中除开始的冒号及结束的回车换行号外的内容。它仅仅是把每一个需要传输的数据按字节叠加后取反加1即可。下面是它对应的代码:

BYTE GetCheckCode(const char * pSendBuf, int nEnd)//获得校验码
{
BYTE byLrc = 0;
char pBuf[4];
int nData = 0;
for(i=1; i{
//每两个需要发送的ASCII码转化为一个十六进制数
pBuf [0] = pSendBuf [i];
pBuf [1] = pSendBuf [i+1];
pBuf [2] = '\0';
sscanf(pBuf,"%x",& nData);
byLrc += nData;
}

byLrc = ~ byLrc;
byLrc ++;
return byLrc;
}

2、CRC校验
CRC域是两个字节,包含一16位的二进制值。它由传输设备计算后加入到消息中。接收设备重新计算收到消息的CRC,并与接收到的CRC域中的值比较,如果两值不同,则有误。
CRC是先调入一值是全“1”的16位寄存器,然后调用一过程将消息中连续的8位字节各当前寄存器中的值进行处理。仅每个字符中的8Bit数据对CRC有效,起始位和停止位以及奇偶校验位均无效。
CRC产生过程中,每个8位字符都单独和寄存器内容相或(OR),结果向最低有效位方向移动,最高有效位以0填充。LSB被提取出来检测,如果LSB为1,寄存器单独和预置的值或一下,如果LSB为0,则不进行。整个过程要重复8次。
全部回答

网页链接
Modbus是基于16Bit的。
根据数据包的要求,一般一次读写不超过125个数据。
所以先考虑是否读取长度问题。
其次,通讯的数据流要分析一下,看校验码之类的对不对。
这个问题经常有,一般分好多种。
如果能出现这句话说明,接口是的好的,如果接口不好,就会出现,设备连接不上的提示。
现在的问题归纳大概有以下几个:
1,连接的点的地址太多,试试改到10个地址;(因为接口质量问题,有时候连接的地址多,就会出错);
2,连接的设备的站号不对;
3,选择的数据格式不对,试试选'3
Modbus两种协议的编程方法:
1、LRC校验
LRC域是一个包含一个8位二进制值的字节。LRC值由传输设备来计算并放到消息帧中,接收设备在接收消息的过程中计算LRC,并将它和接收到消息中LRC域中的值比较,如果两值不等,说明有错误。
LRC校验比较简单,它在ASCII协议中使用,检测了消息域中除开始的冒号及结束的回车换行号外的内容。它仅仅是把每一个需要传输的数据按字节叠加后取反加1即可。下面是它对应的代码:
BYTE GetCheckCode(const char * pSendBuf, int nEnd)//获得校验码
{
BYTE byLrc = 0;
char pBuf[4];
int nData = 0;
for(i=1; i{
//每两个需要发送的ASCII码转化为一个十六进制数
pBuf [0] = pSendBuf [i];
pBuf [1] = pSendBuf [i+1];
pBuf [2] = '\0';
sscanf(pBuf,"%x",& nData);
byLrc += nData;
}
byLrc = ~ byLrc;
byLrc ++;
return byLrc;
}
2、CRC校验
CRC域是两个字节,包含一16位的二进制值。它由传输设备计算后加入到消息中。接收设备重新计算收到消息的CRC,并与接收到的CRC域中的值比较,如果两值不同,则有误。
CRC是先调入一值是全“1”的16位寄存器,然后调用一过程将消息中连续的8位字节各当前寄存器中的值进行处理。仅每个字符中的8Bit数据对CRC有效,起始位和停止位以及奇偶校验位均无效。
CRC产生过程中,每个8位字符都单独和寄存器内容相或(OR),结果向最低有效位方向移动,最高有效位以0填充。LSB被提取出来检测,如果LSB为1,寄存器单独和预置的值或一下,如果LSB为0,则不进行。整个过程要重复8次。在最后
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
huawei/华为 che1-cl10 荣耀畅玩4x好吗
We should keep calm in some dangerous s
创昆信贷发不出工资了吗?
怎样才能在密码上面弄上照片呢
育蒙国际幼稚园在哪里啊,我有事要去这个地方
下载社旗贴吧!不知道怎么下
电容笔怎么用
潍坊学院有个萝卜学车?
倒右库时,库口三条黄色虚线,看哪条黄色虚线
第一次约会男生问你是玩玩还是认真的
车停小区里被别人蹭了 没监控 找不到肇事车
中鸡中心派出所这个地址在什么地方,我要处理
同问 现在夫妻房产证一方加名字需要缴税吗
销售差异分析怎么写
自己做PROTEL99元件封装的大小怎么确定自己做
推荐资讯
知道新历生日日期,如何计算旧历生日日期?日期
煲汤砂锅选土砂锅好还是上釉的好?
英语翻译我姓毕!未婚!法文怎么称呼姓毕的未婚
MATLAB!a=[1 2 3 4],b=[5 6 7 8];现需从两数
2016年商水县直一中学校国庆节放假几天
看看这个CF视频的背景音乐是什么歌曲吧!
信昌粮油店这个地址在什么地方,我要处理点事
一般情况下如何求向量点共线
我用腾讯手机管家加了密手机相册, 相册里边
微信朋友圈里怎样发地图
搜狗浏览器不能登录邮政储蓄银行
如右图,梯形ABCD中,CD边的长是AB边的两倍,DE=
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?