MCGS开发调试一般来说具有三种方式,如下所述:
(1)选择使用模拟设备,一般来说无法直接在电脑上调试真实设备(不带以太网型号),需要通过USB转485设备中转实现,在调试完成需要烧录U盘下载程序前调整为正确串口就行(通常为COM1-RS232与COM2-RS485);也可以选择设备驱动中的“模拟数据设备”,此法会在调试完成后对设备驱动相关的“脚本”或者“控件”有调整,而且该方法使用起来步骤繁琐,理解起来复杂,不建议使用。
(2)通过TCP/IP连接屏幕直接调试,此方法调试是最为方便的,但一些老旧型号并不支持以太网连接,所以该方法具有一定的局限性。
(3)通过USB下载,烧录程序很慢还需要使用不常用的USB梯型口,多数情况下需要单独购买,并且USB通讯距离很短无法在“中控室”实现对现场设备的调试。
以上方式各有优缺点,没有最好的方法只有最适合的方法。
这里介绍一种在家无需在现场调试方式,此方法需要结合虚拟串口和Modbus仿真从机实现,此方法可在一台电脑上较完整的仿真整个开发工程,完成整个开发过程中的调试,节省开发人员的现场调试时间。
TCP客户端虚拟串口(ModBus RTU)
此处以父设备采用官方提供的“通用串口父设备”驱动,子设备驱动使用“莫迪康Modbus RTU”为例,设备添加如下图所示:
MCGS添加变量与关联变量,在之后的网络仿真调试中也会使用此处定义的变量;
Modbus Slave仿真设备,由于组态屏Modbus RTU协议进行通讯,因此仿真设备必须使用Modbus RTU Over TCP/IP连接方式,该软件从机工作在TCP/IP时只能使用服务器模式,市场上还有不少的Modbus仿真软件比如: modscan、MThings等软件,都可以使用这里就采用Modbus Slave为例其余软件方法类似,此处仿真从机使用的控制点位会在后续调试中使用到;
简单制作人机交互界面方便演示后续后续仿真调试也使用该界面演示;
利用虚拟串口工具虚拟串口1(COM1),新建TCP客户端模式,配置IP参数仿真设备服务器地址192.168.3.100,端口号9000。
完成以上配置后就可以实现整个流程的仿真控制,并且调试程序可以直接用于生成“U盘下载程序”,下图完整演示了仿真屏幕控制仿真设备的第一路输出;
TCP服务器虚拟串口(Modbus RTU)
虚拟串口的方式不同,虚拟从机的连接方式也就不同,利用虚拟串口的TCP服务器模式虚拟串口1(COM1)如下:
MCGS配置不用修改,只需配置仿真从机,由于Modbus Slave不支持TCP客户端使用Modbus RTU协议通讯R,因此需要在客户端模式虚拟串口10(COM10),让虚拟串口工具自连接。
利用TCP服务器与客户端的自连接,我就可以全程使用串口且使用RTU协议进行数据收发;
修改从机连接方式为“Serial Port”,并选择串口10,两个虚拟串口的波特率参数可以不同,串口和串口之间通过TCP协议进行转发;
仿真屏幕控制仿真设备的第四路输出;
该虚拟串口工具支持数据监控,使能监控,记录收发情况如下:
也可以利用虚拟串口工具UDP模式实现以上功能,方法基本相同不再赘述;
云虚拟串口远程采集
利用一台E95-DTU(4G-02)结合虚拟调试工具实现远程数据采集,以采集远程电表有功功率为例,采集方法基于Modbus RTU协议;
DTSU666寄存器操作方法,详细寄存器列表请阅读“正泰DTSU666用户手册”,此处截取原手册关于有功总电能读取方法说明,如下:
读当前正向有功总电能 ImpEp (101EH)
读命令帧:01 03 10 1E 00 02 A0 CD(十六进制,01 为表地址,03 为读命令,101E 为当前正向有功总电能地址,0002 为单精度浮点数据长度,A0CD 为 CRC16 校验码)
返 回 帧:01 03 04 3F F1 EB 85 28 87(01 为表地址,03 为读命令,04 为读寄存器返回数据数量,3FF1EB85 为浮点数据,2887 为 CRC16 校验码)
ImpEp 测量值=0x3FF1EB85(单精度浮点)×电流变比×电压变比=1.89(十进 制)×20×(10×0.1)= 37.8kWH。
配置云虚拟串口连接EBYTE服务器与现场E95-DTU(4G-02)实现数据互通,选择虚拟串口号为COM1,并将E95-DTU(4G-02)侧面的SN写入设备SN码输入框,点击“确认添加”;
等待虚拟串口服务器连接成功,如下图所示;
打开串口调试工具,选择虚拟串口号,此处的波特率参数最好和设备相同,使能16进制接收并打开时间戳,选择16进制发送Modbus 指令(0x0103101e0002adcd)等待设备返回数据,利用IEEE754标准解析浮点数据;
利用网页在线转换(https://lostphp.com/hexconvert/),如下图所示: