Как получить режим плавного изменения оборотов для тестирования DC-CDI

Возникла потребность в испытании модуля DC CDI в условиях, приближенных к реальным. Для этого нужно менять частоту вращения коленвала, а модуль подключить к нагрузке. Отслеживать реакцию (величину угла опережения) при изменениях оборотов в продолжительном времени.

На первый взгляд подумалось, что можно управлять генераторм сигналов UNI-T UTG962E через компьютер. Был скачан пакет NI-VISA. Установлен Python 3.13 , далее по инструкции по программированию генератора установлены необходимые библиотеки. В консоли убедился, что генератор реагирует на команды. Написал примитивный код:

import pyvisa 
import time
rm = pyvisa.ResourceManager()
my_instrument = rm.open_resource('USB0::0x6656::0x0834::2788532920::INSTR')
print(my_instrument.query('*IDN?'))

fr=20 # Установка начальной частоты
print("fr = " , fr)

# Подготовка каналов с предустановленными значениями

my_instrument.write(':CHANnel1:MODe CONTinue')
my_instrument.write(':CHANnel1:BASE:WAVe SQUare')
my_instrument.write(":CHANnel1:BASE:FREQuency 20")
my_instrument.write(':CHANnel1:BASE:AMPLitude 4.5')
my_instrument.write(':CHANnel1:BASE:OFFSet 0')
my_instrument.write(':CHANnel1:BASE:PHAse 0')
my_instrument.write(':CHANnel1:BASE:DUTY 1.97')
my_instrument.write(":CHANnel1:OUTPut ON")

my_instrument.write(':CHANnel2:MODe CONTinue')
my_instrument.write(':CHANnel2:BASE:WAVe SQUare')
my_instrument.write(':CHANnel2:BASE:FREQuency 20')
my_instrument.write(':CHANnel2:BASE:AMPLitude 4.5')
my_instrument.write(':CHANnel2:BASE:OFFSet 0')
my_instrument.write(':CHANnel2:BASE:PHAse -21.3')
my_instrument.write(':CHANnel2:BASE:DUTY 14.08')
my_instrument.write(':CHANnel2:OUTPut ON')

time.sleep(1)

# Для подстановки переменного значения частоты в строку обращения к инструменту пришлось использовать .format
#  Идем вверх до 150 Гц:
while fr<150:
	fr=fr+5
	message1_template = """:CHANnel1:BASE:FREQuency {fr1}"""
	message1 = message1_template.format(fr1=fr)
	message2_template = """:CHANnel2:BASE:FREQuency {fr1}"""
	message2 = message2_template.format(fr1=fr)
	my_instrument.write(message2)
	my_instrument.write(message1)
	time.sleep(1)
	print("fr = " , fr)
time.sleep(3)

# Идем вниз до 20 Гц:
while fr>20:
	fr=fr-5
	message1_template = """:CHANnel1:BASE:FREQuency {fr1}"""
	message1 = message1_template.format(fr1=fr)
	message2_template = """:CHANnel2:BASE:FREQuency {fr1}"""
	message2 = message2_template.format(fr1=fr)
	my_instrument.write(message2)
	my_instrument.write(message1)
	time.sleep(1)
	print("fr = " , fr)

print("The end")

В принципе, это рабочий вариант, но все равно имеется некоторая задержка между переключениями частоты на одном и втором канале, что вызывает кратковременное прерывание искры. Метод был отвергнут ввиду нахождения второго, более простого варианта. Второй вариант подразумевает использование встроенной в генератор функции частотной модуляции. Выбрана частота девиации 20 mHz , глубина 70 Гц, основная частота каналов — 90 Гц. Остальные параметры каналов не изменялись.

Спасибо за внимание!

5 2 голоса
Рейтинг статьи
Подписаться
Уведомить о
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x