问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

工业Modbus网关,工业串口网关怎么使用?

发布网友 发布时间:2022-04-20 09:52

我来回答

2个回答

热心网友 时间:2023-08-12 10:45

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<end; i+=2) //i初始为1,避开“开始标记”冒号
{
//每两个需要发送的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次。在最后一位(第8位)完成后,下一个8位字节又单独和寄存器的当前值相或。最终寄存器中的值,是消息中所有的字节都执行之后的CRC值。
CRC添加到消息中时,低字节先加入,然后高字节。下面是它对应的代码:
WORD GetCheckCode(const char * pSendBuf, int nEnd)//获得校验码
{
WORD wCrc = WORD(0xFFFF);
for(int i=0; i<nEnd; i++)
{
wCrc ^= WORD(BYTE(pSendBuf[i]));
for(int j=0; j<8; j++)
{
if(wCrc & 1)
{
wCrc >>= 1;
wCrc ^= 0xA001;
}
else
{
wCrc >>= 1;
}
}
}
return wCrc;
}

对于一条RTU协议的命令可以简单的通过以下的步骤转化为ASCII协议的命令:

1、 把命令的CRC校验去掉,并且计算出LRC校验取代。
2、 把生成的命令串的每一个字节转化成对应的两个字节的ASCII码,比如0x03转化成0x30,0x33(0的ASCII码和3的ASCII码)。
3、 在命令的开头加上起始标记“:”,它的ASCII码为0x3A。
4、 在命令的尾部加上结束标记CR,LF(0xD,0xA),此处的CR,LF表示回车和换行的ASCII码。

掌握两种协议的编程方法,剩下的就是C语言的问题了。

热心网友 时间:2023-08-12 10:45

编串口只要把要执行的命令通过串口发过去就可以了,具体MODBUS命令需要很长时间研究
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...频数和频率成正比,2频数一定时,频率与总次数成反比,对不对_百度... ...总次数之间的关系是( ) A.频数越大,频率越大 B.总次数一定时,频数越... 实验的总次数、频数及频率三者的关系是( )A.频数越大,频率越大B.频数... 嘎牙鱼的做法大全 安无线网要用多少元网费要交多少元不用用了要不要交网费,想寻求大家的... 无线网费1年多少钱 "Hbr"作为“港”的缩写,其在英语中的使用频率和应用示例如何? 【车主点评:吉利汽车帝豪GL 使我荣华富贵】 请问,如果,家用,自动挡,帝豪gl,英朗,科沃兹,卡罗拉,轩逸,同等价位,建议... ...景点?既能休闲的时候看看又能长点知识@@谢谢各位了! 开利modbus网关如何组态 Modbus到底是什么 modbus网关最多负载多少个系统 s7-300支持modbus-rtu通信吗?有没有专门的协议库 两台S7200同过MOXA3280网关modebus RTU转以太网怎... 请问modbus网关如何选择? modbus网关是什么? modbus网关如何进行通讯 什么是MODBUS网关 智能仪表RTU通过网关转TCP可以和STEP7 300TCP通讯吗? DTU 和 RTU 的主要区别是什么? 外行人问 网关型 RTU 数据采集型 RTU 表示什么意思... Modbus网关是什么? 串口服务器和Modbus TCP/RTU 网关是同一回事吗? modbus rtu网关是什么? 防水阴阳角做法规范 美尚系统门窗怎么样?有什么特点? 安格尔门窗a7系列尺寸 美尚系统门窗有什么特点? 哪些地方应该做防水? modbus gateway什么意思 HART modbus profibus 这三种协议有什么区别?这几... 我想问一下can和modbus区别是什么呢? “教我”拼音是什么? “教我”和“叫我”有什么区别? 教我拼音是什么 “教我”和“叫我”有什么区别? ……教我……五百字作文 用教我……的是……造句 教我 的英文怎么说 教我什么的是什么造句 教我____的是____ 半命题作文:什么教我什么,400字以上。 ____教我____作文600字 以《___教我__》为题写一篇作文 ( )教我( )作文400字 半命题作文(____教我____) 什么教我什么作文450字6篇 教我英文 ______教我____ 作文