Bonjour,
Je me permets de solliciter la communauté pour une problématique (pour le moment) très simple.
Je désire mettre ne place des macros de commandes pour des instruments de mesure.
Pourquoi passer par Excel et VBA ? Simplement pour s'intégrer à des relevés Excel existants, et présents sur des postes de production uniquement équipés de Pack Office.
Ce que je veux faire là, maintenant :
Initier une commande d'identification à un instrument (un générateur de fonction Rigol DG822 pour être précis), via une commande USB-VISA.
Pour ceux qui ne connaissent pas VISA, c'est une "Virtual Instrument Software Architecture", une couche d'abstraction normalisée permettant de dialoguer avec des instruments de mesure sans considération du layer physique, qui peut tout à la fois être de l'éthernet, de l'USB, du GPIB. Certaines commandes sont standard, d'autres nécessitent un pilote fournit pas le constructeur.
- Mon matériel est un générateur Rigol DG822, utilisant les pilotes VISA standards.
- J'ai installé la couche de communication VISA via les utilitaires Rigol (Ultra-Sigma pour les initiés).
- Rigol fournit l'exemple de communication via Excel-VBA, (https://iosignal.fi/wp-content/uploads/DG800_ProgrammingGuide_EN.pdf)
- Mon projet VBA est initié exactement comme décrit dans le guide fabricant, avec un bouton lançant une macro, la macro allant lire les coordonnées de l'appareil dans la première cellule, et se chargeant normalement d'envoyer la commande d'identification et de lire la valeur en retour.
- Mes références VBA sont activées (VISA COM 5.5 Type Library).
Le code exemple, tel que je l'ai recopié :
Ce qui ne va pas : Erreur 424, la librairie VISA COM n'est pas ouverte, je n'ai accès à aucun de ses objets !!! L'exécution bloque imparablement au premier "viOpen".
Vous avez une idée géniale pour résoudre çà ? Les envois de commandes à l'instrument fonctionnent très bien avec l'outil en lignes de commandes du fabricant (l'instrument répond bien aux sollicitations, il n'y est pour rien dans l'histoire).
Merci !!
Je me permets de solliciter la communauté pour une problématique (pour le moment) très simple.
Je désire mettre ne place des macros de commandes pour des instruments de mesure.
Pourquoi passer par Excel et VBA ? Simplement pour s'intégrer à des relevés Excel existants, et présents sur des postes de production uniquement équipés de Pack Office.
Ce que je veux faire là, maintenant :
Initier une commande d'identification à un instrument (un générateur de fonction Rigol DG822 pour être précis), via une commande USB-VISA.
Pour ceux qui ne connaissent pas VISA, c'est une "Virtual Instrument Software Architecture", une couche d'abstraction normalisée permettant de dialoguer avec des instruments de mesure sans considération du layer physique, qui peut tout à la fois être de l'éthernet, de l'USB, du GPIB. Certaines commandes sont standard, d'autres nécessitent un pilote fournit pas le constructeur.
- Mon matériel est un générateur Rigol DG822, utilisant les pilotes VISA standards.
- J'ai installé la couche de communication VISA via les utilitaires Rigol (Ultra-Sigma pour les initiés).
- Rigol fournit l'exemple de communication via Excel-VBA, (https://iosignal.fi/wp-content/uploads/DG800_ProgrammingGuide_EN.pdf)
- Mon projet VBA est initié exactement comme décrit dans le guide fabricant, avec un bouton lançant une macro, la macro allant lire les coordonnées de l'appareil dans la première cellule, et se chargeant normalement d'envoyer la commande d'identification et de lire la valeur en retour.
- Mes références VBA sont activées (VISA COM 5.5 Type Library).
Le code exemple, tel que je l'ai recopié :
VB:
Sub QueryIdn()
' Message de début de communication
CreateObject("Wscript.shell").Popup "Configuration du DG822 en cours", 2, "Excel VBA"
Dim viDefRm As Long
Dim viDevice As Long
Dim viErr As Long
Dim cmdStr As String
Dim idnStr As String * 128
Dim ret As Long
'Turn on the device, and the device resource descriptor is in CELLS(1,2) of SHEET1'
viErr = visa.viOpenDefaultRM(viDefRm)
viErr = visa.viOpen(viDefRm, Sheet1.Cells(1, 2), 0, 5000, viDevice)
'Send request, read the data, and the return value is in CELLS(2,2) of SHEET1'
cmdStr = "*IDN?"
viErr = visa.viWrite(viDevice, cmdStr, Len(cmdStr), ret)
viErr = visa.viRead(viDevice, idnStr, 128, ret)
Sheet1.Cells(2, 2) = idnStr
'Turn off the device'
visa.viClose (viDevice)
visa.viClose (viDefRm)
End Sub
Ce qui ne va pas : Erreur 424, la librairie VISA COM n'est pas ouverte, je n'ai accès à aucun de ses objets !!! L'exécution bloque imparablement au premier "viOpen".
Vous avez une idée géniale pour résoudre çà ? Les envois de commandes à l'instrument fonctionnent très bien avec l'outil en lignes de commandes du fabricant (l'instrument répond bien aux sollicitations, il n'y est pour rien dans l'histoire).
Merci !!