找回密码
 立即注册
查看: 2075|回复: 15

modbus库

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:381
  • 最近打卡:2025-05-01 07:33:48
已绑定手机

12

主题

43

回帖

698

积分

高级会员

积分
698
发表于 2024-2-18 22:46:53 | 显示全部楼层 |阅读模式
在csdn上看到一个关于STC32G的主从库地址STC32G12K128单片机的 moubus-rtu 从机测试工程_单片机modbus rtu从站程序-CSDN博客
大家可以看一下作为参考
我基于这个改了一下用到我的一个5×5键盘项目上,使用STC8H单片机。在电脑上使用Modbus poll,串口助手进行测试正常,功能码都可以使用。
但是与PLC连机通信(PLC做主机,单片机做从机),PLC一直报通信超时故障,一直没有找到问题在哪里,推测是3.5T这个地方有问题,项目时间比较紧,
就仍然使用了梁工做的10H,03H这个代码了(微改了一下),和PLC直接联机正常了。
如果有大师能够指点改正一下代码,STC库就可以有完整的主从机代码了。谢谢啦

STC32G_Project_modbus_rtu_slave.zip

1.42 MB, 下载次数: 229

这个是源文件

modbus_keypad.zip

3.41 MB, 下载次数: 181

这个是STC8H单片机用的modbus代码,电脑软件读写正常,但PLC做主机读写不正常 ...

回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:135
  • 最近打卡:2024-12-25 10:15:05

47

主题

1350

回帖

8058

积分

荣誉版主

冲哥视频教程和各种开源资料QQ交流群884047237,可群

积分
8058
QQ
发表于 2024-2-19 08:19:47 | 显示全部楼层
最好抓下数据包,如果POLL能用的话,那PLC应该也是没有问题的,抓一下通信的时候主机发的数据,看下是不是PLC的程序没写对,发出的数据是不是有问题,尤其是读写的站号地址波特率等等

点评

如果抓包抓出来的主机数据没问题的话,用串口助手模拟下主机连接这个单片机,然后给他发抓到的PLC的命令,看回应了什么数据,在分析问题  详情 回复 发表于 2024-2-19 08:24
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:135
  • 最近打卡:2024-12-25 10:15:05

47

主题

1350

回帖

8058

积分

荣誉版主

冲哥视频教程和各种开源资料QQ交流群884047237,可群

积分
8058
QQ
发表于 2024-2-19 08:24:02 | 显示全部楼层
电子DI*** 发表于 2024-2-19 08:19
最好抓下数据包,如果POLL能用的话,那PLC应该也是没有问题的,抓一下通信的时候主机发的数据,看下是不是P ...

如果抓包抓出来的主机数据没问题的话,用串口助手模拟下主机连接这个单片机,然后给他发抓到的PLC的命令,看回应了什么数据,在分析问题
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:381
  • 最近打卡:2025-05-01 07:33:48
已绑定手机

12

主题

43

回帖

698

积分

高级会员

积分
698
发表于 2024-2-19 11:59:16 | 显示全部楼层
电子DI*** 发表于 2024-2-19 08:24
如果抓包抓出来的主机数据没问题的话,用串口助手模拟下主机连接这个单片机,然后给他发抓到的PLC的命令 ...

PLC发的命令正确,就是单片机没有回复。但是单片机与电脑poll通信,收发数据格式也对。抓到PLC发的命令和poll发的命令一样,串口助手收发就是正常的。

点评

这种情况下就只能mcu仿真看下是哪步没执行到了或者是哪里延迟太久了  详情 回复 发表于 2024-2-19 12:58
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:135
  • 最近打卡:2024-12-25 10:15:05

47

主题

1350

回帖

8058

积分

荣誉版主

冲哥视频教程和各种开源资料QQ交流群884047237,可群

积分
8058
QQ
发表于 2024-2-19 12:58:27 | 显示全部楼层
一束光*** 发表于 2024-2-19 11:59
PLC发的命令正确,就是单片机没有回复。但是单片机与电脑poll通信,收发数据格式也对。抓到PLC发的命令和 ...

这种情况下就只能mcu仿真看下是哪步没执行到了或者是哪里延迟太久了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:381
  • 最近打卡:2025-05-01 07:33:48
