有个问题请教一下?关于modbus-rtu协议的

2019-07-21 08:56发布

最近在用MIK-P300压力变送器,需要使用RS485和MODBUS-RTU通信协议,希望好心人帮助一下。跪谢!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
Slogan
1楼-- · 2019-07-22 04:51
323232 发表于 2018-10-19 13:12
首先看看协议是否正确,看看有没有什么多发漏发的。

上一步确认好后,把单片机接到电脑上,打开串口助手 ...

while(1)
        {

                rs485buf[0]=0X01;
                rs485buf[1]=0X03;
                rs485buf[2]=0X00;
                rs485buf[3]=0X04;
                rs485buf[4]=0X00;
                rs485buf[5]=0X01;
                rs485buf[6]=0XC5;
                rs485buf[7]=0XCB;

                        RS485_Send_Data(rs485buf,8);

                }        


我现在以这样的格式发送指令,后面两个crc校验数据也是有的,但是变送器没有响应原因可能是什么?      
245925587
2楼-- · 2019-07-22 05:54
Slogan 发表于 2018-10-19 09:42
while(1)
        {

modbus协议是发送完一帧数据 后,接收方在一个一定的时间内没有接收到数据,代表,一帧结束,发送的时候,不能一直发,发送完一帧,等待下,然后再发第二帧,发送完一帧,加个延时发第二帧
Slogan
3楼-- · 2019-07-22 07:54
 精彩回答 2  元偷偷看……
245925587
4楼-- · 2019-07-22 11:28
Slogan 发表于 2018-10-19 16:39
while(1)
        {
       

发整个工程出来吧
Slogan
5楼-- · 2019-07-22 13:28
245925587 发表于 2018-10-19 16:44
发整个工程出来吧

就是这个,在战舰的基础上改的
245925587
6楼-- · 2019-07-22 18:35
Slogan 发表于 2018-10-19 16:52
就是这个,在战舰的基础上改的

RS485_Send_Data(rs485buf,8);//·¢Ëí8¸ö×Ö½ú     

delay_ms(500);
//这里加一个延时先测试下  ,如果可以,就改一下,用一定时器来判断一帧结束否,然后再主程序中发送一帧数据后,查询接收完成否,如果接收完成,就处理,如果在一定时间内没接收到,就重新发送一次;
如果一直测试都没有,用USB转485工具,电脑串口助手,看下单片机发送的数据正不正确,然后用这个USB转485工具连接传感器,用串口助手发送这个命令,看下传感器有没数据传回,一个一个去测试  
               
RS485_Receive_Data(rs485buf,&key);

一周热门 更多>