diff --git a/feeding/__pycache__/controller.cpython-39.pyc b/feeding/__pycache__/controller.cpython-39.pyc index 48cb190..e56c404 100644 Binary files a/feeding/__pycache__/controller.cpython-39.pyc and b/feeding/__pycache__/controller.cpython-39.pyc differ diff --git a/feeding/__pycache__/process.cpython-39.pyc b/feeding/__pycache__/process.cpython-39.pyc index 95eb83f..cf4b481 100644 Binary files a/feeding/__pycache__/process.cpython-39.pyc and b/feeding/__pycache__/process.cpython-39.pyc differ diff --git a/hardware/__pycache__/inverter.cpython-39.pyc b/hardware/__pycache__/inverter.cpython-39.pyc index 2db3895..a132243 100644 Binary files a/hardware/__pycache__/inverter.cpython-39.pyc and b/hardware/__pycache__/inverter.cpython-39.pyc differ diff --git a/hardware/inverter.py b/hardware/inverter.py index 5090b2b..76db96d 100644 --- a/hardware/inverter.py +++ b/hardware/inverter.py @@ -51,6 +51,11 @@ class InverterController: def control(self, action): """控制变频器启停""" + # 先检查动作是否有效 + if action not in ['start', 'stop']: + print(f"无效操作: {action}") + return False + try: if not self.relay_controller.modbus_client.connect(): print("无法连接网络继电器Modbus服务") @@ -70,9 +75,6 @@ class InverterController: slave=self.config['slave_id'] ) print("停止变频器") - else: - print(f"无效操作: {action}") - return False if isinstance(result, Exception): print(f"控制失败: {result}") diff --git a/tests/__pycache__/test_feeding_process.cpython-39.pyc b/tests/__pycache__/test_feeding_process.cpython-39.pyc index 77cd2ee..1e27443 100644 Binary files a/tests/__pycache__/test_feeding_process.cpython-39.pyc and b/tests/__pycache__/test_feeding_process.cpython-39.pyc differ diff --git a/tests/__pycache__/test_relay_controller.cpython-39.pyc b/tests/__pycache__/test_relay_controller.cpython-39.pyc new file mode 100644 index 0000000..feefc9e Binary files /dev/null and b/tests/__pycache__/test_relay_controller.cpython-39.pyc differ diff --git a/tests/hardware_test.py b/tests/hardware_test.py new file mode 100644 index 0000000..7701d78 --- /dev/null +++ b/tests/hardware_test.py @@ -0,0 +1,155 @@ +#!/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 = [100.0, 200.0, 300.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() \ No newline at end of file