Quelques exemples de pilotage d'un réseau avec une carte VM 110 et Visual Basic.


Ces exemples ont pour but de montrer comment on peut concevoir avec Visual Basic un programme de pilotage d'un réseau en utilisant les cartes d'interface USB VM 110 de Velleman.
L'objectif principal de la commande par PC est d'automatiser la commande du réseau et deux exemples sont donnés mais il est aussi indispensable de pouvoir piloter le réseau manuellement avec un TCO, ce qui peut être fait par le PC avec une interface graphique qui représente le réseau et qui comporte des boutons de commande. Un exemple de conception d'un TCO logiciel est aussi donné.

1. Commande automatique du réseau

1.1 Premier exemple

1.1.1 Présentation du réseau

Il s'agit de commander deux trains circulant sur le même circuit avec arrêt en gare. Le réseau utilise 2 alims PWM et 2 détecteurs de passage à barrière infra-rouge comme indiqué sur le schéma ci-dessous:



Le principe de fonctionnement est le suivant.

On suppose que les conditions initiales soient celles représentées sur le schéma. Le train A est en gare et le train B est positionné entre le train A et le détecteur D2. Les trains circulent dans le sens des aiguilles d'une montre.
On va d'abord envoyer l'alim 2 (tension=Vmax). Le train B démarre. Le passage de B devant le détecteur D2 provoque le démarrage progressif du train A (envoi de l'alim 1 de 0 volt à Vmax). Le passage du train B devant le détecteur D1 provoque son arrêt en gare (coupure progressive de l'alim 1 entre Vmax et 0). Le passage du train A devant le détecteur D2 va provoquer le départ du train B et ainsi de suite...

Les entrées/sorties utilisées de la carte sont les suivantes:
sortie analogique PWM1 qui commande l'alim 1
sortie analogique PWM2 qui commande l'alim 2
entrée numérique I1 qui reçoit le signal du détecteur 1
entrée numérique I2 qui reçoit le signal du détecteur 2

1.1.2 Programme Visual Basic

Le programme écrit en Visual Basic est le suivant:

'ouverture du lien de communication avec la carte d'adresse 0'
OpenDevice (0)

'envoi alim 2'
Vmax = 100
OutputAnalogChannel 2, Vmax

1
'interruption du programme par la touche Echap'
If (GetAsyncKeyState(27) <> 0) Then
GoTo 2
End If

'détection de passage devant le détecteur 2'
10
If (GetAsyncKeyState(27) <> 0) Then
GoTo 2
End If
If ReadDigitalChannel(2) = 0 Then
GoTo 10
End If

'départ progressif du train en gare,envoi de l'alim 1 '
Vmin = 0
Vmax = 100
For n = Vmin To Vmax Step 2
OutputAnalogChannel 1, n
Limit = Timer + 0.1
Do Until Timer >= Limit: Loop
Next n

'détection de passage devant le détecteur 1'
20
If (GetAsyncKeyState(27) <> 0) Then
GoTo 2
End If
If ReadDigitalChannel(1) = 0 Then
GoTo 20
End If

'arrêt progressif du train en gare,coupure de l'alim 1 '
Vmin = 0
Vmax = 100
For n = Vmax To Vmin Step -2
OutputAnalogChannel 1, n
Limit = Timer + 0.1
Do Until Timer >= Limit: Loop
Next n

GoTo 1

2
'arrêt du programme,fermeture du lien de communication avec la carte d'adresse 0'
ClearAllDigital
ClearAllAnalog
CloseDevice

1.2. Deuxième exemple

1.2.1 Présentation du réseau

Le schéma du réseau est le suivant:



