Bonjour à tous,

Mon projet consiste à envoyer des commandes via ethernet pour contrôler des relais.

La partie envoie ethernet est fait via Visual Basic sur un module XPort. La connexion et l'envoie se fait très bien.

Le problème se trouve sur la carte de transmission ethernet vers RS485. J'utilise un Cubloc280 et un SN75176b pour mettre en forme la commande.

Voici le programme du Cubloc
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
Const Device = CB280
 
Dim Donnees As Byte  								   ' D0->D7 present sur bascules
Dim Num_Voie As Integer									' Numero de la voie 1 a 32
Dim Adresse_Switch As Integer							' Adresse
 
Const Port_Donnees As Byte = 4 						' port 4 P32->P39 broche 44->51
 
Dim RRS485 As String*7									'reception donnee RS485 7 caracteres
Dim RETERNET As String*7								'reception donnee par port Ethernet
 
Dim i As Integer
 
Dim Recadr As Integer									'Adresse recu
Dim Recvoie As Integer									'Numero de voie recu
Dim Rectype As String*1									'Type 's' ou 'r'
 
Dim Vo As Integer
 
Dim Entree As Integer									'Nombre d'entree de la matrice
Dim Sortie As Integer									'Nombre de sortie de la matrice
 
Dim Commande As String									'Commande a envoyer vers les switchs
 
Dim Repeat  As Byte
 
Dim WRS485 As String*7
 
 
For i=1 To 47
Output i
Next
 
For i=1 To 8
Out i,1
Next
For i=10 To 12
Out i,1
Next
For i=14 To 39
Out i,1
Next
For i=45 To 47
Out i,1
Next
 
Out 13,1
 
'Debug "LOG12003 ED0: ",Dec Adresse_Switch,Cr
 
 
 
'******************* Ouverture des COM *************************
 
Opencom 1,9600, 3, 50, 20							   ' port1, 9600Bds, 1bit arret, sans parit buffer sortie 10
On Recv1 Gosub RECNET								' Interuption reception caractere port Ethernet
Set Until 1,7												' Attend la reception de 7 caracteres	
Wait 2000
 
Opencom 0,9600, 3, 50, 20							   ' port1, 9600Bds, 1bit arret, sans parit buffer sortie 10
On Recv0 Gosub RECRS485									' protocole RS485, chanel 0, port controle P9 broche 
'Set Rs485 0,13
Set Until 0,7
 
 
'************************************************************************
 
Do
 
 
 
Loop
 
'************************************************************************
 
RECNET:
 
RETERNET=Getstr(1,7)
 
'Debug RETERNET,Cr
'Debug "hello",Cr
 
Rectype = Mid(RETERNET,1,1)
Recadr = Val(Mid(RETERNET,2,2))
Recvoie = Val(Mid(RETERNET,6,2))
 
 
If Recvoie = 91 Then
	Entree = 6
	Sortie = 2
 
	Commande = "r" + Dp(Sortie,2,1) + "11" + Dp(Entree,2,1)
	Putstr 1, Commande
 
Elseif Recvoie = 90 Then
 
	Vo = Eeread(Recadr*2,2)
 
	Commande = "r"	+ Dp(Recadr,2,1) + "11" + Dp(Vo,2,1)
	Putstr 1,Commande
 
Elseif Recvoie = 97 Then
 
	Eewrite Recadr*2,0,2
 
	Commande = "s" + Dp(Recadr,2,1) + "1100"
	Putstr 0, Commande	
 
	Commande = "r" + Dp(Recadr,2,1) + "1100"
	Putstr 1, Commande 
 
Else
 
	Commande = "s" + Dp(Recadr,2,1) + "11" + Dp(Recvoie,2,1)
	'Putstr 0, Commande
	Debug RETERNET,Cr
	Debug "",Cr
	Out 13,0
 
End If
 
Return
 
 
 
RECRS485:
 
RRS485=  Getstr(0,7)
 
Rectype = Mid(RRS485,1,1)
Recadr = Val(Mid(RRS485,2,2))
Recvoie = Val(Mid(RRS485,6,2))
 
Num_Voie = Recvoie
Adresse_Switch = Recadr
 
Eewrite Recadr*2, Recvoie,2
 
	Commande = Rectype + Dp(Recadr,2,1) + "11" + Dp(Recvoie,2,1)
 
	Putstr 1, Commande
	Out 13,1
 
 
Return
Le problème se trouve au niveau de la ligne 115.
Je devrais normalement pouvoir utiliser la fonction Putstr pour envoyer ma commande et générer ensuite un état bas sur la broche 13 (Out 13,0) pour permettre la réception de la réponse du relais, or ce la ne marche pas.
En utilisant la fonction Debug en ligne 116 et 117 cela marche bien. Je ne trouve pas cela logique.

De plus, la fonction SETRS485 permettant normalement de gérer l'état haut ou bas sur le SN75176b, pour la transmission ou la réception, ne marche pas.

Si quelqu'un peut m'aider à résoudre ce problème pour éviter toutes erreur ou conflit par la suite ?!
N'hésitez pas à me demander plus de précision.

Merci d'avance