基于CAN总线的电子脉冲拦鱼装置节点设计
2019-08-30王明武贺雯刘毅铎王益凡
王明武, 贺雯, 刘毅铎, 王益凡
(1.陕西理工大学 机械工程学院, 陕西 汉中 723000;2.陕西汉中变压器有限公司, 陕西 汉中 723000)
电栅拦鱼由脉冲电发生器、电极及导线组成,可控硅被触发开通时,高容量的电能就向电极放电,从而在水中拦鱼断面上形成一定强度的不均匀电场。鱼类受到刺激后将本能地向电场较弱的方向逃游,从而达到拦鱼的目的[1-2]。电栅拦鱼能从根本上克服有形机械性拦鱼设施拦鱼效率低、易被漂浮物堵塞而存在安全隐患的局限性,从而得到了较大范围的应用。因此,本文使用STC89C52单片机设计出一种基于CAN总线的电子脉冲拦鱼装置节点,该装置利用高压脉冲在水库泄洪口形成脉冲电磁场刺激鱼类,从而防止鱼类逃脱水库。该装置节点具有一主多从、网络化、智能化的特点,并可进一步降低前期使用可编程控制器所开发的电子脉冲拦鱼装置的生产成本。
1 系统网络结构
系统网络结构如图1所示,单片机作为主机和从机的主控制器,并使用CAN总线控制器和收发器实现主机和从机之间的总线通信功能。
图1 拦鱼装置节点系统网络结构
控制器局域网(Controller Area Network,CAN)由德国博世公司开发,是市场上占用率最高的现场总线之一[3-5]。CAN2.0 技术规范分为CAN2.0A(11 位标识符)、CAN2.0B(29 位标识符)两个版本。为使报文携带更多的数据信息,本系统采用CAN2.0B扩展帧格式,标识符定义具体如表1所示。其中CAN 数据包优先级占用第28—26位,数据类型代码占用第23—16位,发送节点总线地址占用第15—8位,接收节点总线地址使用第7—0位,保留位设置为0。
表1 CAN2.0B 29位标识符分配表
拦鱼装置主机节点与多个从机节点之间可以相互传输信息,属于典型的一主多从工作方式,从而实现长距离、大容量的总线通信,并具备实时在线的监控功能,以及抗干扰能力强的性能特点。
2 系统硬件设计
系统硬件原理框图如图2所示,主机电路包括最小系统、CAN通信电路、液晶屏电路、按键电路、故障报警电路等部分;从机包括最小系统、CAN通信电路、按键电路、绝缘栅双极型晶体管(Insulated Gate Bipolar Transistor,IGBT)驱动电路、信号采集电路等部分。电源模块负责为主机、从机以及大功率外设提供相应的供电电压。
图2 系统硬件原理框图
主机产生从机母线取放电的脉冲时序,并通过CAN总线协议与从机进行数据通信,用来控制不同从机的IGBT驱动电路分时轮流导通放电拦鱼,导通时间为0.6~1.2 ms,放电频率为3~12 Hz,导通时间和放电频率均可调,从而适应不同泄洪量、不同水质和不同鱼类的拦鱼需求。从机需要采集工作频率、驱动板和总线通信等参数并通过反馈给主机,主机再进行连锁保护、故障报警,以及通过液晶屏实时地显示和监控工作参数。
主机和从机控制核心是微控制器,最终确定拦鱼装置主机和从机均采用STC89C52单片机。STC89C52是STC公司生产的一种具有低功耗、高性能的8位微控制器[6],内部集成8 KB的可编程Flash存储器并具备丰富的片上资源,完全符合本系统的设计要求。
2.1 液晶显示电路
图3 HMI液晶屏接线原理截图
液晶屏可以非常直观地显示出工作模式、放电频率、导通时间、用户页面等内容。考虑到需要显示的内容过多,系统选用了深圳淘晶驰公司的多元化2.2英吋液晶屏,具体型号为TJC3224T022。该液晶屏可当作智能串口显示终端,硬件部分包括MCU、显示屏、输入端口、通信端口、程序存储器等;软件部分包括液晶屏上运行的自带的WINCE操作系统,以及Windows操作系统上对其进行配置的组态软件。
图3是液晶屏接线原理截图。1脚VCC接5 V,4脚GND接地,2脚TX(串口发送)、3脚RX(串口接收)分别与P3.0、P3.1引脚相连接,并使用串口方式与STC89C52进行数据通信。液晶屏主要用于系统的登录,以及设置拦鱼装置的各种工作参数,例如调整从机所需要的放电频率(3~12 Hz)、导通时间(0.6~1.2 ms)等参数,接收到信号的从机通过改变定时器的初值并控制其引脚翻转来产生PWM,之后从机以相应的频率控制IGBT变换正负极。IGBT交替变化正负极的时候,通过软件或者硬件制造一个死区时间,否则两个IGBT管同时为正极的时候会发生短路现象。
2.2 CAN总线通信电路
CAN总线通信电路由MCP2515协议控制器,以及TJA1050收发器组成。恩智浦公司的MCP2515是一款带工业标准SPI总线接口独立的CAN控制器,STC89C52不直接参与CAN 通信协议的处理,从而减少了单片机的开销[7]。MCP2515完全支持CAN V2.0B规范,可以接收或发送标准帧、扩展数据帧,以及远程帧报文[8-9],并且内置有2个屏蔽寄存器、6个滤波器寄存器,以用于滤除不需要的报文信息。TJA1050是一种标准的高速CAN收发器,主要为CAN控制器提供差动接收性能[10]。具体的总线外部硬件电路如图4所示。
图4 CAN 总线外部硬件连接图
MCP2515的16脚CS(片选)、15脚SO(主入从出)、14脚SI(主出从入)、13脚SCK(串行时钟)、12脚INT(中断)分别接至STC89C52单片机的P2.4—P2.0端口,通过SPI总线进行读取或写入数据到单片机。MCP2515的1脚TXCAN(CAN发送)、2脚RXCAN(CAN接收)分别与TJA1050的1脚TXD、4脚RXD连接。TXCAN信号经TJA1050转换成CAN总线可识别的差分信号将数据发送到总线上;相反,TJA1050将总线上差分信号转成TTL电平,再通过RXCAN完成数据接收过程[11]。CAN在接收到数据的时候会触发一个低电平,需要外部中断进行捕获并及时作出响应。
TJA1050收发器的CANH和CANL两个端口,通过屏蔽性能较好的双绞线或是其他信号线与不同节点的CAN模块相连接,从而达到多个节点之间的数据互传。此外,CAN 总线两端接有120 Ω终端匹配电阻以抑制信号反射,从而提高通信的抗干扰能力[12]。
2.3 驱动电路
驱动电路主要用于驱动大功率外设IGBT,具体如图5所示。D4818使用功率较大、驱动更强、稳定性较高的双驱动电路。驱动电路使用D4818驱动模块,VIN+输入所需要的电压5~36 V,VIN-为地线,OUT+、OUT-为负载设备的正负极,输出电压范围5~36 V。TRIG/PWM接单片机产生PWM波的端口。D4818通过PWM控制IGT的栅极,进而控制负载的工作。
图5 D4818驱动电路图
此外,主机还可通过人机键盘进行运行启停控制,或者对系统工作参数进行设置。同时,系统还具备连锁保护和故障报警,当出现频率故障、驱动故障和通信故障时,主机就会报警,从而形成完善的故障保护机制。
3 程序设计
主机和从机程序流程图如图6所示,软件模块包括PWM函数,延时函数,CAN收发函数,SPI读写函数、串口响应函数,屏幕按键检测函数,中断子程序等编程单元。
(a) 主机通信程序流程图 (b) 从机通信程序流程图 图6 CAN总线程序流程图
主机和从机首先进行CAN通信、串口、定时器中断,以及模块等初始化。CAN通信初始化内容包括总线波特率、接收发射缓冲器、中断工作模式设置,并启动CAN通信。CAN初始化完成后,数据的发送与接收过程将自动按照特定的协议进行传输数据而无需用户干涉。
初始化正常后,主机使用串口响应函数接收液晶屏所设置的频率参数等指令,并调用时序模块函数将产生的控制位通过CAN总线实时地循环传送给各个从机。从机的CAN模块接收到信息时,触发外部中断将标志位gRXFlag置1,从机调用CAN接收函数和SPI读取函数接收控制位,进而产生相应的PWM波形以控制IGBT驱动相应的负载。CAN接收函数的部分代码如下:
void CAN_Receive (uchar *CAN RXBuf)
{
uchar i; DLC= SPIbyteRd (RXB0DLC);
for (i=0; i {CANRXBuf[i]= SPIbyteRd (RXB0D0+i); } SPIbyteWr (CANINTF,0); } 反之,从机信息将反馈信息通过SPI写入函数和CAN收发函数发送给主机。CAN发送数据时,SPI将要发送的数据写入CAN模块,数据按位传输,高位在前,低位在后。CAN发送函数的部分代码如下: void CAN_Send (uchar *CANTXBuf,uchar length1) { Uchar tempdata,j; tempdata=SPIbyteRd(CAN_RD_STATUS); SPIbyteWr (TXB0DLC,length1); for(j=0;j {SPIbyteWr (TXB0D0+j,CANTXBuf[J]);} if(tempdata&0x04) { delay1ms (1); SPIbyteWr (TXB0CTRL,0); while(SPIbyteRd (CAN_RD_STATUS) &0x04); } CS=0; WriteSPI(CAN_RTS_TXB0); CS=1; } 系统时序控制如图7所示。主机读取液晶屏设置从机个数n(1~16)、放电频率f(3~12 Hz)、脉宽长度参数τ(0.6~1.2 ms),主站总的工作频率为nf,主机轮流输出每个从机控制位的周期为 (1) 每个从机接收到控制位后启动定时中断0,轮流导通的间隔时间nT,则从机的工作频率为 (2) 图7 时序控制 图8 IGBT负载波形 实际应用中,拦鱼面积越大,所需的主、从机个数越多,不仅数据量增大,而且通信距离也变长。为了提高通信距离,必须适当降低CAN总线的通信速率,系统通信的实时性也随之降低。因此,从机的放电频率比设定的工作频率要略小一些。 这里,设定n=3,f=6 Hz,τ=0.6 ms,系统初始化配置好CAN总线模块后,从机根据从机个数、放电频率、脉宽长度参数自动计算并设置定时器初始值,利用定时器中断产生PWM方波驱动IGBT;同时,系统为了避免两路IGBT同时导通而造成的正负极短路现象,程序进行了互锁,并且设定了换向导通的死区保护时间。图8为通过数字示波器捕捉的波形,图中PWM波形非常规则,周期T=168 ms,f=5.952 Hz,达到了预期的设计指标要求。 针对企业进一步降低电子脉冲拦鱼装置生产成本的需求,提出了基于CAN 总线的电子脉冲拦鱼装置节点的设计。该拦鱼装置节点以STC89C52作为主控器,使用MCP2515和TJA1050构成了总线通信接口电路,编制了CAN总线程序软件,并进行了多节点主从模式通信实验。经应用表明:设计的节点硬件电路具有成本低、工作稳定可靠、抗干扰能力强的特点,从而为进一步的投产试用和增设物联网平台功能奠定了坚实的基础。4 实验结果
5 结束语