#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 现场硬件测试脚本 用于测试实际控制器的功能,包括: - 继电器控制(各种开关控制) - 变频器控制(启动/停止、频率设置) - 变送器数据读取(重量测量) """ import time from hardware.relay import RelayController from hardware.inverter import InverterController from hardware.transmitter import TransmitterController def test_relay_controls(relay): """测试继电器控制功能""" print("\n=== 继电器控制测试 ===") # 测试上料斗滑动门 print("测试上料斗滑动门开启...") relay.control(relay.DOOR_UPPER, 'open') time.sleep(1) print("测试上料斗滑动门关闭...") relay.control(relay.DOOR_UPPER, 'close') time.sleep(1) # 测试上料斗出砼门 print("测试上料斗出砼门开启...") relay.control(relay.DOOR_LOWER_1, 'open') time.sleep(1) print("测试上料斗出砼门关闭...") relay.control(relay.DOOR_LOWER_1, 'close') time.sleep(1) # 测试下料斗出砼门 print("测试下料斗出砼门开启...") relay.control(relay.DOOR_LOWER_2, 'open') time.sleep(1) print("测试下料斗出砼门关闭...") relay.control(relay.DOOR_LOWER_2, 'close') time.sleep(1) # 测试上料斗破拱 print("测试上料斗破拱开启...") relay.control(relay.BREAK_ARCH_UPPER, 'open') time.sleep(1) print("测试上料斗破拱关闭...") relay.control(relay.BREAK_ARCH_UPPER, 'close') time.sleep(1) # 测试下料斗破拱 print("测试下料斗破拱开启...") relay.control(relay.BREAK_ARCH_LOWER, 'open') time.sleep(1) print("测试下料斗破拱关闭...") relay.control(relay.BREAK_ARCH_LOWER, 'close') time.sleep(1) # 测试状态读取 print("读取当前继电器状态...") status = relay.get_status() print(f"继电器状态: {status}") def test_inverter_controls(inverter): """测试变频器控制功能""" print("\n=== 变频器控制测试 ===") # 测试启动 print("测试启动变频器...") result = inverter.control('start') print(f"启动结果: {result}") time.sleep(2) # 测试设置不同频率 frequencies = [220.0, 230.0, 240.0, 400.0] for freq in frequencies: print(f"测试设置频率 {freq}Hz...") result = inverter.set_frequency(freq) print(f"设置频率 {freq}Hz 结果: {result}") time.sleep(2) # 测试停止 print("测试停止变频器...") result = inverter.control('stop') print(f"停止结果: {result}") time.sleep(1) # 测试无效操作 print("测试无效操作...") result = inverter.control('invalid') print(f"无效操作结果: {result}") def test_transmitter_reading(transmitter): """测试变送器数据读取功能""" print("\n=== 变送器数据读取测试 ===") # 测试读取上料斗重量 print("测试读取上料斗重量...") weight = transmitter.read_data(1) print(f"上料斗重量: {weight}kg") time.sleep(1) # 测试读取下料斗重量 print("测试读取下料斗重量...") weight = transmitter.read_data(2) print(f"下料斗重量: {weight}kg") time.sleep(1) # 测试连续读取 print("连续读取重量数据 5 次...") for i in range(5): upper_weight = transmitter.read_data(1) lower_weight = transmitter.read_data(2) print(f"第{i+1}次读取 - 上料斗: {upper_weight}kg, 下料斗: {lower_weight}kg") time.sleep(1) # 测试无效ID print("测试读取无效ID...") weight = transmitter.read_data(99) print(f"无效ID读取结果: {weight}") def main(): """主测试函数""" print("现场硬件测试开始...") try: # 初始化控制器 print("初始化控制器...") relay = RelayController(host='192.168.0.18', port=50000) inverter = InverterController(relay_controller=relay) transmitter = TransmitterController(relay_controller=relay) # 执行各项测试 test_relay_controls(relay) test_inverter_controls(inverter) test_transmitter_reading(transmitter) print("\n所有测试完成!") except Exception as e: print(f"测试过程中发生错误: {e}") if __name__ == "__main__": main()