Android平台基于Modbus RTU/TCP的数据采集与写入开发记录 android modbus

最近刚完成的一个app记录下。

部分代码已传至github上(https://github.com/tywfeng/moniter-public)

需求是使用android设备(手机平板等),通过modbus RTU网络流转发或modbus TCP两种通讯协议实时采集现场数据,并以数值及图表形式在APP中呈现出来。(因为android手机没有串口所以现场设备会将modbus RTU数据使用TCP流转发方式传输至android端,这种流转发数据格式仍使用RTU数据帧格式(非modbus TCP数据帧格式))

开发前查了一些介绍资料,有包括Modbus4Android等多种android modbus库,但是最终还是决定使用JNI+NDK+libmodbus库的方式开发,主要原因:

  1. 需求中的modbus RTU网络流转发在Modbus4Android库中貌似不支持,因为libmodbus是开源库,所以可以针对需求增加对RTU网络流转发的支持。这是主要原因。
  2. 考虑到可能会做跨平台支持。

App功能设计上主要有以下几点:

  1. 数据采集+写值功能
  2. App前端数值+图表+告警呈现
  3. 参考组态软件,为增强适用性,随时方便设定采集/写的数据类型(例:bool,byte,short,word,long,dword,float,double,string等)
  4. 方便后续其他协议扩展(目前扩展了SiemensS7部分)
  5. 以及一些App前端连接/数据呈现/配置的辅助功能

程序大致流程:

采集:c/c++底层原始数据采集—>根据配置的数据类型解码(包括字节序调整及高低位转换)—>量程变换—>JNI回调至Java层—>存储/数值呈现/图表呈现/告警呈现

写入:将采集流程反向(写入时可区分输入类型:RawHex、SrcValue,ScaledValue等)

 

用户可以根据需求在驱动库里选择相对应的通讯驱动程序,配置相应的通讯握手参数,自由定义需要控制和采集的变量名、通讯地址、数据类型和初始值。功能说明及图片展示: 1.安装完成首次进入将会显示三页功能简要展示页面。 2.点击“立即使用”按钮,进入登录界面(公测账户为admin,密码admin)。 3.登录成功进入APP主页,此时主页所有状态为初始未配置状态。 4.在主页状态下向右滑动,可打开功能模块选择列表。 5.点击“WIFI连接”进入连接现场设备网络页面,如果此时用户已通过手机WIFI页面连接现场设备,则直接跳过此步骤。 6.连接成功后返回功能模块选择列表,点击“参数设置”进入通讯相关参数配置页面(首先进入驱动配置页面),目前驱动库中只有支持Modbus TCP的驱动,后续会持续更新,用户通过在驱动库列表中长按操作将选中的驱动挑选至已选列表中,如果要取消,可以在已选列表中通过同样的长按操作完成。 7.配置要访问的设备通讯参数,与主页的操作逻辑一致,在驱动配置页面向右滑动打开配置功能列表,点击“通讯参数配置”进入通讯参数配置页,然后点击右上角的加号,此时软件会根据已选的驱动类型自动添加一条相对应的通讯参数,用户可以通过双击的方式打开修改列表,然后在列表的某一条参数处通过长按的方式进入最终的修改对话框,修改完成后,可以通过长按的方式选定当前需要的参数配置信息到已选区域。 8.通讯参数配置完成后,向右滑动进入配置功能列表,点击“IO参数配置”进入地址段的分配,点击右上角的加号,在弹出的对话框中根据实际需求分配响应的起始地址以及地址数量,分配完成后,可在屏幕右侧边缘向左滑动调出隐藏功能菜单,通过功能菜单可查看和修改配置地址段的功能对应的IO点信息。 9.所有配置完成后,可返回主页,此时主页显示当前配置的信息,其中“控制操作”功能可以通过按钮发送布尔值,操作逻辑为当前值为0时发送1,当前值为1时发送0,而“参数设置”功能通过对子项长按可以设置调出输入框设置相应的参数值。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值