Discussions au sujet des autres produits NI

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

writemultisample

Bonjour à tous
 
Depuis un certain temps, j'essaie de générer une fréquence de 50Hz  3V et de 30Hz  3V à l'aide de la carte NI 6251 (USB) en VB.net.
La fréquence de 50Hz 5V est générée à partir de l'ouverture de mon formulaire.
La fréquence de 30Hz 3V est générée lors de l'appui sur un bouton.
Lors de l'appui sur le bouton, la fréquence est modifiée directement mais l'amplitude du signal est mise à jour après plus de 2 secondes (Voir attachement signal oscillo).
Si on stoppe la tache avant d'écrire à nouveau dans le buffer et ensuite re-démarrer la tache, le signal de sortie reste +/- 25ms à un niveau de tension continu.
Dans mon application, je ne peux me permettre cet arrêt.
 
Voici mon programme en VB.net :
 
Imports NationalInstruments.DAQmx
Public Class Form1
    Dim myTaskU12 As Task
    Dim myAnalogWriterU12 As AnalogSingleChannelWriter
    Dim DataSinus(99) As Double
   
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Crée la tache pour la gestion de la tension sinusoidale +/-5V max 50Hz
        Try
            myTaskU12 = New Task()
            'Crée un canal virtuel pour la gestion de la tension sinusoidale
            myTaskU12.AOChannels.CreateVoltageChannel("NIH3994/ao0", "", -10, 10, AOVoltageUnits.Volts)
            'Verifie la tache
            myTaskU12.Control(TaskAction.Verify)
            'Calcul la sinusoïde avec une amplitude de 5V max
            For nbCount As Integer = 0 To DataSinus.GetUpperBound(0)
                DataSinus(nbCount) = 5 * Math.Sin((2 * Math.PI) * nbCount * (1 / DataSinus.GetUpperBound(0)))
            Next
            myTaskU12.Timing.ConfigureSampleClock("", 5000, SampleClockActiveEdge.Rising, SampleQuantityMode.ContinuousSamples, DataSinus.Length)
            myAnalogWriterU12 = New AnalogSingleChannelWriter(myTaskU12.Stream)
            myAnalogWriterU12.WriteMultiSample(False, DataSinus)
            myTaskU12.Start()
        Catch ex As DaqException
            MessageBox.Show(ex.Message)
            myTaskU12.Dispose()
            myTaskU12 = Nothing
        End Try
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        '+/-3V max 30Hz
        'Calcul la sinusoïde avec une amplitude de 3V max
        For nbCount As Integer = 0 To DataSinus.GetUpperBound(0)
            DataSinus(nbCount) = 3 * Math.Sin((2 * Math.PI) * nbCount * (1 / DataSinus.GetUpperBound(0)))
        Next
        myAnalogWriterU12.WriteMultiSample(False, DataSinus)
        'Modifie la fréquence d'échantillonnage
        myTaskU12.Timing.SampleClockRate = 3000
    End Sub
End Class
 
Quelqu'un peut-il m'aider a résourdre se problème.
 
Merci
 
Jacky
 
0 Compliments
Message 1 sur 1
3 577 Visites