重康动力(深圳)有限公司

  • 产品规格搜索
  • 技术文章搜索
行业新闻/柴油发电机组
您现在的位置 > 首页 > 新闻动态 > 行业新闻
柴油发电机组远程通信接口RS485硬件与MODBUS协议
发布时间:2023-09-04 21:32:57  ▏阅读:

摘要: 随着楼宇与电信配套设备中央集中监控的普及,柴油发电机组须具备远程通信接口。本文对比RS232(传输≤15m)、RS485(传输≤1200m,100KB/s)及CAN/光纤的适用性,确定RS485为最优选择。系统阐述基于PIC18F8680单片机与MAX1483驱动模块的硬件设计(含SA13CA压敏元件抗干扰),并详述MODBUS RTU协议的主-从通信方式、功能码(03读取、06写入、16批量写入)及帧结构,同时提供初始化、USART中断服务与定时中断的C/汇编混合程序示例,为发电机组控制器通信开发提供完整技术指引。

 

一、 通信接口选型对比与确定

 

在智能发电机组中,常用通信接口包括RS232、RS485、CAN总线及光纤。

1. RS232接口
RS232接口示意如图1所示。通用性强、应用广泛,但传输距离仅在15米以内且为点对点通信,在中央监控系统中受限制,通常需增加接口转换器。针对中央监控设备不宜采用该接口。

2. RS485接口
RS485系统结构如图2所示。采用差动传送模式,有效传输距离达1200米,波特率可达100KB/s,可以总线方式工作,接口硬件简单,在自动控制领域广泛应用,适用于数据传输量不大、实时性要求不高的场合。

3. CAN总线与光纤
具有高速、长距离传输特点,但硬件成本较高、软件编程复杂。

经分析对比,发电机组通信接口采用RS485最为合适。

 

柴油发电机组控制器通讯接口框图png

柴油发电机组控制器通讯RS232接口示意图

柴油发电机RS485系统结构框图.png

柴油发电机RS485系统结构框图

 

二、 硬件设计

 

硬件结构主要由PIC18F8680单片机与RS485总线驱动模块组成。工作流程如图3所示,主界面如图4所示。

1. 核心器件选型
(1)PIC18F8680单片机:内置独立增强型USART(支持RS485和RS232)、4个定时器模块,可方便简化通信软件。
(2)MAX1483驱动模块:工作于半双工模式,内部包含一个发送器和一个接收器,通过使能端RE和DE控制“收”和“发”。将RE和DE连接后接到单片机RE4引脚,软件中置1/0控制收发状态。

2. 抗干扰设计
RS485采用差分传输本身具备一定抗干扰能力,在传输电路上并联压敏元件SA13CA,可有效提高对高能量电磁干扰的防护能力。

 

柴油发电机RS485主程序流程.png

图3  柴油发电机RS485主程序流程

柴油发电机RS485接收PC端软件主界面.png

图4  柴油发电机RS485接收PC端软件主界面

 

三、 MODBUS通信协议制定

 

MODBUS是通用工业标准通信协议,采用主-从方式,报文形式为请求/响应帧,每次通信均由主机发起。通信流程如图5所示,电路连接如图6所示。

1. 通讯方式与数据模式
在RS485多站点网络中,只能有一个从站响应主站请求。数据采用RTU模式,发送消息至少以3.5个字符时间间隔开始,整个消息帧须作为连续流传输。设备地址范围1~247,CRC用于检测帧错误。

2. 功能码定义

MODBUS功能代码用来命令从设备响应行为,有关功能码见表1:CRC(循环冗长检测)用于检测接收到的帧是否错误。本设计使用了功能号为03、16和06,功能号为03的用于遥信和遥测,功能号为06的用于遥控,功能号为16的用于设置参数。

表1    MODBU功能码

 

