昆山市拓恒机电有限公司

冯先生   137-7635-6532

电话: 0512-50138462

E-mail: kstuoheng@126.com

江苏省昆山市经济技术开发区

金沙江南路16号3号厂房

新闻动态
称重AD模块上位机软件的编制
[2020-03-22]

1 引言

称重AD模块已被广泛使用在数字称重传感器制造、模拟秤的数字化改造、衡器仪表制造等领域, 除了基本的AD模数转换功能外, 还具有去皮、清零、滤波、零点跟踪等功能, 以及通信接口的设置。本文主要结合本公司设计生产的称重AD模块, 说明了对应的上位机软件编制相关内容。

2 称重AD模块介绍

山东西泰克仪器有限公司研发的A/D模块, 结构上包括高精度24位AD模数转换芯片、高性能微控制器、直流电源接口、模拟称重传感器接口、RS485半双工通信接口等, 能对各类称重传感器输出的m V信号进行信号放大、A/D转换及数字滤波处理, 除了无显示外, 能够完成称重仪表的所有功能, 并与计算机、PLC或称重仪表组成数字称重系统[1]。以典型的AD-S321模块为例, 其硬件连线图如图1所示。


可见, 电源方面采用直流9V供电。传感器部分, 称重AD模块可与单只模拟称重传感器直接相连, 也可以将多只称重传感器在接线盒内并联后再与AD模块连接, 连接时AD模块通过桥源正EX+和桥源负EX-给模拟称重传感器提供电源, 模拟称重传感器的电桥输出为信号正SI+和信号SI-, 输出到称重AD模块。以上是常见四线加屏蔽线传感器的连接方式, 如果是六线制传感器, 还需将反馈SEN+ (或FB+) 和SEN- (或FB-) 分别连接桥源EX+和EX-。AD芯片完成模数转换功能, 微控制器完成控制、协议解析、称重算法实现、参数保存等功能。

通信方面, AD-S321采用RS485半双工通信方式, 使用数据线A、B与主机进行通信 (山东西泰克仪器有限公司还有其他模块采用RS232或RS422等通信方式, 适合其他场合应用的需要) 。从图中可见, 当使用RS485通信时, 模块与设备一般有三种连线方案:

(1) 连接PLC:模块与客户PLC通过RS485相连, PLC读取模块数据并可通过触摸屏等进行数据显示和状态指示。

(2) 连接PC机:由于上位机通常没有RS485接口, 所以需要先经过RS485转USB转换器或RS485转RS232转换器, 然后在上位机上通过USB虚拟的串口或实际串口进行通信, 上位机上需编制相应软件完成通信、显示和控制等功能。

(3) 连接单片机:可供有单片机开发能力的客户进行进一步开发或嵌入其系统。

前两种方案为较常见的应用方案, 后文将阐述方案2中上位机软件编制的有关内容。以上是单只AD-S321模块的硬件连线图, 多只模块总线连线图, 如图2所示。

图2 称重AD模块总线方式连线图

图2 称重AD模块总线方式连线图   下载原图


可见, 多只称重AD模块属于广播信道总线类型, 每个模块地址唯一。多个称重AD模块的A (RS485+) 、B (RS485-) 是分别连在一起的。注意, 如果RS485信号传输线过长或同时并联了多只AD-S模块, 可能会因驱动能力不足导致找不到模块。此时可尝试在模块端的A与+5V直流电源间接一个1kΩ左右的上拉电阻R1, 在B与地之间接一个1kΩ左右的下拉电阻R2, 以提高带载能力。如果是多只模块并联, 只需在距离上位机最远 (传输线最长) 的那只模块上接上、下拉电阻。若仍不行, 可在RS485传输线的另一端也接上下拉电阻R3、R4。

3 上位机软件的编制

称重模块对应的上位机软件需要完成的主要功能如下。

3.1 串口通信

串口通信在目前工控领域占有重要地位, 它通信简单, 在通信数据量不大的称重行业有着广泛的应用。我们的模块采用异步串行收发UART, 需要在软件中设置的项目有:提供当前可用串口列表供用户选择, 波特率选择 (一般9600bps~115200bps) , 校验位选择 (默认偶校验) , 数据位选择 (默认8位) , 停止位选择 (默认1位) 。

3.2 自动地址扫描程序

称重AD模块地址范围0~31 (Modbus时地址范围1~31) , 一般我们并不知道正在使用的模块地址是多少, 因此需要通过自动地址扫描程序来确定当前模块的地址。由于采用广播信道总线状拓扑, 一个结点 (主机或模块) 发送信息时, 该信息将通过总线传到每一个结点上。其他结点 (模块) 在接收到信息时先要分析该信息的目标地址与本结点地址是否相同, 若相同则接收该信息, 若不相同, 则忽略[2]

地址扫描流程图, 如图3所示。注意, 在连到总线之前, 应确保所有连在同一总线上的模块有不同的地址, 否则将引起地址冲突。开始扫描后, 主机先发送选择某地址的指令, 然后发送询问当前地址的指令, 之后如果能够收到模块应答, 则记录该模块地址, 没有应答说明总线上没有该地址的模块。最后, 在没有达到地址上限31的情况下, 地址值加1, 类似地进行下一个地址模块的查询。

