最近在做一个电力监控的系统,就是要把厂区所有变电站的内的智能仪表通过485总线组成监控系统,可以实时读取各仪表的电流、开关闭合状态。
项目概况:共12各变电所, 每个变电所内大约有60块智能仪表,每个变电所使用一个研华4571(485转以太网模块),在通过光电转换器将信号送到调度室。研华4571负责各智能仪表与工控机的通信。
现在遇到下面两个问题,看看大家帮帮忙。
问题1:使用modbus仿真器在就地同和车间的仪表通讯,速度非常块,但有时会有干扰,通过在通讯终端加入120Ω电阻(1/4瓦)、通讯线屏蔽层单端接地还是会有干扰,请问还有其他办法解决吗?485通讯能否做到非常稳定?
问题2:在调度室打开力控画面(硬件接线已确认正确),发现力控的实时数据开始更新非常慢(通讯上以后还可以,就是初始时要等很长时间),有时候可能需要五六分钟都上不来。分析可能是在力控”IO设备组态“内建立的驱动过多(大约700个,顺便问下485总线上的每块仪表都需要的建立自己的驱动吗,有没有更好的方式),决定修改驱动内的时间参数看能否有所改善。
后来使用虚拟串口软件(虚拟一对串口,一端连接Modbus 32 Simulator,一端连接力控软件),修改的参数如下:
修改完超时时间后参数更新的非常快。
改过这些参数以后速度就快多了,但是不知道改完这些参数会不会给CPU带来更多的负荷,有些参数也不知道改的对不对,是否还有其他参数可以修改的?
串口通讯的机制是轮询的,受线路和设备的限制,1个串口上最多可以接32块仪表,按照32块仪表来计算,设备的扫描周期是10ms,在没有其他情况的影响下是320ms把32块仪表采集一边。假如其中一块仪表出现故障或者其他原因导致通讯不正常,那软件发送完请求信息后,设备没响应,然后进入重试(设置的是1次),命令间隔是20ms,继续发送请求信息,设备没响应,进入连续采集几次转为故障(设置是5次),命令间隔是20ms 。设备彻底故障后,软件暂时不给此设备发送请求信息,转入到下一块儿仪表。如果1个串口上有1块儿仪表出现故障,整个采集周期就要加1秒以上(按照理论值来计算)。但是实际上仪表的串口通讯响应速度很难打到10ms。意思就是说你发送一次请求之后,10ms的时间仪表根本响应不过来,导致连续重试,这样整个链路的采集时间会特别长,设备的采集周期要根据实际测试来选定一个相对合理的值。