功能号
MODBUS规约功能
01
读取输出线圈状态(位序列操作
02
读取输入点状态(位序列操作)
03
读取内部寄存器状态
04
读取输入寄存器状态
05
强制单个输出线圈
06
刷新单个寄存器内容
07
读取异常事件状态
08
诊断追忆测试(检查通信连接)
11
读取通信事件计数器和状态字
12
读取通信事件记录
15
强制多个输出线幽
16
刷新多个寄存器内容

 

3. 帧结构说明
(1)功能码03请求帧:含起始寄存器地址和寄存器数。
(2)功能码03响应帧:含字节数(随后寄存器数据域总长度)和寄存器数据(N个字)。
(3)功能码16请求帧:含写入的寄存器内容数据(N个字)。
(4)功能码16响应帧:与功能码03请求帧结构相同,内容与请求帧对应内容相同。
(5)功能码06请求帧:含寄存器地址和写入寄存器内容数据(1个字),响应帧与请求帧相同。

 

柴油发电机MODBUS的RS485通信数据流图.png

柴油发电机MODBUS的RS485通信数据流程图

柴油发电机组RS458通信电路示意图.png

柴油发电机组RS458通信电路示意图

 

 

四、 软件编程

 

软件采用C语言混合汇编语言编制,主要包括初始化程序、USART接收中断服务程序、主程序。主程序中检测到一帧接收完成标志置位后进行处理:计算CRC校验,若正确再判断地址域是否为本机地址,若是则按上位机命令组成响应帧并利用发送中断发送。

1. 初始化程序
(1)设置C口方向(TRISC=0xC0),RE4为输出(TRISE=0)。
(2)PORTEbits.RE4=0,CommTimeOut=0用于检测接收字符时间间隔。
(3)5ms定时器设置(TMR1H=0xEC,TMR1L=0x86),JSTime1=40。
(4)波特率设为9600BPS(SPBRG=25)。
(5)使能串口发送(TXSTA=0x24),串口工作连续接收(RCSTA=0x90)。
(6)串口接收中断高优先级(IPR1bits.RCIP=1),使能接收中断(PIE1bits.RCIE=1)。

2. USART接收中断服务程序
(1)判断是否为串口接收中断(PIR1bits.RCIF),若是则接收数据并存储(CommBuffer[CommPoint]=RCREG),CommPoint++,设置CommTimeOut=2(10ms间隔)。
(2)判断是否为串口发送中断(PIR1bits.TXIF),若发送完成则禁止发送中断、置接收状态;若未完成则继续发送数据。

3. 定时中断服务程序(检测帧结束)
(1)定时器溢出时重装初值(TMR1H=0xEC,TMR1L=0x86)。
(2)汇编段实现:CommTimeOut减1,若减为0则禁止接收中断、置位一帧接收完成标志、记录接收字符数(CommPoint→DataLen)、清零CommPoint,然后重新使能接收中断。


总结

柴油发电机组远程通信接口采用RS485硬件(传输≤1200m,100KB/s)+MODBUS RTU协议(主-从方式,功能码03/06/16)方案,在成本、传输距离和实时性间取得最优平衡。硬件设计基于PIC18F8680单片机与MAX1483驱动模块,通过SA13CA压敏元件增强抗干扰能力。软件实现采用C/汇编混合编程,包含初始化(波特率9600,5ms定时中断)、USART接收中断(数据存储与10ms字符间隔检测)及定时中断(帧结束标志置位与CRC校验触发)三大模块,主程序中完成CRC校验、地址判别及响应帧发送。该方案硬件简单、协议通用开放,已广泛应用于楼宇集中监控、电信基站及军事设施等场合。实际开发中需注意:RS485半双工收发切换的时序控制(RE4置1/0)、RTU模式3.5字符时间间隔的定时器精度,以及CRC校验的正确性,确保通信可靠性与实时性。


----------------
以上信息来源于互联网行业新闻,特此声明!
若有违反相关法律或者侵犯版权,请通知我们!
温馨提示:未经我方许可,请勿随意转载信息!
如果希望了解更多有关柴油发电机组技术数据与产品资料,请电话联系销售宣传部门或访问我们官网:https://www.11fdj.com
  • 全集成电力系统提供商

  • 重康动力(深圳)有限公司

  • 地址:深圳市龙岗区坪地街道龙岗大道4129号

  • +86-755-84065367 84214948

  • 13600443583    

  • 网址:https://www.11fdj.com

  • 企业二维码

  • 名片二维码