0 引 言
在现代药品管理和分拣领域, 自动化技术的应用成为提升效率和准确性的关键因素。随着全球人口老龄化和健康意识提升, 药品需求量不断增加, 对药品生产和分拣效率提出了更高要求。传统药品分拣过程往往依赖人工操作, 不仅效率低下, 还容易导致药品分发错误, 进而影响患者安全。为了解决这一问题, 研发了一套基于数据采集的自动化药品分拣系统。随着物联网技术的快速发展, 智能设备和传感器的普及为自动化系统的实现提供了新的可能
[1]。物联网的应用能够实现设备间的实时通信, 使得分拣系统能够即时接收和处理信息, 这种实时性大大缩短了响应时间, 有助于优化管理流程, 从而提升药品分拣的效率和准确性。通过将传感器与上位机系统相结合, 能够实时监测药品的状态, 包括药品的种类、 数量和质量等。这种智能化管理不仅提高了分拣速度, 还减少了人为操作失误的风险, 确保药品在整个分拣过程中始终符合标准。此外, 数据的有效存储和处理在现代自动化系统中至关重要。采用 MySQL 数据库和图形化管理工具, 可使数据分类、 查询和分析更加高效和直观。这种系统设计不仅增强了数据的可视化, 还为后续的数据分析提供了有力支持。通过对分拣过程中的数据进行分析, 管理人员可以识别出潜在的瓶颈和优化机会, 进一步提升系统的整体效率。自动化技术、 人工智能和机器视觉等新兴技术的发展, 使药品分拣系统更加智能化和高效
[2]。自动化分拣系统增强了追踪和记录能力, 帮助企业符合监管要求, 确保药品可追溯。企业通过自动化, 降低了人力成本, 提升了生产效率, 从而在激烈的市场竞争中处于优势
[3-4]。在这样的技术背景下, 自动化药品分拣系统不仅能够提高工作效率, 还能为药品管理的智能化进程打下坚实基础。
1 总体结构
随着个性化医疗的兴起, 药品种类和规格日益增多, 这要求分拣系统具备更高的灵活性, 以应对多样化的需求, 并支持批量、 多品种的分拣。这一背景下, 本文设计了一套高效率、 高兼容性和高可靠性的数据采集系统, 重点介绍了上位机的开发过程和功能实现。该系统的总体流程图如
图 1 所示。其中传送带上的药丸进入检测区域,机械部分连续传送, 工业相机和多重传感器开始协同检测。数据采集与预处理部分将数据采集模块对多传感器信号进行采集、 同步, 并初步处理。数据传输部分会通过RS-485串口, 将传感器和图像数据以及反馈信息传送至上位机。接收到数据之后上位机执行算法分析, 产生检测结果, 并通过界面进行实时展示。检测到的结果及相关信息被记录到数据库中; 跨终端汇总窗口可汇总并展示全局信息。最后系统会根据配方或批次需求, 执行下一轮的检测任务, 持续监控产线或检测线运行。
2 传感器及其配套设备
本设计采用M02重量显示器作为数据采集模块, 这是一款小型、 稳定且操作简便的工业级重量显示器, 广泛应用于混凝土搅拌、 冶金、 化工、 饲料等行业。其兼容电阻应变桥式传感器, 具备数字标定、 数字滤波、 自动零位跟踪和上电自动清零等功能, 简化操作并提升测量精度
[5]。M02还支持双向隔离串行口通讯(RS485/RS232), 便于与上位机通讯, 适应性强, 性能稳定, 适用于多种工业场合, 为数据采集和自动化提供可靠支持。接口面板说明如
图 2 所示。
2.1 Mobus RTU协议的优势
Modbus RTU采用二进制传输, 相较于Modbus ASCII, 减少了数据量, 提供了更快的传输速度, 通信效率更高。在药品分拣系统中, 实时性和响应速度非常重要, 使用Modbus RTU可以显著提高通信效率, 确保数据快速传输和系统迅速反应。
与此相比, Modbus TCP需要以太网接口, 对硬件要求较高, 尤其是在大规模或复杂的自动化系统中, 可能会增加成本。Modbus RTU采用差分信号传输(通常通过RS-485接口), 具备较强的抗干扰能力, 适合工业环境中噪声较大的情况。在药品分拣时, 环境中可能存在较多的电磁干扰, 使用Modbus RTU可以更好地保证通信的稳定性。
基于以上几点, Modbus RTU协议相较于其它协议通信效率高、 硬件成本低、 抗干扰能力强和兼容性优秀, 更加适用于工业自动化领域中的药品分拣系统。
2.2 传感器接线端
M02重量显示器需外接电阻应变桥式传感器, 按照
图 3 所示的方式连接传感器到模块。当选用四线制传感器时, 务必将模块的SN+与EX+短接, 同时将SN-与EX-短接。
四线制传感器适合于传输距离较短且温度变化不大的场合, 或在精度要求不高的情况下使用。对于需要长距离传输或精度要求较高的应用, 应选择六线制传感器。传感器接线端口如
表 1 所示。
输入接口原理图如
图 4 所示。仪表输入接口原理图如
图 5 所示。
3 上位机软件设计
在Visual Studio开发环境中, 使用C#语言设计WinForm窗体界面, 并将其打包成.exe可执行程序, 以便用户能够直接使用
[6-7]。上位机通过Modbus RTU协议进行通信, 采用RS485串口进行数据传输, 通信参数设置为: 端口号为扫描计算机内部实际的串口并自动加入到下拉菜单中, 数据位设置为8位, 波特率为9 600 bit/s, 且不使用校验位, 设定1位停止位。作为Modbus RTU通信的主机, 上位机向从站的数据采集模块发送报文。数据采集模块接收到该报文后, 进行CRC16校验, 若校验成功, 则会发回响应报文。上位机发送的报文格式包括设备地址、 功能码、 起始寄存器地址、 读取字节数和CRC16校验码, 共计8 B
[7-9]。数据采集模块的响应报文格式包含设备地址、 功能码、 发送字节数、 3个传感器数据和CRC16校验码, 共11个字节, 具体信息如
表 2 所示。
其中, 第3个传感器的数据涉及到工业秤的判稳标志。
上位机的主界面由串口参数设置区域、 自定义接收配置区域、 自定义发送配置区域、 数据展示区域、 数据库数据实时展示区域和业秤定制区域 6个部分组成, 主界面如
图 6 所示。
1) 串口参数设置区域: 为了增强软件的泛用性, 设计了下拉菜单, 以方便用户自主选择参数。在此次项目中的工业秤上位机界面中, 除了端口号以外的各项参数将默认设置。端口号后面的扫描按钮能够准确扫描设备中的实际端口号, 并将其添加到下拉菜单中。用户在选择所需端口后, 点击相应按钮打开串口, 以便于与设备进行通信。
2) 自定义接收配置区域: 用户可以灵活选择数据的显示方式, 可以选择以十六进制格式输出接收到的数据, 或者直接以可读的字符串格式输出数据。该区域还支持随时切换显示模式, 让用户根据需求自由切换显示方式, 以便分析数据。同时, 选择路径按钮允许用户手动选择本地存储路径, 将接收到的数据存储在本地文件中。所选路径会在文本框中进行展示, 以便用户清晰地了解存储路径。用户可以将接收区中显示的所有数据保存为不同格式的文件(如 .txt 格式), 同时还可以启用“自动保存”功能, 这样每次接收到的新数据都会自动保存, 避免了手动保存的麻烦, 确保数据不会丢失, 并能方便后续处理。另外, 清空接收区功能非常实用, 用户可以在数据量达到一定规模时, 选择一键清空接收区中的数据, 从而避免信息堆积导致显示不清。清空接收区的按钮操作简便, 按下按钮后, 数据会被立即清空, 界面将恢复到初始状态。此外, “暂停接收”按钮允许用户随时中断数据接收, 避免接收过程中出现干扰或不必要的数据加载, 从而使数据的处理更加高效有序
[10]。
3) 自定义发送配置区域: 其功能设计与自定义接收配置区域相似, 但也有独特的特点。发送配置区包括与接收配置区相同的基本功能按钮。发送区支持用户自定义发送数据, 用户可以通过手动输入或选择数据来进行发送。除此之外, 系统还提供了一个自动发送功能, 用户可以设置特定的发送规则, 系统会根据这些规则自动发送数据, 适用于定时发送或周期性数据传输等场景。此外, 发送配置区还增加了“发送本地文件”功能, 用户可以选择并发送本地存储的文件, 通过点击“打开文件”按钮浏览并选择文件路径。发送的文件类型取决于下位机的支持能力, 不同的下位机可能只支持特定格式的文件, 因此用户需要确保选择的文件格式与下位机的兼容性, 以免发送失败或出现错误。通过这一功能, 用户可以方便地将本地文件直接发送到下位机, 简化了数据传输过程, 提升了操作的灵活性和效率。
4) 数据展示区域: 接收区的设计重点在于能够显示初始的16进制报文格式, 示例格式为“地址码 功能码 字节数 三个寄存器数据 CRC校验部分”。在该示例中, 前两个寄存器用于存储重量数据, 而第3个寄存器则表示稳定条件, 例如(00 01), 最后包含CRC校验码。重量显示区是为了方便用户直接查看与对应物体相关的实际重量, 这些重量数据已被转换为十进制形式, 并且仅展示重量部分, 单位为g。举例来说, 当重量显示为6.7时, 表示该药品的重量为6.7 g, 用户能够直观了解物体的具体重量信息。
5) 数据库实时展示区: 该软件通过建立与MySQL数据库的动态连接, 实现了数据的高效管理。使用WinForm控件中的DataGridView, 利用其数据源属性将数据库中的数据绑定到该控件中, 以便用户能够直观查看信息。为了实现数据的实时更新, 引入了Timer控件, 定期刷新数据。可以设定一个合适的时间间隔, 以确保定期重新加载数据并更新绑定内容。通过这种方式, 用户可以随时看到数据库中最新的数据变化。此外, 在连接数据库和进行数据操作时, 加入适当的异常处理机制, 以提升应用的稳定性和用户体验。这种方法有效地将MySQL数据库的数据实时展示在WinForm应用中, 确保用户获得最新的数据库信息。
6) 工业秤定制区域: 这一部分通过调用封装好的Modbus各个功能码的方法, 结合设备说明书来实现该秤的特定功能。我们将依据用户的需求, 对经过处理的特定数据进行更新, 并展示在数据展示区中。具体得说, 通过与Modbus协议的接口交互, 能够获取秤的实时数据或控制指令。实现过程中, 确保所有功能模块的有效性, 以便能够灵活应对不同用户的使用场景和要求, 从而提升用户体验和数据的准确性。
4 实验测试与结果
4.1 项目测试平台搭建
自动化药品分拣系统测试平台由重量显示器、 机械臂、 摄像头、 工作站主机、 双重量传感器构成。对小型物品重量进行精确的称重且误差极小, 实验平台如
图 7 所示。
4.2 测试结果
在测试过程中, 上位机每次发送长度为8 B的Modbus RTU报文。M02重量显示设备接收到该报文后进行CRC16校验, 若校验正确, 则返回一个长度为11 B的响应报文。这个响应报文中包含了3个寄存器的数据, 确保上位机能够获取所需的信息。上位机接收响应报文后, 再次进行CRC16校验, 以确认数据的完整性和准确性, 至此完成了一次完整的数据采集传输过程。在测试中, 使用项目测试工具来模拟实际使用过程中可能出现的各种问题, 以确保系统的稳定性和可靠性。串口参数设置为: 波特率9 600 bit/s、 1位停止位、 8位数据位, 且不使用奇偶校验位。当涉及到多传感器数据通过同一个串口传输到上位机时, 数据处理的过程尤为重要。在这个过程中, 使用this.Invoke方法进行跨线程的数据处理操作, 确保数据能够准确无误地展示, 并及时存入数据库中, 从而实现数据的实时更新和管理。多次不同采样时间间隔测试结果如
表 3 所示。
表 3 中, 测试编号为每次测试的编号, 用于区分不同的测试实例; 采样时间间隔为上位机发送请求和接收响应之间的时间间隔; 发送字节数为上位机发送的Modbus RTU报文字节数, 始终为8字节; 接收字节数为M02重量显示设备返回的响应报文字节数, 始终为11字节; CRC校验结果为校验是否通过。正确表示通过, 错误表示CRC校验失败; 数据处理状态表示数据是否成功处理, 成功表示数据无误, 失败表示数据存在问题; 丢包率为测试过程中丢失的数据包比例; 响应时间为上位机从发送请求到收到响应的时间; 数据处理延迟为数据处理过程中, 由于多线程操作或其他原因导致的延迟; 异常情况包括CRC校验错误、 丢包、 超时等; 备注为测试的补充说明, 包含额外的信息, 如重试操作、 发送接收是否无误等。
从长期多次模拟的实验数据来看, 工业秤与上位机之间的通信表现出色。在这一过程中, 多传感器采集的数据在发送和接收报文前均进行了CRC16校验, 确保了数据的完整性和准确性。经过多次测试, 采样时间设定为100、 500和1 000 ms时, 接收和发送字节数的正确率始终保持在95%以上。这一结果充分证明了该系统在实时性方面的良好表现, 数据采集效率高, 且数据传输过程中的准确性高。此外, 该系统能够长时间稳定地运行, 持续采集多传感器的数据, 并能进行精准无误的按需数据处理操作。即无论是在高频率的采样环境下, 还是在长时间运行的情况下, 系统都能够保持出色的性能, 满足工业应用中的各种需求, 为用户提供可靠的数据支持。
5 结 语
基于Modbus RTU协议的自动化药品分拣系统设计中, 提出了一种创新的双传感器数据采集方法, 并自主研发了上位机的人机交互界面。这种双传感器数据采集方法的创新性主要体现在通过结合两种不同类型的传感器(光电传感器和重量传感器)来增强药品分拣系统的检测精度、 可靠性和实时性, 同时提高了系统的适应性和容错能力。通过数据冗余与融合, 当其中一个传感器出现故障或误差时, 另一个传感器的数据可以提供验证和补充。这种冗余设计确保了系统在各种工作条件下的稳定性, 减少了单点故障对系统性能的影响。数据融合技术在此方法中也得到了应用, 通过对两个传感器采集的数据进行综合处理(例如, 权重平均或逻辑判断), 可以得到更加精确和鲁棒的判断结果, 从而提升药品分拣质量。该系统能够有效应对多变的工作环境, 减少误差, 确保药品分拣过程的高效与准确, 并实现了双传感器数据的实时采集、 显示、 保存及逻辑处理功能。此外, 各个界面之间可以相互扩展, 便于进行系统的二次开发。未来, 随着技术的不断进步, 这种自动化解决方案将可能进一步扩展到更多领域, 为药品管理提供更加智能、 高效的服务
[11]。