Bloc Fonction - Support
Download
Report
Transcript Bloc Fonction - Support
Bloc Fonction
Référence
Révision
Auteur
Date
+ Support
MTCP_CP1L Client
2.6
JP Viskovic
30/01/2014
http://support-omron.fr/
OMRON ELECTRONICS S.A.S.
14 Rue de Lisbonne
93561 Rosny-sous-Bois cedex
Bloc Fonction Modbus TCP Client dédié CP1L
fonction
Connexion
Fonction de
lecture/écriture
Modbus TCP client pour API CP1L Ethernet
Bloc Fonction MTCP_CP1L_Client
Client Modbus TCP pour CP1L
Fichier
API
MTCP_CP1L_Client.zip
- CP1L-EL, CP1L-EM (Ethernet intégré)
Restriction
d’utilisation
Le FB utilise le socket n° 1 ainsi que le port TCP 502
Conditions
d’utilisation
Le bloc fonction Modbus TCP Client propose certaines fonctionnalités de
lecture/écriture conformément aux spécifications définis par l'organisation
Modbus.
Les blocs fonction MTCP_CP1L_Client sont proposés 'tel que' et peuvent servir
de base de développement. Les utilisateurs doivent, au préalable, tester leur
adéquation avec l'application finale.
Omron France ne pourra en aucun cas être tenu pour responsable en cas de
dysfonctionnement de l'application finale.
Le bloc fonction MTCP_CP1L_Connect établit une connexion avec le serveur
Modbus TCP distant dès que l’entrée Connect est activée.
La sortie ENO signale que la connexion est établit et permet de conditionner
l’exécution des FB de lecture/écriture via leur entrée EN.
Lorsque l’entrée Connect est passée à OFF, le FB déconnecte le socket du
serveur.
Le FB MTCP_CP1L_Connect gère les déconnexion/reconnexion intempestive.
Si cette déconnexion est supérieure à 2mn, le FB force la fermeture du socket.
la sortie LinkOFF signale une déconnexion du média Ethernet.
Principe
Le temps de traitement de la réponse est de 30ms minimum.
Liste des fonctions Modbus de lecture/écriture implémentées :
Code
0x01
0x03
0x05
0x06
0x0F
0x10
Fonction Modbus
Read coils
Read Holding Registers
Write Single Coil
Write Single Register
Write Multiple Coils
Write Multiple Registers
Bloc fonction
MTCP_CP1L_Fn01
MTCP_CP1L_Fn03
MTCP_CP1L_Fn05
MTCP_CP1L_Fn06
MTCP_CP1L_Fn0F
MTCP_CP1L_Fn10
Mémoire utilisée
par les FB
Type
send
receive
adresse
D32500-D32506
D32510–D32642
Descriptions
Zone de consignation de la requête
Zone de réception de la réponse
Drapeaux et commandes relatifs au CP1L socket n° 1
Type
adresse
Descriptions
Drapeaux/commande A567 & A571
Plus de détails :
Socket Service de W421
Parametres
D 32400 - D32417
JPV
30/01/2014
Page 2/7
Bloc Fonction MTCP_CP1L_Client
Client Modbus TCP pour CP1L
1- Variable d’E/S du bloc MTCP_CP1L_Connect
Variables d’entrée
Nom
EN
IP_Address1
IP_Address2
IP_Address3
IP_Address4
Connect
type
Bool
valeurs
OFF, ON
UINT
00 - FF
Bool
OFF, ON
Demande de connexion au serveur
Variables de sortie
Nom
type
ENO
Bool
Error_Modbus
Bool
Error_FINS
Bool
Error_Code
UINT
valeurs
OFF, ON
OFF, ON
OFF, ON
0 - FFFF
Description
ON : Connecté au serveur
Drapeau d’erreur Modbus
Draoeau d’erreur FINS
Code Erreur renvoyé par la fonction socket switch le
serveur Modbus TCP (voir tableau plus bas).
ON : en attente de synchronisation du serveur
ON : Déconnexion physique du média Ethernet
Compteur de déconnexion
Waiting_Server
LinkOFF
Cpt_LinkOff
Description
Activation du FB
Adresse IP du serveur (octet 1,2,3,4)
Bool
Bool
UINT
OFF-ON
OFF-ON
0 - FFFF
2- Variables d’entrées des FB MTCP_CP1L_Fn01, Fn03, Fn05, Fn06, Fn0F et Fn10
JPV
MTCP_CP1L_Fn01
EN
SlaveID
Timeout
Coil_Address
Coil_Qty
Cmd_Read
type
Bool
UINT
UINT
UINT
UINT
Bool
range
OFF, ON
00 à FF
0 - FFFF
0 - FFFF
0 - 00FF
OFF, ON
Description
Activation (utiliser sortie ENO du FB Connect)
0= valeur par défaut &255
Délai de réponse x 100ms (0: défaut=100ms)
Adresse de la 1ère bobine
Nombre de bobines
Commande de lecture
MTCP_CP1L_Fn03
EN
SlaveID
Timeout
Register_Address
Register_Qty
RespData_DM
Cmd_Read
type
Bool
UINT
UINT
UINT
UINT
UINT
Bool
range
OFF, ON
00 à FF
0 - FFFF
0 - FFFF
0 - 00FF
0 - FFFF
OFF, ON
Description
Activation (utiliser sortie ENO du FB Connect)
0= valeur par défaut &255
Délai de réponse x 100ms (0: défaut=100ms)
Adresse du 1er registre
Nombre de registres
Destination of data (DM area)
Commande de lecture
MTCP_CP1L_Fn05
EN
SlaveID
Timeout
Coil_Address
Value
Cmd_Write
type
Bool
UINT
UINT
UINT
Bool
Bool
range
OFF, ON
00 à FF
0 - FFFF
0 - FFFF
OFF, ON
OFF, ON
Description
Activation (utiliser sortie ENO du FB Connect)
0= valeur par défaut &255
Délai de réponse x 100ms (0: défaut=100ms)
Adresse de la bobine
Valeur ON/OFF à écrire
Commande d’écriture
30/01/2014
Page 3/7
Bloc Fonction MTCP_CP1L_Client
Client Modbus TCP pour CP1L
MTCP_CP1L_Fn06
EN
SlaveID
Timeout
Register_Address
Value
Cmd_Write
type
Bool
UINT
UINT
UINT
UINT
Bool
range
OFF, ON
00 à FF
0 - FFFF
0 - FFFF
0 - FFFF
OFF, ON
Description
Activation (utiliser sortie ENO du FB Connect)
0= valeur par défaut &255
Délai de réponse x 100ms (0: défaut=100ms)
Adresse du registre
Valeur à écrire
Commande d’écriture
MTCP_CP1L_Fn0F
EN
SlaveID
Timeout
Coil_Address
Coil_Qty
DataAddress_DM
Cmd_Write
type
Bool
UINT
UINT
UINT
UINT
UINT
Bool
range
OFF, ON
00 à FF
0 - FFFF
0 - FFFF
0 - 00FF
0 - FFFF
OFF, ON
Description
Activation (utiliser sortie ENO du FB Connect)
0= valeur par défaut &255
Délai de réponse x 100ms (0: défaut=100ms)
Adresse de la 1ère bobine
Nombre de bobines
Source des données (zone DM)
Commande de lecture
MTCP_CP1L_Fn10
EN
SlaveID
Timeout
Register_Address
Register_Qty
DataAdress_DM
Cmd_Write
type
Bool
UINT
UINT
UINT
UINT
UINT
Bool
range
OFF, ON
00 à FF
0 - FFFF
0 - FFFF
0 - 00FF
0 - FFFF
OFF, ON
Description
Activation (utiliser sortie ENO du FB Connect)
0= valeur par défaut &255
Délai de réponse x 100ms (0: défaut=100ms)
Adresse du 1er registre
Nombre de registres
Source des données (zone DM)
Commande d’écriture
3- Variables de sortie des FB MTCP_CP1L_Fn01, Fn03, Fn05, Fn06, Fn0F et Fn10
ENO
Busy
Nom
type
Bool
Bool
Valeurs
OFF, ON
OFF,ON
Rcv_Counter
Error_Modbus
Error_FINS
Error_Code
UINT
Bool
Bool
UINT
0 - FFFF
OFF, ON
OFF, ON
0 - FFFF
Description
ON : lecture/écriture bien exécutée
ON durant l’exécution du bloc. Utilisez ce
drapeau pour éviter l’exécution de plusieurs BF
simultanément
Compteur de réception de réponse correcte
Drapeau d’erreur Modbus
Drapeau d’erreur FINS
Code d’erreur renvoyé par la fonction socket
switch ou par le serveur Modbus TCP.
(voir tableau ci-dessous).
Code erreur renvoyé par le serveur Modbus TCP (Modbus exception response)
Code
0001
0002
0003
JPV
Description
ILLEGAL FUNCTION
ILLEGAL DATA ADDRESS
ILLEGAL DATA VALUE
30/01/2014
Page 4/7
Bloc Fonction MTCP_CP1L_Client
Client Modbus TCP pour CP1L
Codes erreur renvoyés par les fonctions TCP Socket switch OpenActive, Send and Receive
2607
0302
1100
1101
1103
110C
220F
2210
2211
2606
2607
0020
003E
0045
004B
004E
0051
0053
0080
0081
Socket already in use
CPU Unit error: cannot execute
Number bytes to send/receive not in allowed range
The area designation of the Send/Receive Data address is not in allowable range
The bit number in the Send/Receive data address is not in allowable range
Request switch turned ON during other processing
Specified socket is already processing a SEND request
The specified socket is not connected
Unit is busy: cannot execute
Specified socket is already open as UDP socket
Specified socket service parameter area is already being used by another socket
Connection with remote socket broken during Send (EPIPE)
Internal buffer cannot be obtained due to high reception trafic
Error in communication with remote node
Error communication with remote node (again)
Remote IP address parameter error (ET unreach)
Remote IP address parameter error (Host unreach)
Error communication with remote HOST
Receive request Timed out
Specified socket was closed during receive processing
http://support-omron.fr/pdf/ErrCode_CP1L_Socket.pdf
Temps d’exécution
Le temps de traitement minimum de la réponse renvoyée par le client est d’environ 40ms avec un temps
de cycle API de 1ms. Avec un temps de cycle automate de 5ms (7 blocs fonction MTCP_CP1L activés), le
temps de traitement est d’environ 50ms.
Ci-dessous un aperçu de l’enchainement des commandes et drapeaux utilisés par le socket.
JPV
30/01/2014
Page 5/7
Bloc Fonction MTCP_CP1L_Client
Client Modbus TCP pour CP1L
Rappel sur le format du protocole Modbus
Lecture de plusieurs bobines (CIO)
Exemple: lecture de 19 bits (CIO 0001.04 à 0002.06)
Requête
Réponse
Donnée
0x01
0x00
0x14
0x00
0x13
Code Fonction
Adresss (poids fort)
Adresse (poids faible)
Quantité (poids fort)
Quantité (poids faible)
0CH
1CH
2CH
3CH
15
15
31 1
47
63
14
14
30 0
46
62
13
13
29 1
45
61
12
12
28 1
44
60
11
11
27 1
43
59
Donnée
0x01
0x03
0xCD
0x6B
0x05
Code Fonction
Nbre d’octets
Bobines 27-20
Bobines 35-28
Bobines 38-36
10
10
26 1
42
58
9
9
25 0
41
57
8
8
24 0
40
56
7
7
23 1
39
55
6
6
22 1
38 1
54
5
5
21 0
37 0
53
4
4
20 1
36 1
52
3
3
19
35 0
51
2
2
18
34 1
50
1
1
17
33 1
49
0
0
16
32 0
48
1
0
1
1
17
33 1
49
0
0
16
32 0
48
Les caractères en italique montre la valeur ON/OFF(1/0) du bit.
Lecture de plusieurs registres (DM)
Exemple: lecture de 3 registres (DM 1000 à DM 1002)
Requête
Réponse
Donnée
0x03
0x03
0xE8
0x00
0x03
Code Fonction
Adresse (poids fort)
Adresse (poids faible)
Quantité (poids fort)
Quantité (poids faible)
DM
1000
1001
1002
15
14
13
12
11
Donnée
0x03
0x06
0xAB
0x12
0x56
0x78
0x97
0x13
Code Fonction
Nbre d’octets
Registre DM1000 (poids fort)
Registre DM1000 (poids faible)
Registre DM1001 (poids fort)
Registre DM1001 (poids faible)
Registre DM1002 (poids fort)
Registre DM1002 (poids faible)
10
9
A
5
9
8
7
6
5
B
6
7
4
3
2
1
7
1
2
8
3
Ecriture d’une bobine (CIO)
Exemple: écriture d’un bit (CIO 0002.02 ON)
Requête
Code Fonction
Adresss (poids fort)
Adresse (poids faible)
Valeur (poids fort)
Valeur (poids faible)
0CH
1CH
2CH
3CH
15
15
31 1
47
63
14
14
30 0
46
62
13
13
29 1
45
61
Donnée
0x05
0x00
0x22
0xFF
0x00
12
12
28 1
44
60
11
11
27 1
43
59
Réponse
Identique à la requête
Code Fonction
Adresss (poids fort)
Adresse (poids faible)
Valeur (poids fort)
Valeur (poids faible)
10
10
26 1
42
58
9
9
25 0
41
57
8
8
24 0
40
56
7
7
23 1
39
55
Donnée
0x05
0x00
0x22
0xFF
0x00
6
6
22 1
38 1
54
5
5
21 0
37 0
53
4
4
20 1
36 1
52
3
3
19
35 0
51
2
2
18
34 1
50
Les caractères en italique montre la valeur ON/OFF(1/0) du bit.
JPV
30/01/2014
Page 6/7
Bloc Fonction MTCP_CP1L_Client
Client Modbus TCP pour CP1L
Ecriture d’un registre (DM)
Exemple: écriture de &h3AC5 dans le DM 2000.
Requête
Donnée
0x06
0x07
0xD0
0x3A
0xC5
Code Fonction
Adresse (poids fort)
Adresse (poids faible)
Valeur (poids fort)
Valeur (poids faible)
DM
2000
2001
2002
15
14
13
12
11
Réponse
Identique à la requête
Code Fonction
Adresse (poids fort)
Adresse (poids faible)
Valeur (poids fort)
Valeur (poids faible)
10
3
9
8
7
6
A
5
Donnée
0x06
0x07
0xD0
0x3A
0xC5
4
3
2
C
1
0
1
0
5
Ecriture de plusieurs registres
Exemple: écriture de 2 mots DM1000-1001.
Requête
Réponse
Code Fonction
Adresse (poids fort)
Adresse (poids faible)
Nbre de registres (poids fort)
Nbre de registres (poids faible)
Nombre d’octet de données
1ère valeur (poids fort)
1ère valeur (poids faible)
2ème valeur (poids fort)
2ème valeur (poids faible)
DM
1000
1001
15
14
13
12
Donnée
0x10
0x03
0xE8
0x00
0x02
0x04
0x3A
0xC5
0x97
0x13
11
10
3
9
Donnée
0x10
0x03
0xE8
0x00
0x02
Code Fonction
Adresse (poids fort)
Adresse (poids faible)
Nbre de registres (poids fort)
Nbre de registres (poids faible)
9
8
7
6
A
7
5
4
3
2
C
1
5
3
Ecriture de plusieurs bobines
Exemple : écriture de 10 bits ( xxxx xx11 1100 1101) to CIO 0001.04.(X = ignoré.)
Requête
Réponse
Code Fonction
Adresse (poids fort)
Adresse (poids faible)
Nbre de bobines (poids fort)
Nbre de bobines (poids faible)
Nombre d’octet de données
1ère valeur (poids fort)
2ème valeur (poids fort)
JPV
Donnée
0x0F
0x00
0x13
0x00
0x0A
0x02
0x3A
0x01
Donnée
0x0F
0x00
0x13
0x00
0x0A
Code Fonction
Adresse (poids fort)
Adresse (poids faible)
Nbre de bobines (poids fort)
Nbre de bobines (poids faible)
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0CH
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
1CH
31 0
30 0
29 0
28 1
27 0
26 0
25 1
24 1
23 1
22 0
21 1
20 0
19 0
18 0
17 0
16 0
30/01/2014
Page 7/7