摘要: 随着楼宇与电信配套设备中央集中监控的普及,柴油发电机组须具备远程通信接口。本文对比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最为合适。
|
柴油发电机组控制器通讯RS232接口示意图 |
柴油发电机RS485系统结构框图 |
二、 硬件设计
硬件结构主要由PIC18F8680单片机与RS485总线驱动模块组成。工作流程如图3所示,主界面如图4所示。
1. 核心器件选型
(1)PIC18F8680单片机:内置独立增强型USART(支持RS485和RS232)、4个定时器模块,可方便简化通信软件。
(2)MAX1483驱动模块:工作于半双工模式,内部包含一个发送器和一个接收器,通过使能端RE和DE控制“收”和“发”。将RE和DE连接后接到单片机RE4引脚,软件中置1/0控制收发状态。
2. 抗干扰设计
RS485采用差分传输本身具备一定抗干扰能力,在传输电路上并联压敏元件SA13CA,可有效提高对高能量电磁干扰的防护能力。
|
图3 柴油发电机RS485主程序流程 |
图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通信数据流程图 |
柴油发电机组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
- 上一篇:柴油发电机的单机额定容量和功率计算公式
- 下一篇:柴油发电机房的消防设计规范疑点解读