图3 称重AD模块地址扫描流程图

图3 称重AD模块地址扫描流程图   下载原图


3.3 通过指令按钮方式进行参数读写

上位机软件中将常用的读写指令以按钮方式提供给用户, 方便用户操作。这些通过点击按钮直接操作的指令主要包括:去皮、皮重值、毛净重切换、零载标定、加载标定、标定分度数写入、清零、最大量程、分度值、开机置零范围、手动清零范围、零点跟踪范围、零点跟踪速率等。下图显示的仅是与“重量数据”显示有关的界面, 内容包括重量数据格式 (008) , 当前毛净重状态 (净重) , 点击radiobutton按钮切换毛重净重状态, 可见此刻的净重20988g与皮重526g, 目前重量数据侦测校验已经开启, 数据校验正常 (绿色指示灯为正常, 如果异常为红色指示灯, 如果未开启数据校验为黑色指示灯) , 另外还可进行清零和去皮等重量操作 (去皮时保存皮重值) , 小数点位数和显示分度值这里是软件控制的。其他读写参数的按钮则采用列表方式, 显得整齐美观。重量相关的显示和设置界面, 如图4所示。

图4 重量相关的显示和设置界面

图4 重量相关的显示和设置界面   下载原图


3.4 手动指令输入

尽管常用指令可以通过相应按钮直接操作, 但界面空间有限, 一些不常用的命令不可能都在软件中显示。这时我们可以采取手动输入任意命令的方式进行相关操作, 当然也可以完全替代相应按钮功能。

自由口的手动指令输入界面较简单, 这里以Modbus RTU为例, 相关界面如图5所示。

可见, 界面主要包括读或写寄存器指令选择, 参数类型选择, 参数值输入或读取, 手动指令发送, 接收数据显示, 定时发送指令设置等。其中, 模块地址可以自动扫描出来。当采用手动发送指令方式时, 可直接在“HEX指令”窗口内输入待发送HEX指令, 不需输入CRC16校验, 软件会自动产生CRC校验附在指令后面, 然后点击“发送”即可通过串口自动发送出去, 同时发送区会显示包含CRC的完整发送十六进制数据, 接收区会显示接收到的数据。如这里HEX指令发送1F 03 0024 00 01, 实际发送数据为1F 03 00 24 00 01C7 BF (发送区第一行, 为询问滤波强度指令) , 接收为1F 03 02 00 06 90 44 (接收区第一行, 表明当前滤波系数为6) 。另外, 这里也可以方便地直接点击下拉框来选择要发送的指令, 如发送和接收区的第三行即是读取收敛常数的指令, 发送区会将指令自动地“翻译”成对应的HEX发送数据并显示, 接收到模块返回值为100 (0×64) 。

4 软件通信协议

山东西泰克仪器有限公司的称重AD模块从通信协议角度来讲分三类, 第一类支持公司自由口通信协议, 第二类支持标准的Modbus RTU协议, 第三类同时支持自由口和Modbus RTU协议, 二者可用命令相互切换。

图5 Modbus RTU协议的显示界面

图5 Modbus RTU协议的显示界面   下载原图


无论自定义的自由口协议还是通用的Modubs RTU协议, 都属于软件层, 与硬件网络RS485、RS422等无关, 与串口帧结构也无关。不管采用何协议, 我们都可选择相同的通讯接口形式, 如RS485, 也可选择相同的帧结构, 如1个起始位0, 8位数据位, 1位奇偶校验, 1个停止位1。

山东西泰克仪器有限公司自由口协议和Modbus RTU协议的不同点是:前者所需输入的是ASCII字符 (对应的二进制数据) , 即文本方式的命令, 发送命令以分号表示结束, 返回参数一般也是ASCII字符形式, 只是某些格式的称重数据有时会采用十六进制形式, 结束符为回车换行CRLF (0x0D和0x0A) 。

而Modbus RTU通信格式时, 所有数据都是以十六进制数据进行发送和接收的, 大都直接对寄存器进行操作。Modbus协议建立了主设备查询的格式:设备 (或广播) 地址、功能代码、所有要发送的数据、错误检测字段[3]。典型的RTU信息帧如下:

其中设备地址为模块地址, 常用的功能码有读保持寄存器 (0×03) 、预置单个寄存器 (0×06) 、预置多个寄存器 (0×10) 等, 数据包括寄存器地址、个数、数值等。CRC校验采用CRC16, 软件可自动生成并附加。

5 结论

本文举例采用的软件与山东西泰克仪器有限公司称重AD模块配合使用, 既支持自由口协议, 又支持Modbus RTU协议, 同时适应普通模块和高速模块, 界面友好。经长期运行, 稳定可靠, 后续版本中, 还将增加实时曲线显示、数据统计、多通道显示、数据保存、导入导出等功能, 使该软件更加完善。


返回
点击这里给我发消息