IOTOS物联中台modbus驱动对接科士达精密空调设备
本文章为原创,转载请注明出处!
账号:iotos_test 密码:iotos123
代码地址:
- 
前言
 
Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。
Modbus具有两种串行传输模式:分别为ASCII和RTU。Modbus是一种单主站的主从通信模式,Modbus网络上只能有一个主站存在,主站在Modbus网络上没有地址,每个从站必须有唯一的地址,从站的地址范围为0 - 247,其中0为广播地址,从站的实际地址范围为1 - 247。
Modbus RTU通信以主从的方式进行数据传输,在传输的过程中Modbus RTU主站是主动方,即主站发送数据请求报文到从站,Modbus RTU从站返回响应报文。
- 
驱动目的
 
驱动将以串口连接的科士达精密空调的数据拿到并上云
- 
适用范围
 
科士达精密空调,以串口连接工控机或电脑
- 
使用示例
 - 首先,将精密空调的串口连接至工控机或者电脑上:
 - 进入
 
- 填好网关名称后点击确认
 
- 创建设备示例点击【我的设备】 -> 【通信网关】 -> 【设备实例】
 
- 填写【设备名称】、选择刚刚创建的【模板驱动】和【通信网关】。参数topic为mqtt订阅的topic,用来拿去设备的数据,host和port为mqtt服务器的地址和端口号
 
- 创建数据点,点击【我的设备】 -> 【通信网关】 -> 【设备实例】 -> 【数据点】,并在【设备实例】下拉列表选择刚刚创建的设备实例
 
第一个点配置"private"属性用于驱动识别表示第一点
其余的点配置point和index,point表示指向哪个点,index表示取第几个数据,下面示例为第二个数据点,这里point填第一个点的oid,index填1,后面的数据点一次,更改index获取不同位的数据即可
- 在【我的设备】 -> 【通信网关】中找到刚才创建的网关,点击【高级】
 
- 开启云网关,密码为账号密码
 
- 点击 【我的设备】 -> 【通信网关】 -> 【设备实例】->【数据点】,选择刚才创建的设备实例
 
- 即可查看数据已经上报成功
 
- 
驱动代码
 - 由于精密空调是串口连接,数据需要上报到线上的中台,但是工控机配置过低无法运行驱动文件,所以中间利用mqtt进行了数据的相关转移,若精密空调连接的工控机或者电脑可以直接运行驱动则无需利用mqtt进行数据转移,可以直接上传至中台,这里的代码是包含了mqtt服务的。
 - 数据的获取和mqtt的发布(脚本)
 
- mqtt的订阅,并将获得的数据上传至中台(驱动文件)
 
- 
驱动解析
 - 编写环境为python2(python3也可以),首先需要导入modbus_tk和paho.mqtt等、数据解析和modbus通讯的相关包
 
- 利用modbus_tk里面的modbus_rtu打开服务器的串口并向其发送指令,其中serialObjTmp = serial.Serial(port='com11', baudrate=9600, parity='N', bytesize=8, stopbits=1)中port表示串口号,baudrate表示波特率 parity表示校验位,bytesize表示数据位,stopbits表示停止位。打开串口后利用master.execute(8, 1, 15, 6)向串口发送数据,8表示精密空调的地址,1表示功能码,15表示寄存器起始地址,6表示读取的寄存器的个数。读取数据后进行数据的处理
 
- 读取数据并处理后返回,利用mqtt将其发布到对应的topic
 
- 驱动文件(订阅并将数据上传至中台),首先先导入mqtt和驱动运行的依赖文件
 
- 初始化mqtt和驱动,获取中台上设备示例的配置并且连接至mqtt
 
- 循环采集订阅拿到的数据并且上传至中台
 
至此,精密空调驱动的开发完成,即可实现精密空调的数据上云
                    
                











                
            
        
浙公网安备 33010602011771号