基于CAN-bus 2.0总线的罐式煅烧炉测温测压系统
2021-05-26杨琦
杨 琦
(沈阳铝镁设计研究院有限公司,辽宁 沈阳 110001)
1 碳素厂罐式炉测温测压系统发展及现状
煅烧是预焙阳极炭块生产工艺中一个重要环节,其生产过程是石油焦通过重力作用缓慢的进入罐式炉,在料罐内缓慢的移动,石油焦溢出的挥发分在挥发分道中汇集与空气一起进入火道中燃烧。挥发分燃烧产生的热量对料罐中的石油焦进行间接加热,在此过程中生焦中的挥发分和水分被大量排除,石油焦在罐式炉中停留时间为32~36小时。通常煅烧炉的火道层数为8~10层,火道内平均温度为1200~1300 ℃,首层入口负压为-15~5 Pa,末层出口负压为-250~-150 Pa。
在生产过程中,主要通过调节挥发分和预热空气的流量控制火道温度,另外通过调节火道压力也能调节火焰区域,从而进行调温。调温操作不仅会影响火道内温度分布,更会影响物料最终煅烧质量,甚至产量。因此,调温和调压二者需要紧密配合,才能使得火道内挥发分合理分配,火道温度控制在预定温度范围内。由此可见,上述生产的前提是先保证温度和风压能准确,稳定和连续的测量。
炭素厂中罐式煅烧炉的测温测压系统,其发展大致可以划分为两个阶段。第一阶段采用集散控制方式,即现场测温或测压点为输出信号4~20 mA的仪表,仪表经屏蔽电缆穿管敷设至桥架后沿桥架敷设至控制系统机柜间处,在机柜内经过隔离器隔离后信号进入控制系统。这样的缺点是显而易见的,不仅占用了控制系统宝贵的IO资源,更由于大量的线束,极大的增加了施工成本和后期维护难度;第二阶段采用现场总线的控制方式,通常是Modbus RTU模式,即现场仪表通过Modbus接口挂载在一条总线上,层数据收集器轮询仪表数据,汇总后再转换为其它总线形式,如Modbus TCP、Profinet或TCPIP等,实现与中控系统或其它设备的数据交换,终端显示有用数字巡检仪和上位机软件画面显示两种[1]。
相对于集散控制方式,采用现场总线后系统灵活度、可靠性和稳定性等方面都具有极大的提升,且实施维护成本大幅降低,因此目前总线通讯+终端上位机集中显示已经成为业内的主流选择。
2 Modbus RTU模式存在的问题
Modbus是一种串行通信协议,是施耐德为使用可编程逻辑控制器(PLC)通信而制定的。经过数十年的发展,Modbus已经成为工业领域通信协议的业界标准,并且现在是工业电子设备之间常用的连接方式。
采用Modbus RTU模式的罐式炉测温测压系统,其拓扑结构通常如图1所示。
图1 基于Modbus RTU模式的系统拓扑结构示意图
系统以层为单位进行划分,比如测量一、三、八层的温度和三层的风压,则在每个层中,包含对应的采集仪表和层级采集模块,采用Modbus RTU进行数据交换;各层数据汇总后,通常是再通过Modbus TCP的方式传递给车间的PLC或DCS,这样构成了一个树状拓扑的控制网络。
国内某炭素厂4×76罐的煅烧炉投产后,在实际使用中发现测温测压系统出现如下问题:
(1)经常出现监控软件刷新较慢,数据无法更新的情况;
(2)在监控界面上提示某些仪表掉线故障,但实际该仪表可正常上报数据;
(3)当某块仪表通信部分损坏后,造成测控网络的整体瘫痪,且只能逐块进行排查,工作量巨大。
经过对现场控制网络的仔细分析,发现上述问题的产生,很大程度上是RS485总线及Modbus RTU协议本身的固有属性导致的,且当这些问题累积发生时,就可能产生上述的现象,具体分析如下:
(1)现场通信的波特率为9600 bps,假设配置为8位数据位,1位停止位,1位起始位,无奇偶校验位,则实际上一个字节数据为10个bit。根据Modbus协议规定,master发来的读取指令为8个字节(1字节地址,1字节命令码,2字节寄存器起始地址,2字节寄存器数量,2字节CRC校验),slave回复的响应为6个字节(1字节地址,1字节命令码,2字节温度数据,2字节CRC校验),以上为最简形式。则仅两条报文的传输时间为:
如果考虑master和slave的处理及运算时间,一次交互以30 ms估算,则76个测温点最小的轮询周期约为2.28 s。
(2)由于Modbus中具有超时重发机制,通常超时时间设置为100 ms,超时重发次数为3次,就意味着如果某个slave在规定的时间内没有及时给出响应,则master会连续发送三个报文;另一方面,现场的master设备为工控机,且设置的轮询间隔也为100 ms,这就可能造成超时报文和正常轮询报文几乎同时发出的情况,而slave设备也可能同时响应,由于Modbus总线没有仲裁机制,上述情况导致总线上电平信号的叠加,从而产生数据错误。
(3)由于RS485总线没有完善的错误处理机制,所以2中描述的问题反复发生,最终可能演变为“信息风暴”,导致总线的错误累积,且无法自我纠正,最严重的后果是总线数据传输的完全瘫痪。
(4)当某个slave仪表的Modbus芯片故障或处理器逻辑混乱时,可能产生对总线的干扰,比如一直向总线上发送数据报文,或者导致总线电平的异常等。
虽然可以通过增加光电隔离或增加代码的容错性方面对上述问题进行规避,但是Modbus RTU协议和RS485自身的特性,决定了无法从根本上解决刷新周期长、总线冲突等问题。因此,在现场改造中,决定应用更先进的CAN总线技术。
3 CAN bus特点介绍
CAN是控制器域网(Controller Area Network, CAN)的简称,由研发和生产汽车电子产品著称的德国BOSCH公司在1986年2月发布第一版(1.0版本),并于20世纪90年度初,BOSCH发布了CAN 2.0版规范,该规范包括A和B两部分,2.0A明确给出了曾在1.0版本中定义的CAN报文格式,2.0B则提出了标准帧和扩展帧的概念。CAN 2.0最终成为国际标准(ISO11898),目前已经成为国际上应用最广泛的现场总线之一[2]。
CAN总线协议建立在国际标准组织开放系统ISO7层互连参考模型基础之上。其模型结构只有3层,即只取ISO底层的物理层、数据链层和传输层,保证了节点间无差错的数据传输。CAN技术的报文传输为多主方式工作,网络上任意节点均可在任意时刻主动地向网络上其它节点发送信息,而不分主从。CAN节点只需通过对报文的标示符滤波即可实现点对点、一点对多点及全局广播等几种方式发送、接收数据[3]。
CAN总线的主要特点总结如下[2-4]:
(1)CAN为多主工作方式,不分主从,方式灵活;
(2)CAN网络节点可以安排优先级顺序,以满足和协调各自不同的实时性要求;
(3)采用非破坏性的总线仲裁技术,多点同时发送信息时,按优先级顺序通信,节省总线冲突仲裁时间,避免网络瘫痪;
(4)通信速率最高可达1Mbps(40 m以内),最长传递距离达10 km(速率为5 kbps以下);
(5)网络节点在错误严重的情况下可以自动关闭输出功能,脱离网络。
上图为CAN扩展帧的报文格式,从中可以看到,CAN报文中的仲裁域可以解决报文冲突后的避让及重发,数据域中最多8个字节应用数据,可完全满足测温测压系统中测量数据以及其他控制指令的传输。
CAN虽然起源于汽车领域,但近年来逐渐被工程师认知,并以其传输距离远、通信速率高、总线利用率高、具备完善的错误检测机制、开发难度小、使用灵活等突出特点,逐渐有取代MODBUS总线的趋势。并且在器件价格上,二者逐渐持平,因此在仪表领域,得到了越来越广泛的应用。
MODBUS和CAN更详细的对比如表1所示。
表1 MODBUS和CAN对比表
4 系统设计
本项目结合国内某碳素厂为背景,以尽量减少原系统改动为原则,设计方案确定如下:
(1)保留现场光电测温仪和风压变送器,开发专用的协议转换模块,一端通过Modbus RTU方式连接仪表,读取其温度或风压数据;一端通过CAN bus方式连接到总线,与对应的层采集模块完成数据的上报和指令的接收;
(2)沿用现场原有已经部署好的供电线缆和通信线缆、桥架、分线器等,在处于拓扑结构两端的协议转换模块增加终端匹配电阻,保证网络的阻抗匹配;
(3)开发专用的层数据采集模块,一端通过CAN bus方式收集协议转换模块的数据,一端支持标准的Modbus TCP或Modbus RTU方式,实现测量数据到工控机或DCS系统的上报;
(4)优化监控软件的数据查询、曲线绘制、状态报警等功能,使现场操作人员更容易使用。
其中关键的技术点包括:传输延时物理模型、通信协议制定两个方面。
4.1 传输延时物理模型设计
CAN 的通信延时可细分为两个部分: 队列延时和传输延时。队列延时是指从报文帧进入 CAN总线控制器的发送缓存到该报文帧获得总线控制权之间所经历的时间。传输延时是指从报文帧占据总线到该报文帧脱离总线之间所经历的时间,简单起见,这里仅考虑物理传输延时[4]。
信号传输延时主要发生在3个环节:发送节点、线束和接收节点,具体包括节点MCU 处理时间、收发器传输延时、电感延时、节点之间的线束传输延时、晶振偏差、振铃和同步。波特率与延时的关系为:
2×(T收发器+Tmcu+Tcan线缆+T电感)+TRing+Tsyn≤A采样点×T位时间
(1)
这里协议转换模块和层收集模块使用的处理器为STM32F103RC,主频72 M,MCU 处理时间约为2000 ns,收发器传输延时为 250 ns,线束长度80 m、线束单位传输延时5 ns/m,晶振偏差0.5%,共模电感传输延时38 ns,反射、振铃占整个位比例为 10%,根据公式(1)可推出如下公式T位时间。
(2)
由位时间与波特率的倒数关系可知,波特率为:
(3)
当采样点为80%时,计算可得波特率≤121 K。
在实际应用中,波特率的选择和总线布局、材质、类型、现场干扰以及总线上设备的数量都有关系,而且有些因素的影响无法具体量化,因此保险起见,选择的波特率为100 K。
4.2 通信协议制定设计
CAN虽然为多主模式,可以通过总线仲裁来避免碰撞,但是如果单纯依赖CAN本身的调度机制,在一定程度上会影响系统的实时性。以某层的温度测量为例,共包含76个协议转换模块,模块的地址为1~76,每次上报的数据为4个字节(1字节的类型,1字节的设备状态,2字节的温度)。由于每个周期中只有温度数据需要上报且各个模块报文无优先级差别,因此发送策略为各个模块按照一定的时间间隔逐次上报。
逐次上报有两种实现方式,一是无令牌方式,即各个模块经时钟同步后按照调度规则主动上报。该方法更灵活且效率高,但是实现复杂,而且受晶振差异和代码执行方式的影响,容易产生抖动和无法预计的时延;二是令牌方式,及令牌的持有者控制总线,当发送结束后令牌传递给下一需要控制总线的发送者。该方法实现简单,而且特别适合各个发送者平等且无需动态调度的场景,因此在本应用中也采用了令牌方式。
以100 K的波特率通信,采用扩展帧的形式,一个模块完成一次数据上报的字节数为12(由图2可知,其中包括5字节报文头,4字节应用数据,3字节报文尾),时间为960 us,由总的控制要求可知,在1 s内完成一个炉的数据更新显示和上报即可满足要求,因此设置模块间的发送间隔ΔT为5 ms,这样,在每个控制周期的起始时刻,层数据收集模块广播令牌后,各个协议转换模块依照各自的地址精确延时5 ms的倍数,即可实现预定的控制逻辑。调度示意图如图3所示,由图可知最坏情况下,控制周期约为780 ms,仍满足≤1 s的要求。
图2 CAN扩展帧结构图
图3 报文发送时序示意图
5 实际运行效果及结论
结合国内某碳素厂煅烧炉的实际改造案例,新系统上线后运行稳定,实施后现成效果如图4所示。
图4 现场应用照片
利用CAN总线分析工具对各仪表数据进行了数据分析,截图如图5所示。
图5 捕获的报文发送时序
从图5可以看出,当采集模块发出令牌后,各个协议转换模块按照自身地址,依次延后5 ms上报数据,其中最大间隔抖动为100 us,平均间隔抖动约为40 us,远小于设定上报间隔的5000 us,因此不会对系统正常运行造成影响。实现了罐式炉测温测压系统数据的高速传输。
从现场改造后运行数据结果表明,基于CAN总线的系统方案完全解决了原有MODBUS总线网络中出现的问题。除了具备以往MODBUS总线的优点外,还具有传输速率高、单一仪表故障不会影响总线其他仪表数据传输的特点,为煅烧车间罐式炉测温测压系统以及未来的自动调温系统提供了一种全新的技术思路,具有积极的现实意义。