为帮助用户在使用本公司产品时,能轻松快速的了解产品的使用方法,故写下基于E850作为主机应用,与E820、E830 组网,实现云端远程控制采集的应用手册,再次,需要提前说明的是,本手册使用的E850,E830,E820具体型号分别是E850-DTU(4440-GPRS),E820-AIO(II-485-4-20),E830-DIO(485-8A)。若用户在使用相同组网模型时,也不用因型号不同而担心,其使用方法大致都是相同的。
E820-AIO系列为我司出品的模拟信号采集系列,该系列采用RS485通讯网路,将分散的现场数据点的模拟信号经 AD 变换传输到主机或由 PC 控制远程主站点。 具有看门狗安全设计(0.2s 复位),不易死机。 E820-AIO 模拟量采集模块具有计量数据采集、测量数据采集、设备开关状态采集等多项功能,主要用作各种测控终端的数据采集、控制和显示设备,适用于各行业的自动化、信息化系统。 E820-AIO内部使用光耦等器件将通信与其他电路实现全隔离,具有 4000vDC防护能力。
E830-DIO (485-8A)是一款数字量采集模块, 8 路数字量隔离输入, 8 路数字量隔离输出(NPN晶体管集电极开路输出) ,采用 RS485 电平通信。模块具备轻触按键,长按 5s 轻松恢复出厂配置参数;软件具有看门狗安全设计, 1s 复位,不易死机。模块采用标准的 ModBus RTU 通讯,可直接适配各种上位机组态软件、 PLC、 DCS 等。 E830-DIO (485-8A)内部使用光耦等器件将通信与其他电路实现全隔离,具有 4000V DC 防护能力。
E850-DTU(4440-GPRS)是款支持 4 路数字量输入(默认干接点), 4 路模拟量输入, 4 路继电器输出的网络 IO 产品。支持 ModbusTCP/RTU 协议。该产品具有高度易用性,用户可方便快速地集成于自己的系统中,以实现基于 GPRS 的远程控制。
在三者中,利用E850-DTU支持连接太阳集团tcy8722云端的指令控制与数据接收特性,将E850作为主机应用,与E820、E830通过485总线,实现云端远程控制采集的应用。本文旨在说明该组合的实现概念与实际应用,对因应用所涉及到相关细则知识点(如:各DTU设备的工作模式以及ModbusTCP/RTU协议等)不做过多的说明,针对特定的细节和说明,请参考相关产品的应用手册。
如下图所示,为3款产品结合使用的组网框架图。
在上图中E820-DTU,E830-DTU,作为输出输入的终端与作为主机的E850-DTU通过485总线相连在一起,继而利用E850主机模式特性,即若网络端或者485总线端向设备发送的数据不满足Modbus RTU、Modbus TCP协议,或者满足 Modbus RTU、 Modbus TCP 协议但是数据地址不是设备地址的情况下, 485 总线来的数据将被传输到网络上,网络上来的数据将被传输到 485 总线上。
通过该特性,我们可以通过云端服务器直接与E850-DTU以及间接与E820-DTU,E830-DTU产生交互信息。通过登录WEB页面的云端后台,实现完整回环的云端控制采集链。
在接下来的章节中,将分别介绍整个云端控制采集链各个环节的应用实列与注意事项等。
在上位机(PC浏览器)中输入:http://cloud.hanzaichips.com/www/data_direct
网址,即进入成都太阳集团tcy8722的私有云端服务器后台界面,如下图所示:
在服务器后台界面,你可以选择发送数据格式与接收数据的显示格式,因为后台服务器采用 Modbus TCP/RTU 协议来与E850-DTU进行信息交互,因此我们建议使用数据格式为16进制数据方便信息的分析与处理。
为保证E850能够正常工作,首先你需要插入一张GPRS的SIM卡,当然现在的4G卡也是可以的,然后你需要准备一个8-28V的直流电源,这里,需要说明的是,在插入SIM卡时,必须保证设备在掉电情况。当插上电源后,此时设备正面指示灯中power灯(红色常量)与工作指示灯(橙色闪烁)开始工作,等待大约20秒左右,NET指示灯开始闪烁到常量,此时表示网络已经接入。如下图所示。
当所有现象都如上所示后,打开E850的上位机,对设备的参数进行各种设置,上位机以及设备的技术手册可到本公司官网的相关下载路径进行下载。
在通过上位机设置设备参数时,你需要使用一个USB转RS485的串口工具来将PC与设备相连接,如下图所示。
当接线如上图接好后,开始使用上位机对设备参数进行设置。
如下图所示:
选择设备对应的串口,点击搜索,即可搜到相关设备,有时候上位机会出现很久都搜索不到设备的情况,你也可以根据设备的地址(默认为1,如果设置过,又忘记了,可通过长按恢复出厂设置,设备地址重新为1),当点击参数设置界面,然后读取参数,即可连接设备。如下图所示:
这里需要说明的是在参数设置时,请务必将服务器IP,服务器端口以及设备工作模式选择为上图红框所示,在与E830,E820通过RS485总线相连时,三者设备地址一定不要重复。这里,我们将E850的设备地址修改为2。
你可以在web云服务器后台发送E850能识别的modbus协议,通过向E850写入命令,从而E850能够返还相应的信息。
现在,你已经实现了E850与云端的交互,那接下来,我们将实现云端与E830,E820的间接交互的实现过程。
根据E850的主机特性。也就是说当网络端或者485总线端向设备发送的数据不满足Modbus RTU、Modbus TCP协议,或者满足 Modbus RTU、 Modbus TCP协议但是数据地址不是设备地址的情况下,RS485总线来的数据将被传输到网络上,网络上来的数据将被传输到RS485总线上。如下图所示:
说的再通俗一点,对于我们云服务器来说,当与E850交互时,设备地址如果是2的话,E850获取云端发来的数据,从而返回相关信息,当云服务器交互的设备地址不为2(假设E820设备地址为3,E830设备地址为1),当云服务器交互的设备地址为1时,此时,E850将网络接收到的信息转发到RS485总线上,如果E830在此总线上,且modbus协议能够匹配,怎将通过E850间接与云服务器交互,在整个组网模型中,E820-DTU,E830-DTU实际扮演的角色是相同,都是作为终端设备,其交互方式与E830-DTU相同。
准备一台E820与E830,将两者的485_A与485_B接口均接到E850的485_A与485_B接口上,然后接上相同电源(8-28V),此时接线图如下图所示(介于实物接线过于繁杂,因此使用示意图表示)
将USB转485工具同时也接到E850的上图所示端口,这样做的目的是方便我们可以通过PC上的软件上位机来设置各设备的参数,例如设备地址的设置。
现在,打开E820,E830的上位机,对其进行参数设置,这里,我们主要将E820设备地址设为3,E830设备地址设置为1(E830在上位机不能设置设备地址)故在一开始就选用其设备地址为1,上位机设置如下图所示:
上图中,由于PC串口连接着3个设备(E850 E830 E820)因此,在对某个设备进行参数设置时,需要将其他没进行参数设置的串口进行关闭。
在这里,我们通过将三个设备设置为地址各不同的了,于是便可在云服务平台对E830,E820间接进行控制了。
在整个数据交互过程中,都必须要有约定好的通信协议来保证数据的可靠性和传输目的性。
经过上述的种种设置后,现在,我们便可以对E850,E830,E820进行相关的控制与数据采集了,接下来,我们根据各设备的modbus协议,分别对上述三款产品通过使用云端服务器进行数据的采集以及终端的控制。
在3.1节,我们已经对E850进行了相关的准备工作,现在你需要将E850-DTU(4440-GPRS)的产品手册打开,找到modbus协议说明的相关定义表部分,在云端服务器,根据modbus协议约定,对E850进行控制。
在说明数据采集的应用实列中,这里我们以读开关量DI输入为例进行使用说明,建议用户可以结合E850-DTU(4440-GPRS)产品手册的4.2.2节(读入开关量DI输入)查看本节内容。
首先,我们按照手册上面的接法在设备上执行,即读取4路开关量输入值, DI输入端 DI1、 COM1短接, DI2、 COM2 不短接, DI3、 COM3 短接, DI4、 COM4 不短接。读取到的开关量输入值为 0x05,对应二进制位 0000 0101,低四位四个 bit 代表开关量输入值,依次为 DI4、 DI3、 DI2、 DI1。 这里需要特别说明一下,手册上说的COM1~COM4并非是面板上的表示,而是公共地的意思(面板上的DIG标识),如下图所示:
在云服务器端,输入指令如下:
02 02 00 10 00 04 78 3f 说明如下:
发送02(设备modbus地址)02(功能码)00 10(开关量起始地址)00 04(读开关数量)78 3f(CRC校验)
这里需要说的是,最后的CRC检验可在公司官网下载 ModBus CRC16计算器软件进行计算。
服务器输入指令与返回数据如下图所示
接收数据为 02 02 01 05 61 cf 说明如下:
接收02(设备modbus地址)02(功能码)01(返回字节)05(开关输入值)61 cf(CRC校验)
向E850数据采集一样,我们根据产品手册的4.2.1节(开关量D0输出),控制E850的终端输出。
首先,我们按照手册上面的接法在设备上执行,即
读取 4 路开关量输出状态,判断当前开关输出状态,低四位四个 bit 代表开关量输出状态,依次为DO4、DO3、DO2、DO1。
在云端,输入指令如下
02 01 00 10 00 04 3c 3f 说明如下
发送02(设备modbus地址)01(功能码)00 10(返回字节) 00 04(开关输入值)3c 3f(CRC校验)
接收数据为 02 01 01 00 51 cc 说明如下:
接收02(设备modbus地址)01(功能码)01(返回字节)00(开关输出值)51 cc(CRC校验)
此时,说明继电器 NC 口与 COM 口常闭, NO 口与 COM 口常开,四个继电器都是如此。
现在我们通过云端控制,功能码0x05写 DO2开关量输出,使NC2、COM2断开,NO2、COM2闭合,写入值为 FF 00;使 NC2、 COM2 闭合, NO2、 COM2
断开,写入值 00 00。
云端发送数据为:
02 05 00 11 ff 00 dc 0c 说明如下:
发送02(设备modbus地址)05(功能码)00 11(开关量地址)ff 00(写入值)dc 0c(CRC校验)
当设置正确,返回发送相同的数据:
02 05 00 11 ff 00 dc 0c 说明与上表相同。
然后,我们可以看到面板上DO2指示灯亮起,并能听到继电器切换开关的声音。
以上便是我们对E850在云端服务器上对其进行数据采集与控制的应用,这种交互方式是直接的。下面我们来对E830,E820的间接控制做应用举例。
由3.3节的介绍,我们已经将E830的准备动作完成了,在保证接线无误的情况下,我们需要打开E830-DIO+(485-8A)的产品手册,找到modbus协议说明的相关定义表部分,在云端服务器,根据modbus协议约定,对E830进行相关的控制
我们知道E830有8路输入的DIO端口,这里。建议用户可结合产品手册,3.1.3节(保持寄存器说明)一节查看本节内容。
我们知道,我们的E830的设备地址为1,这里,我们未在DI端接入开关量,此时,当我们查询某个输入值时,值应该为0,在云端,我们输入
01 03 00 00 00 01 84 0a,说明如下:
发送01(设备modbus地址)03(读命令)00 00(开始读寄存器地址)ff 00(读寄存器长度)dc 0c(CRC校验)
此时,云服务器收到信息为
01 03 02 00 b8 44,说明如下:
接收01(设备modbus地址)03(读命令)02(返回字节数)00(DI的值)B8 44(CRC校验)
在整个过程中,云端服务器会将指令通过网络发送给E850,由于E850处于主机模式,当云端发送的目的地址不是E850的地址时,它会将网络收到的信息转发到总线上,此时E830挂接在总线上,(细心的你,可能会观察到,当总线上有数据流时,此时E830,E820的RXD与TXD会闪烁),匹配到是自己的地址时,将采集的输入信息通过485发送到E850,再由E850通过网络上传到服务器。
E830同时具备8路开关量输出控制,这里,我们开始对DO进行控制输出举例,在云端服务器,我们输入数据:
01 03 00 01 00 01 d5 ca 先查询输出状态值。
云端收到的DO状态为1 3 2 0 ff f8 4
01 03 02 00 b8 44,说明保持默认状态,现在我们改变DO状态
在云端输入数据:
01 06 00 01 00 ff 98 4a 说明如下:
发送01(设备modbus地址)06(写命令)00 01(写寄存器地址)00 ff(写寄存器值)98 4a(CRC校验)
返回数据和发送的相同。
然后,我们再次查询,01 03 00 01 00 01 d5 ca
输出的值为01 03 02 00 ff f8 04
此时我们可以看到,DO的寄存器值发生变化,而实际测DO电平时,会发生改变(寄存器值为00 00时电平为高,为00 ff时,8路均为低)。
E820与云端的间接交互原理和4.2节一样,在3.3节中,我们将E820的设备地址设置为3,在云端如果控制对象的设备地址为3便可以和E820进行通信。
用户可以打开E820-AIO(II-485-4-20)配套的产品手册,在产品手册的3.1节(Modbus地址表)结合本节内容来使用,
在E820中,有四路的模拟采集,现在,我们没有加任何外路电流,因此,此时读出的设备应该返回0,通过读寄存器的方式,来读取AI1~AI4的采集量(单位0.001mA),这里,我们在云端发送数据为:
03 03 00 0C 00 04 85 e8 说明如下
发送03(设备modbus地址)03(写命令)00 0C(开始读寄存器地址)00 04(读寄存器长度)85 e8(CRC校验)
在云端接收消息栏,收到消息为
03 03 08 00 00 00 00 00 00 00 00 9e 6f说明如下:
接收01(设备modbus地址)03(读命令)08(返回字节数)00 00(AI1的值)00 00(AI2的值)00 00(AI3的值)00 00(AI4的值)9e 6f(CRC校验)
可以看到我们4路输出都为0,当我们在AI1处接入7mA的电流时,此时重新在云服务器端发送采集命令:03 03 00 0C 00 04 85 e8
此时,返回数据为:
03 03 08 1b 41 00 00 00 00 00 00 8f d4
此时,AI1的寄存器值为0x1b41=6977≈7000,由于单位为0.001mA,因此采集到了AI1处电流值大小。
使用云服务对E820的波特率进行设置,这里,我们在云平台发送数据先查询当前设备的波特率,发送数据为:
03 03 00 21 00 01 d4 00 说明如下:
发送030300 2100 01d4 00
设备modbus地址写命令开始读寄存器地址读寄存器长度CRC校验
云服务器接收消息为:
03 03 02 00 03 81 85 说明如下:
接收03(设备modbus地址)03(读命令)02(返回字节数)00 03(3波特率为9600)81 85(CRC校验)
现在将波特率设置为19200,云服务器发送如下数据
03 06 00 21 00 04 d9 e1 说明如下:
发送03(设备modbus地址)06(写命令)00 21(对波特率寄存器设置)00 04(设置为19200)D9 e1(CRC校验)
然后再发送03 03 00 21 00 01 d4 00验证当前波特率,云端收到消息为:
03 03 02 00 04 c0 47,此时数据为00 04说明控制波特率参数设置完成。
至此,关于E850,E830,E820系列DTU设备正对云端的控制与采集的实列应用就讲完了,这里作者只是将三者分别与云服务器的交互简单的应用了一次,实际三者的组网配合以及E850与其他类似于E820,E830的产品组成的复杂功能是可以实现的,本手册仅起到一个抛砖引玉的作用。
今天的分享就到这里啦,EBYTE每一天都致力于更好的助力物联化、智能化、自动化的发展,提升资源利用率,更多串口服务器、数传电台、lora无线模块等产品更多资料,感兴趣的小伙伴可以登录我们的太阳集团tcy8722官网和企业公众号(微信号:cdebyte)进行了解,也可以直接拨打400电话咨询技术专员!