Files
Feeding_control_system/tests/hardware_test.py

155 lines
4.4 KiB
Python

#!/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()