Ce programme permet de commander trois trains circulant sur le même circuit avec arrêt en gare (il y a toujours un train à l'arrêt et deux qui circulent) . Le réseau utilise 2 alims PWM , 2 aiguilles et 2 détecteurs de passage à barrière infra-rouge. Les 2 voies de la gare sont alimentées par l'alim 1 par l'intermédiaire d'un relais.
Le choix de la voie alimentée est effectué par la commande digitale O1.
O1 = 0 ==> voie 1 alimentée et aiguilles en position directe
O1 = 1 ==> voie 2 alimentée et aiguilles en position déviée

Les entrées/sorties utilisées de la carte sont les suivantes:
sortie analogique PWM1 qui commande l'alim 1
sortie analogique PWM2 qui commande l'alim 2
sortie numérique O1 qui commande le choix de la voie alimentée
entrée numérique I1 qui reçoit le signal du détecteur 1
entrée numérique I2 qui reçoit le signal du détecteur 2

Les conditions initiales sont les suivantes:
train A en gare voie 1
train B en gare voie 2
train C entre la gare et le détecteur D2

Au lancement du programme, l'alim 2 fournit une tension sur la voie et le train C démarre.
Puis le déroulement de la séquence est le suivant:
passage du train C devant D2 ==> tension alim 1 sur voie 1 ==> départ du train A en gare voie 1
passage du train C devant D1 ==> coupure alim 1 sur voie 1 ==> arrêt du train C en gare voie 1
passage du train A devant D2 ==> tension alim 1 sur voie 2 ==> départ du train B en gare voie 2
passage du train A devant D1 ==> coupure alim 1 sur voie 2 ==> arrêt du train B en gare voie 2
passage du train B devant D2 ==> tension alim 1 sur voie 1 ==> départ du train C en gare voie 1
passage du train A devant D1 ==> coupure alim 1 sur voie 1 ==> arrêt du train A en gare voie 1

1.2.2 Programme Visual Basic

Le programme écrit en Visual Basic est le suivant:

c=-1 'variable utilisée pour le choix de la voie en gare'

'ouverture du lien de communication avec la carte d'adresse 0'
OpenDevice (0)

'envoi alim 2'
Vmax = 100
OutputAnalogChannel 2, Vmax

1
'interruption du programme par la touche Echap'
If (GetAsyncKeyState(27) <> 0) Then
GoTo 2
End If

'détection de passage devant le détecteur 2'
10
If (GetAsyncKeyState(27) <> 0) Then
GoTo 2
End If
If ReadDigitalChannel(2) = 0 Then
GoTo 10
End If

'choix de la voie de départ'
If c = -1 Then
ClearDigitalChannel (1)
End If
If c = 1 Then
SetDigitalChannel (1)
End If

'départ progressif du train en gare,envoi de l'alim 1 '
Vmin = 0
Vmax = 100
For n = Vmin To Vmax Step 2
OutputAnalogChannel 1, n
Limit = Timer + 0.1
Do Until Timer >= Limit: Loop
Next n

'détection de passage devant le détecteur 1'
20
If (GetAsyncKeyState(27) <> 0) Then
GoTo 2
End If
If ReadDigitalChannel(1) = 0 Then
GoTo 20
End If

'arrêt progressif du train en gare,coupure de l'alim 1 '
Vmin = 0
Vmax = 100
For n = Vmax To Vmin Step -2
OutputAnalogChannel 1, n
Limit = Timer + 0.1
Do Until Timer >= Limit: Loop
Next n

c = -c

GoTo 1

2
'arrêt du programme,fermeture du lien de communication avec la carte d'adresse 0'
ClearAllDigital
ClearAllAnalog
CloseDevice

1.3 Téléchargements

Vous pouvez télécharger les deux exemples ci-dessus en cliquant ici.
Ces programmes ne fonctionneront que si vous possédez la carte USB Velleman VM 110 et avez installé sur votre PC le logiciel Visual Basic ainsi que la DLL qui pilote la carte USB (K8055D.dll).

2. Commande manuelle. Conception d'un TCO logiciel

A titre d'exemple, on va piloter le réseau minimal ci-dessous:



Les commandes à envoyer par le TCO au réseau, via la carte USB, sont les suivantes:
- marche avant et arrière (commande carte: sortie numérique 3)
- commande d'accélération et décélération (commande carte: sortie analogique PWM 1)
- commande d'arrêt d'urgence
- commande d'alimentation des voies 1 et 2 (commandes carte: sorties numériques 1 et 2)
- commande simultanée des deux aiguilles (position directe ou déviée) (commande carte: sortie numérique 4)

L'interface graphique utilise 4 types d'objets:
- une "picture box" qui affiche une image du plan du réseau
- des boutons de commande pour chaque fonction (alimentation des cantons, commande des aiguilles)
- des étiquettes (labels) qui affichent des informations à l'écran ainsi que le résultat de certaines commandes
- une barre de défilement horizontale (HScrollBar) qui commande la tension envoyéee au réseau.

Voici une capture d'écran de l'interface graphique du TCO:



Un clic gauche de la souris sur l'un des boutons de l'interface va envoyer la commande affichée sur le bouton.

Le tableau ci-dessous donne la liste des boutons, les fonctions associées ainsi que le code Visual Basic transmis à la carte USB.

Intitulé du bouton Commande associée code Visual Basic
Voie 1 on alim voie 1 on SetDigitalChannel (1)
Voie 1 off alim voie 1 off ClearDigitalChannel (1)
Voie 2 on alim voie 2 on SetDigitalChannel (2)
Voie 2 off alim voie 2 off ClearDigitalChannel (2)
MAV marche avant ClearDigitalChannel (3)
MAR marche arrière SetDigitalChannel (3)
A1 direct aiguilles en position directe ClearDigitalChannel (4)
A1 dévié aiguilles en position déviée SetDigitalChannel (4)
STOP arrêt d'urgence OutputAnalogChannel 1, 0


2.3 Téléchargements

Vous pouvez télécharger l'exemple de TCO ci-dessus en cliquant ici.
Ce programme ne fonctionnera que si vous possédez la carte USB Velleman VM 110 et avez installé sur votre PC le logiciel Visual Basic ainsi que la DLL qui pilote la carte USB (K8055D.dll).



Vers la page suivante


Retour vers la page d'accueil