Bonjour,
Je souhaite établir une communication modbus serie rs232 entre excel et un automate april2000.
Le but étant uniquement la lectures des mots internes de l'automate pour une sauvegarde qui
soit plus facilement exploitable avant le remplacement de l'api.
Pour cela j'utilise le contrôle NetComm (équivalent de MSComm).
Grâce à un analyseur de trame et au logiciel simjbus je constate que j'envoie bien la même trame
(calcul du crc correct) mais alors que simjbus obtient une réponse, je n'obtiens rien avec excel.
voici le paramétrage du contrôle :
Merci d'avance pour votre aide et pour vos idées.
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 With NetComm1 .CommPort = 1 .Handshaking = 0 ' 2 pour RTS .RThreshold = 1 .SThreshold = 1 .RTSEnable = True 'mieux pour le port COM: .Settings = "19200,e,8,1" .InputMode = comInputModeBinary End With et le programme : noESC = Right("0" + Worksheets("Data").Cells(8, 6), 2) AdrAPI = 0 NBMOTS = 5 noLIgne = 0 Do While NBMOTS > 0 ' Création du début de la requête Modbus (en Hexa): 01-03-adrAPI-NBMOTS A$ = noESC + "03" + Hexe(AdrAPI) + Hexe(NBMOTS) ' Calcul LRC mLRC = CRC(A$) ' Envoi requête UserForm1.NETComm1.Output = A$ + mLRC ' Acquisition réponse A$ = "" UserForm1.NETComm1.InBufferCount = 0 'vide le buffer pour eviter la desynchronisation de trame TIMEOUT = 0 Do DoEvents 'indispensable !!! A$ = A$ & UserForm1.NETComm1.InputData TIMEOUT = TIMEOUT + 1 Loop Until Len(A$) > 18 Or TIMEOUT > 10000
Partager