ECS-700串行通讯(COM741同黑马ESD_MODBUS+RTU)实施小结 联系客服

发布时间 : 星期四 文章ECS-700串行通讯(COM741同黑马ESD_MODBUS+RTU)实施小结更新完毕开始阅读edf53c30a66e58fafab069dc5022aaea998f416a

COM741-S模块不支持自定义协议。

4)添加设备及设置设备参数

设备参数中实际地址即智能设备的地址(即从站地址);而地址则是参数在位号组态软件中执行位号扫描时,作为位号地址的一部分,帮助区分各个位号,与通讯协议中的地址无关(在老版本的VF软件中无实际地址这个参数,只有地址这个参数,它即表示智能设备的实际拨码地址)。

响应时间,即设备响应命令的超时时间,单位ms。设置为0时,通信模块内部在(0-200)ms内自动调整。串行通信模块发送命令给智能设备后,某些设备并不会立刻回应,而是等待一定时间后才回应。设置这个响应时间的目的,则是为了通信模块通过实际响应时间与其比较进而判断通信成功或超时。一般情况下,可设置为0,让通信模块自行修正。

间隔时间(ms),表示两条命令之间需要插入的等待时间。一些智能设备不允许在执行完一条命令后紧接着执行下一条命令,需要等待一段时间后才能响应。一般情况下,可设置为0,让通信模块在(0-10)ms之间处动修正。如设置时间太长则使得命令执行周期加大。

5)添加MODBUS命令及设置MODBUD命令参数

项目第一条读保持寄存器命令,即读取起始地址为1001的连续30个保持寄存器。

5

第二条写保持寄存器命令,意义为写从起始地址1031开始的连续20个保持寄存器数据。

命令执行周期表示该命令是否被周期执行以及执行周期是多长。只有周期地执行通信命令,才能将智能设备中的数据读入到通信模块或将通信模块数据写到智能设备。当执行周期等于0时,表示该命令不是周期命令,只会在组态启动时执行一次。所以,对读命令一般要设置为与控制器的控制周期相同。

对于写智能设备的命令来说,有两种触发方式:一是数据变化才写,二是定时写。设置为有变化才写的,将执行周期设置为0;设置为定时写方式,执行周期则为定时时间,但当发现需要下写的数据有更新时,串行通信模块仍会立即执行该条写命令。通信模块启动时,自动被认为数据没有变化,避免在启动时将不需要的数据写到智能设备中。所以,对写命令,一般配置为有变化才写,即设置执行周期为0。

3、本次通信实施中出现的硬件及软件问题 1)COM741-S通信模块版本问题

本项目发货模块固化程序版本为1.0,对冗余的支持性较差且不支持某冗余方式,下载与通讯状态不稳定。

在联系工程技术部后,根据研发提供的通信模块固化程序升级软件对COM741-S进行现场升级,升级为2.1版本后,通讯正常。

2)下载信息有错误

在下载过程中,一对主控制器会经常出现工作主控制器对COM741-S下载成功,而备用主控制器对COM741-S下载超时,下载失败的信息提示。

对于此问题,研发回复,属信息报警错误,实际已经下载成功,不影响使用。 3)数据类型转换精度问题

由于该项目的ESD侧的顺控及大联锁逻辑中大量的变量需通过通信方式,由DCS写入到ESD,主要为开关量。

由于ESD-700系统内暂无置位函数,项目组初期实施方式为把16个开关量变量,按从低位到高位的顺序经过选择函数及位与运算的转换为16个对应位外其它15位均为0的整数,再通过位或运算将这16个整数合为一个浮点数送出写入到ESD的保持寄存器,要ESD解析后加入程控逻辑。

写命令组态前,对于读命令,同样ESD侧采到置位的方式把16个开关量合入一个寄存器地址,在DCS侧经读取保持寄存器后解析数据取位,经测试全部正常。

但写命令调试中,发现DCS把合并好的浮点数据写入ESD时,在DCS程序调试窗口看到的数据正常,但写入到智能设备使有一部分数据出现错误:比如通过

6

修改位置浮点数为384写过去便是383,同样2432写过去是2431等等,出现这们的精度差,对于使用开关量数据的通信来说是绝对不能使用的。

经咨询研发,暂无解决方案。最后的处理方法,只能是每8个开关量合为一个模拟量,即一个寄存器的高8位置0不用。量程范围为0-255,经测试,256个状态全部写出正常。

4)不能对同一寄存器同时进行读与写的操作

为了随时检测写命令是否被正常执行,增加了写命令的回读校验程序。 其先,对写命令的这部分MODBUS寄存器进行读,然后通过写状态与读状态在一定时间内的比较判断是否写入。调试中发现,经常会有不能写入的现象发生。经分析,如对同一寄存器进行读写操作,如读指令与写指令不在同一时刻则读写成功;如时间上指令发生冲突则写指令执行失败。

处理方案:由ESD重新分配与写指令所指寄存器相同数量的寄存器与写指令寄存器一一对应,专用于回读。经修改后,写指令顺利执行。

5)用户功能块的嵌套问题 为了校验读写指令时,具体方案为读写状态相同时计时器清零,最终写指令输出为写状态,读写状态不同持续2秒后,用读指令对写指令进行复位。这样一个逻辑算法用户功能块,经对一个读写指令校验,使用正常。计划把8个数据放在一个用户功能块进行处理,结果在另一个用户功能块对它进行嵌套后经调试不能使用。

处理方法,在一个用户功能块中扫描执行8个数据相同的校验。

7