155 lines
4.4 KiB
Python
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() |