第一次接触IEC104协议时,我被它复杂的报文结构弄得晕头转向。直到一位老师傅告诉我:"104协议的核心就是'四遥',把这四个字吃透就成功了一半。"这句话让我豁然开朗。在电力自动化系统中,"四遥"指的是遥信(YX)、遥测(YC)、遥控(YK)和遥调(YT),它们是电力监控的四大基础功能。
遥信就像电力系统的"状态传感器",专门采集开关位置、保护动作信号等数字量状态。举个例子,变电站里的断路器分合闸状态,就是通过遥信上传到主站的。在实际项目中,我遇到过单点遥信和双点遥信的区别:单点遥信只用1位二进制表示状态(比如0表示分闸,1表示合闸),而双点遥信用2位二进制(01表示分闸,10表示合闸),可靠性更高但占用资源也更多。
遥测则是电力系统的"体检仪",负责测量电压、电流、功率等模拟量。有意思的是,遥测值在传输时有三种表示方法:归一化值、标度化值和短浮点数。归一化值就像把实际值压缩到[-1,1]区间,比如实际电流500A,额定值1000A,那么归一化值就是0.5。这种处理方式在早期硬件资源有限时特别有用。
遥控和遥调是主站对现场设备的"指挥棒"。遥控操作开关分合,遥调调整设备参数。记得我第一次调试遥控功能时,因为没搞清选择命令和执行命令的顺序,导致操作失败。后来才明白,完整的遥控流程应该是:选择→确认→执行→确认,这种双确认机制确保了操作安全。
IEC104协议的报文就像精心设计的集装箱,每个字节都有特定用途。启动字符68H就像集装箱的标识码,APDU长度字段则告诉系统这个"集装箱"有多大。这里有个容易踩坑的地方:APDU长度不包括启动字符和长度字段本身,最大只能到253字节。
协议定义了三种帧类型,我习惯把它们比作不同的运输车辆:
在实际调试中,我总结出一个规律:I帧的传输必须配合S帧确认。主站和子站就像两个谨慎的商人,每收到一批货物(I帧)都要签收确认(S帧)。有些系统设计为接收8帧I帧才回复1帧S帧,但为了可靠性,我建议1:1确认,虽然通信效率略低,但稳定性更高。
刚开始调试104协议时,我最怕见到的就是连接建立失败。后来发现,这个过程就像打电话:
这里有个实用技巧:如果连接老是建立失败,可以先检查物理链路,再用抓包工具看是否收到了68 04 07 00 00 00这个激活启动帧。我曾经遇到过一个案例,因为防火墙屏蔽了2404端口,导致握手始终不成功。
总召唤相当于让子站把全部家底报一遍。主站发送类型标识为64H的报文,子站就会依次回复遥信、遥测等数据。这个过程需要注意:
在变电站改造项目中,我建议在系统启动后立即执行一次总召唤,确保数据库与现场状态一致。同时要设置合理的召唤间隔,太频繁会影响性能,间隔太长则数据更新不及时。
第一次实操遥控时,我的手都在抖,毕竟这是直接操作电力设备。104协议的遥控设计得非常严谨:
遥控命令中的QU字段特别重要,它定义了输出方式(脉冲/持续)。在调试保护装置时,我发现有些设备对QU值很敏感,必须严格按照说明书设置。
归一化值、标度化值和短浮点数各有优劣:
在智能配电网项目中,我们为电压电流选用短浮点数,为状态量用标度化值,这样既保证精度又节省带宽。
SOE是故障分析的重要依据。带时标的信息会记录事件发生的精确时间(精确到毫秒)。在调试SOE功能时,要注意:
曾经处理过一个保护误动案例,就是靠SOE记录的毫秒级时间戳,才找出是哪个设备最先动作的。
遥脉虽然不属于传统四遥,但在电能计量中很重要。处理遥脉数据时要注意:
在光伏电站项目中,我们设置了15分钟自动召唤一次遥脉数据,既保证数据及时性,又不会对系统造成太大负担。
遇到通信中断时,我通常按以下顺序排查:
有个经典案例:某变电站频繁通信中断,最后发现是交换机端口设置了节能模式,关闭这个功能后问题解决。
如果发现某些数据长期不更新,可以:
曾经有个遥测点始终显示0,后来发现是数据库里把这个点配置成了只读属性。
遥控失败是最让人头疼的问题之一。我的排查清单包括:
记得有次遥控总是超时,最后发现是网络延迟太大,调整超时参数后就正常了。
在实际工程中,经常会遇到不同协议转换的需求。比如把Modbus设备接入104系统,这时就需要协议转换器。在选择转换器时,要特别注意:
在某工厂电力监控系统改造中,我们成功将300多个Modbus点转换为104协议,关键是要做好转换前后的数据测试,确保每个点的值和状态都能正确传递。