找回密码
 立即注册
查看: 1520|回复: 1

通讯中遇到的问题

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:449
  • 最近打卡:2025-05-01 08:38:15

12

主题

110

回帖

1072

积分

金牌会员

积分
1072
发表于 2023-2-19 13:47:36 | 显示全部楼层 |阅读模式
我在官方移植版中去掉了原来的各个任务,只建立了一个用户任务,通过485通讯,定时开启多台escalator设备,其中有个定义
unsigned char TURN_ON[11] = { 0x00,0x10,0x00,0x0B,0x00,0x01,0x02,0x00,0x01,0x00,0x00 }
刚开始在用户任务里如下编写程序,可以每次RTC中断时,从485发送开启1台escalator设备指令:

while (1)
        {
                if (B_Alarm)
                {
                        B_Alarm = 0;
                        TURN_ON[0] = escalator_number;
                        crc = MODBUS_CRC16(TURN_ON, 9);
                        TURN_ON[9] = (unsigned char)crc;
                        TURN_ON[10] = (unsigned char)(crc >> 8);
                        for (i = 0; i < 11; i++)
                        {
                                TX3_Buffer[COM3.TX_write++] = TURN_ON;
                                if (COM3.TX_write >= COM_TX3_Lenth)
                                {
                                        COM3.TX_write = 0;
                                }
                        }
                        if (!COM3.B_TX_busy)
                        {
                                RS485dir = 1;//RS485_dir设置为发送状态
                                COM3.B_TX_busy = 1;
                                S3TI = 1;
                        }
                        xTaskDelayUntil(&xlastwaketime, 50);
                        if (escalator_number < 10)
                        {
                                escalator_number++;
                        }
                        else
                        {
                                escalator_number = 1;
                        }
                       
                        if (alarm_number < 9)
                        {
                                alarm_number++;
                                set_alarm();
                        }
                        else
                        {
                                alarm_number = 1;
                                set_alarm();
                        }
                       
                }
                else
                {
                        taskYIELD();
                }
        }

从机截取的报文如下:
通讯中遇到的问题-1.png


后面修改程序,想每次RTC中断时,从485发送开启多台escalator设备指令,但是总是不成功:

while (1)
        {
                if (B_Alarm)
                {
                        B_Alarm = 0;
                        for (escalator_number = 1; escalator_number < 10; escalator_number++)
                        {
                                TURN_ON[0] = escalator_number;
                                crc = MODBUS_CRC16(TURN_ON, 9);
                                TURN_ON[9] = (unsigned char)crc;
                                TURN_ON[10] = (unsigned char)(crc >> 8);
                                for (i = 0; i < 11; i++)
                                {
                                        TX3_Buffer[COM3.TX_write++] = TURN_ON;
                                        if (COM3.TX_write >= COM_TX3_Lenth)
                                        {
                                                COM3.TX_write = 0;
                                        }
                                }
                                if (!COM3.B_TX_busy)
                                {
                                        RS485dir = 1;
                                        COM3.B_TX_busy = 1;
                                        S3TI = 1;
                                }
                                xTaskDelayUntil(&xlastwaketime, 50);
                        }
                        if (alarm_number < 9)
                        {
                                alarm_number++;
                                set_alarm();
                        }
                        else
                        {
                                alarm_number = 1;
                                set_alarm();
                        }                       
                }
                else
                {
                        taskYIELD();
                }
        }


从机截取的报文如下:
通讯中遇到的问题-2.png


研究了半天没搞明白哪里出问题,请大佬门指导下,谢谢
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2023-2-19 20:57:25 | 显示全部楼层
通信一堆二进制数据我们看不懂的,看着像是MODBUS-RTU协议,报文有什么问题?多点文字描述吧,我们不参与你的项目,是很难知道你的问题的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:37 , Processed in 0.119649 second(s), 51 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表