风机控制器串口通信问题分析定位的流程及方法
2022-02-17邵鹏程姜智锐杜国斌顾开祥
邵鹏程,姜智锐,杜国斌,顾开祥
(上海中广核工程科技有限公司 新产品研发部,上海,200241)
0 引言
在风电行业中有CANBus、EtherCat、ProfiBus等丰富的总线形式,其中风电主控系统中还是广泛应用了RS-232、RS-485等串行通信形式[1]。其根本原因就是这些串行通信的兼容性较好、简单易用、成本低廉,能够提供简单的点对点以及点对多点的以字节为单位的通信[2]。
以2021年风机控制器改造的某1.5MW样机为例,主要外围设备及所用通信方式如表1所示,可见串口通信在老旧风机中使用频率极高。
表1 某1.5MW机型主控系统外围设备通讯方式
串口通信也有一些不足,其通信双方波特率等各项通讯参数匹配程度要求严格,常用的RS485是半双工通信方式,可能出现总线冲突情况。因此在风机控制器与串口设备适配过程中,常出现误码、断帧以及通信丢包等情况。由于现场通信设备种类较多,故障现象和体现形式各异,因此在应用过程中一旦出现通信问题常常需要投入大量的精力进行故障定位分析。因此本文以工业现场中风机控制器与串口设备通信几项问题作为分析案例,对串口通信问题的现象及、原因和排查分析方法进行了归纳和总结,形成一般性的串口问题定位方法。本文基于风机主控改造过程中风机控制器与各类串口设备的通信问题解决的成功经验,建立并提出了串口通信问题定位的系统流程及方法,可以为后续风机控制器配套及主控系统改造过程中,串口设备通信问题的分析定位提供系统流程及方法。
1 串口通信标准
串口通信是风机控制器与外部设备进行数据交换最常用方式。常见的串口协议包括RS-232、RS-485和RS-422,协议规定了串口通信的接口电路的电气特性,包括传输方式、有效正负电平值等[3]。串口通信按位(bit)发送和接收字节。
串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的设备,这些参数必须匹配[4]:
(1)波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。工业现场常用波特率9600、19200、38400等,高波特率常常用于放置的很近的仪器间的通信。
(2)数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。
(3)停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输在线定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。
(4)奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶数个或者奇数个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。
2 风机控制器已解决串口通信问题
在风机控制器与串口设备适配过程中由于串口通信异常而导致的现场故障现象可谓是五花八门,如表2所示。
表2 风机控制器适配问题中串口通讯问题
故障现象概况起来有以下几类:
(1)通信中断、超时;
(2)数据帧中软心跳超时;
(3)被控制设备动作执行滞后;
(4)各类通信故障字故障;
(5)被控设备状态机跳转异常,等等。
虽然现象各异但是实际对于串口通信而言基本可以归因于表3所示的几种基本串口故障类型。
表3 基本故障及可能原因
在通过故障现象确定故障类型后最耗费人力和时间的是定位故障侧以及故障的根本原因。基于上述风机主控改造过程中各类串口设备的通信问题解决的成功经验,本文归纳了一套方便串口通信问题分析定位的一般性系统流程和通用性方法。
3 串口通信问题分析定位的一般方法
在排查工作开展前首先确认连接器无断路,并根据屏蔽接地和结构件连接规范对物理链路进行确认。如果物理连接有异常,则首先完成连接件的替换和紧固。由物理链路断开导致的问题后续分析中不再展开。
在处理了多项串口通信故障后,发现故障分析定位的手段和步骤有许多共同之处。串口通信问题分析定位的一般步骤可以分为:收集故障信息,建立研究对象模型,根据系统绘制故障树,总线数据监听,进行故障分析定位。
图1 串口通信问题分析一般步骤
3.1 建立研究对象模型
主控系统涉及范围较广,报出的故障形态多样与实际故障点相去甚远,对于控制器适配和调试工作造成很大的压力,因此首先需要根据报出的故障码,通过应用程序内的故障逻辑确立研究对象,并将研究对进行简化。
一般可以将风机中串口通信问题的研究对象抽象为“风机控制器-通信链路-被控对象”的点对点模型。通常风机控制器作为主站,设备作为从站。主站一般会按照一个既定周期发出数据,数据内容基于设备商自定义的协议,风机运行时控制器会根据应用程序切换数据内容。
通过建立研究对象模型可以从复杂的主控系统中将故障相关的通信对象独立成一个小系统,仅考虑这个小系统内部的通信机制和各项因素,缩小故障定位范围。
图2 控制器与串口设备点对点通信示意图
3.2 故障树分析
结合通讯模型的故障形式可以绘制故障树。
表4 故障树对应故障排查方法
图3 点对点串口通信问题故障树
3.3 排查方法
3.3.1 总线监听
当串口通信故障发生时,最直接有效的定位手段就是对串行总线数据进行监听,一般采用示波器和上位机串口助手进行监听。
对于点对点通信系统,可从串行总线上并接一路监听线到调试电脑和示波器端,进行数据监听。
示波器可以观察总线上信号质量,获取准确的信号波形,上位机串口助手可以解析数据包内容,两者结合再根据通信双方应答协议可以对发送数据内容的准确性分析。
图4 监测方法示意图
对于示波器获取的波形信号可以关注以下几点:
波形电平和质量;数据响应时长;数据包字节间隔;有无杂波干扰。
上位机串口助手能够将总线信号解析为数据内容,在了解设备厂家定义的通信协议后可以确定监听到的数据包来源是哪个设备,以及是否存在误码。对于抓包数据分析可以关注以下几点:
(1)主站是否按预期周期发起请求,数据是否完整,是否存在误码或断帧;
(2)被控设备应答时间,从站是否及时响应数据;
(3)在持续监测过程中是否有偶发的通信中断;
(4)从站响应数据是否完整是否存在误码或断帧情况。
3.3.2 模拟收发
使用上位机对通信设备进行模拟收发是确认通讯双方设备是否处于正常通信状态的有效手段,可以进一步缩小排查对象的范围。但是模拟收发没法进行高频收发。即使拥有应用程序,使用上位机控制风机控制器进行收发,由于程序中某些执行条件无法满足,模拟收发还是无法进行协议内容的自动切换,无法模拟通讯系统的动态通信过程。
图5 模拟收发设备连接
3.4 故障侧判断流程
基于故障树并可以按以下流程逐层对串口通信故障进行分析和定位。A层对象包括风机控制器、串口设备及物理连接链路,通过A层定位可确定故障对象缩小排除范围。B层对象为A层对象下属可能失效部分,通过B层定位可以初步完成故障原因定位。
通过故障树结合排查总线监听和模拟收发等排查方法基本上可以将故障所在范围逐级减小,最终实现故障的定位。
图6 串口通信问题定位分析流程图
4 实例分析
现场案例2变桨控制异响
4.1 故障现象
使用风机控制器对变桨系统进行调桨控制时会有异响,能通过执行机构运行的声音明显分辨出调桨过程中速度快慢不匀的情况。
4.2 测试环境搭建
由于被控对象变桨系统是动态执行机构,在实验室静态环境中无法构建出动态通信交互过程,为了直观定位和验证问题解决,协调了一套带轮毂的变桨系统作为测试环境。
连接参数如下:
电平规范:RS485;
数据位:8位;
起始/停止位:各1位;
“天津消费者品牌意识日益强烈,品牌形象与品牌文化越来越成为消费者选购商品时的重要影响因素,良好的品牌背书、独特的品牌定位在市场竞争中占据有利地位,这也是天津在酒业京津冀一体化中的重要基础。明年的全国秋季糖酒会将在天津举办,这也是近年来糖酒会首次落户北方,到时候欢迎大家到天津来!”天津市酿酒工业协会秘书长李跃华在论坛互动环节中的意外“爆料”,令在场企业家、经销商和媒体们兴奋不已。
波特率:19200。
4.3 排查分析
(1)确定系统对象
研究的对象系统为风机控制器和变桨系统(变桨控制器加上执行机构),风机控制器每80ms发送一条桨角控制指令,变桨系统根据指令执行变桨,并回复指令。
(2)绘制故障树
由于涉及执行机构,故障树中增加执行机构故障可能性。基于该系统结合故障现象,制作故障树。
(3)通讯系统外故障排除
通过替换原控制器进行调桨对比,未发现调桨过程中有速度不匀的异响,结合业主反馈的样机的风机变桨系统维护过程中未见异常,由此排除变桨执行机构端的故障。
A层定位
图7 变桨异响故障树
在故障系统中进行总线监听,总线数据显示控制器收发周期为160ms与预期通讯周期80ms不符。从站收到数据后回复数据时间在25ms左右,数据包未见断帧现象。因此A层定位故障应处于风机控制器侧。
图8 总线监听数据
B层故障定位
①风机控制器硬件检查
首先在实验室环境中使用测试用例对风机控制器硬件模块进行模拟收发测试,模块485通信模式下数据收发正常,无异常现象。控制器硬件无异常
②串口参数检查
程序中设置串口参数与通讯要求一致。
③串口收发函数排查
调桨速率不均匀考虑两方面原因,一方面是主控程序逻辑运算后的调桨角度是否均匀,另一方面主控计算出的调桨角度对外通信需要调用风机控制器库函数,若库函数调用不当会出现丢包情况。经排查,程序中write函数调用方法与控制器串口发送特性不匹配导致丢包。
(4)原因分析
由函数调用机制可知,在应用程序中中第一次执行write函数体时,CPU虽然已经将数据发送出去了,但是仍至少要再执行一次函数体才能完成底层发送流程。因此若按原应用程序代码中使用80ms计时器标志位控制write函数体执行会导致50%严重丢包。
若出现严重丢包,则调桨的角度梯度平滑性会受影响,预计会导致变桨过程中出现卡顿速度不匀等情况。
图9
(5)实验验证
调整应用程序中串口发送函数用法后再次通过总线数据抓包,串口数据发送周期满足控制要求,变桨执行机构无异响。
图10 修改发送函数调用方法后数据
(6)分析结论
综上所述,变桨系统调桨速率不均匀的直接原因为,风机控制器与变桨控制器之间通信丢包导致调桨步长拉长,而通信丢包是由于应用程序对File_Write库函数的调用方法不当。
5 总结
本文通过梳理串口通信标准,基于风机主控改造过程中风机控制器与各类串口设备的通信问题解决的成功经验,提出了串口通信问题定位的一般性流程及方法。经过实践,根据该流程及方法,可提升串口通信问题的定位分析效率,节约现场工程师调试时间。