已绑定手机

12

主题

43

回帖

698

积分

高级会员

积分
698
发表于 2024-2-21 23:21:31 | 显示全部楼层
电子DI*** 发表于 2024-2-19 12:58
这种情况下就只能mcu仿真看下是哪步没执行到了或者是哪里延迟太久了

您好,我今天晚上在家针对这个情况研究了一下,还是连着电脑,显示调整的通信超时,发现时间长短对通信影响不大(时间调整幅度太大肯定影响通信),想着降低波特率测试一下。
和电脑通信正常时使用的主频时22.1184MHZ,波特率9600。改为波特率4800(上位机poll也改了),就一直显示通信超时,波特率不变,改变主频,也是这个情况。这个程序好像只认主频22.1184MHZ,波特率9600。目前还没有发现到底什么原因导致这个情况。想请您帮忙看一下哪个地方出现的问题,谢谢啦

Modbus.zip

729.45 KB, 下载次数: 135

重新移植整理的

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:381
  • 最近打卡:2025-05-01 07:33:48
已绑定手机

12

主题

43

回帖

698

积分

高级会员

积分
698
发表于 2024-2-22 00:23:11 | 显示全部楼层
一束光*** 发表于 2024-2-21 23:21
您好,我今天晚上在家针对这个情况研究了一下,还是连着电脑,显示调整的通信超时,发现时间长短对通信影 ...

发完贴,发现了一个问题,就是定时器4的初值在前面改了,后面modbus_slave.c文件没有改,大意了。天明去公司与PLC联机看看效果这么样
#include "modbus_slave.h"
#include        "STC8G_H_Timer.h"

#if (MODBUS_CFG_SLAVE_EN == 1)
#include "dataconversion.h"
static uint16_t xdata uiTimerAutoLoadVal = 61580 ;//定时器的初始值
这个牵涉到后面定时器重装
/*******************************************************************************
* 名    称: MODS_ReciveNew
* 功    能: 串口接收中断服务程序会调用本函数。当收到一个字节时,执行一次本函数。
* 入口参数: 无
* 出口参数: 无
* 作  者: Roger-WY
* 创建日期: 2016-06-29
* 修    改:
* 修改日期:
* 备    注:
*******************************************************************************/
void MODS_ReciveNew(uint8_t _byte)
{
    g_mods_timeout = 0;

    /* 开启硬件定时器 延时3.5个字符的时间 超时则执行 MODS_RxTimeOut 函数 */
    Timer4_Stop();
    T4_Load(uiTimerAutoLoadVal);
    Timer4_Run(1);

    if(g_tModS.RxCount < S_RX_BUF_SIZE)
    {
        g_tModS.RxBuf[g_tModS.RxCount++] = _byte;
    }
}

屏幕截图 2024-02-22 001815.jpg
屏幕截图 2024-02-22 001905.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:381
  • 最近打卡:2025-05-01 07:33:48
已绑定手机

12

主题

43

回帖

698

积分

高级会员

积分
698
发表于 2024-2-22 11:59:40 | 显示全部楼层
一束光*** 发表于 2024-2-22 00:23
发完贴,发现了一个问题,就是定时器4的初值在前面改了,后面modbus_slave.c文件没有改,大意了。天明去 ...

今天经过与PLC联机验证,通信正常。
经过这几天验证,通信超时判断要紧密结合波特率和主频进行计算。
整理好的文件上传上,供大家参考一下,只验证了从机,主机没有用到还没调,有兴趣的可以测试一下。

Modbus1.zip

730.54 KB, 下载次数: 260

验证好的,共享一下

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:422
  • 最近打卡:2025-05-01 09:54:52
已绑定手机

19

主题

3190

回帖

4866

积分

论坛元老

积分
4866
发表于 2024-3-13 11:36:32 | 显示全部楼层
学习下
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:375
  • 最近打卡:2025-04-26 15:51:33
已绑定手机

27

主题

301

回帖

822

积分

高级会员

积分
822
发表于 2024-5-14 15:03:21 | 显示全部楼层
{:5_332:}
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-5-2 04:03 , Processed in 0.162691 second(s), 117 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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