Macro sur écran KEP

Partie du forum pour tout ce qui concerne les interfaces homme machine ou IHM. Forum, conseil, astuce et entraide sur les interface homme machine ou IHM tels que les magelis, KEP, proface, XBT, .
Avatar de l’utilisateur
steph31
Forcené des structures
Forcené des structures
Messages : 177
Inscription : 20 oct. 2015, 19:17
Localisation : Toulouse

Re: Macro sur écran KEP

Message par steph31 »

itasoft a écrit : 16 mars 2022, 17:14 slts,
remarques:
for t=0 to 64 ça fait 65 alors que la table est déclarée de taille 64
Siii. J'ai fait une boulettes. :D

Code : Tout sélectionner

macro_command main()

// Declaration de variables
int retour					// Mot retour info communication
short MotdeVie				// Mot de vie pour la communication
int Table_Envoie[64]		// Table d'echange a envoyer
int Table_Reception[16]		// Table d'echange a recevoir
unsigned char response[32]

// ***********************
// * Programma principal *
// ***********************

// ECHANGE DES DONNÉES
GetData(MotdeVie, "CPU1284", 3x, 1 ,1)
SetData(MotdeVie, "Local HMI", LW, 3, 1)			// Retour info communication
// ÉMMISSION
GetData(Table_Envoie[0], "CPU1284", 3x, 1 ,64)	// Copie des 64 variables dans la macro
OUTPORT(Table_Envoie[0], "CP340", 64)			// Envoie sur le port comm

// RECEPTION
INPORT(response[0], "CP340", 16, retour)	// Reception sur le port comm
SetData(retour, "Local HMI", LW, 0, 1)			// Retour info communication
if retour > 0 then
Table_Reception[0] = response[1] + (response[0] << 8)
Table_Reception[1] = response[3] + (response[2] << 8)
Table_Reception[2] = response[5] + (response[4] << 8)
Table_Reception[3] = response[7] + (response[6] << 8)
Table_Reception[4] = response[9] + (response[8] << 8)
Table_Reception[5] = response[11] + (response[10] << 8)
Table_Reception[6] = response[13] + (response[12] << 8)
Table_Reception[7] = response[15] + (response[14] << 8)
Table_Reception[8] = response[17] + (response[16] << 8)
Table_Reception[9] = response[19] + (response[18] << 8)
Table_Reception[10] = response[21] + (response[20] << 8)
Table_Reception[11] = response[23] + (response[22] << 8)
Table_Reception[12] = response[25] + (response[24] << 8)
Table_Reception[13] = response[27] + (response[26] << 8)
Table_Reception[14] = response[29] + (response[28] << 8)
Table_Reception[15] = response[31] + (response[30] << 8) 
SetData(Table_Reception[0], "CPU1284", 4x, 1 ,16)// Copie des 16 variables dans l'IHM
end if 

// TRANSFERT POUR AFFICHAGE
SetData(Table_Reception[0], "Local HMI", LW, 1 ,1)	// Puissance Instantané
SetData(Table_Reception[1], "Local HMI", LW, 22 ,1)	// Années
SetData(Table_Reception[2], "Local HMI", LW, 21 ,1)	// Mois
SetData(Table_Reception[3], "Local HMI", LW, 20 ,1)	// Jours
SetData(Table_Reception[4], "Local HMI", LW, 19 ,1)	// Heures
SetData(Table_Reception[5], "Local HMI", LW, 18 ,1)	// Minutes
SetData(Table_Reception[6], "Local HMI", LW, 17 ,1)	// SECondes

SetData(Table_Reception[8], "Local HMI", LW, 2 ,1)	// PLC Etat
DELAY(250)
end macro_command
GetData(MotdeVie, "CPU1284", 3x, 1 ,1)
SetData(MotdeVie, "Local HMI", LW, 3, 1) // Retour info communication
J'ai bien mon mot de vie qui incremente sur l'IHM, mais je n'envoie toujours rien sur COM1 :?:
dpo
Créateur de langage
Créateur de langage
Messages : 715
Inscription : 27 nov. 2015, 20:03

Re: Macro sur écran KEP

Message par dpo »

as-tu demandé au support ? ils sont assez réactifs et ils ont plein d'exemples.
et....ils ne te demandent pas ton numéro client et/ou ou numéro carte bleue et/ou dossier ....
jeanluc69
Aguerri de l'automation
Aguerri de l'automation
Messages : 97
Inscription : 20 oct. 2015, 20:52
Localisation : LYON

Re: Macro sur écran KEP

Message par jeanluc69 »

En début de macro utilise la commande
PURGE (1) // purge buffers COM1
J'avais fait ça pour transmettre des données
Si je l'avais fait, ça devait avoir une utilité :lol:
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2076
Inscription : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: Macro sur écran KEP

Message par philou77 »

Salut !

ok j'ai compris ce que tu souhaitais faire ..

Si tu n'as pas de retour du CP340 :
1 - Vérifie que tu communique bien avec un hôte autre que ton CP340 (style hyper terminal en rs232C sur un pc)
La commande OUTPUT DOIT fonctionner côté IHM, rien ne l'en empêche

1 bis - Vérifie ton câblage de la communication.. pin différents selon les versions d'ihm !!

2 - Vérifie que tu as bien configuré le CP340 : https://www.google.com/url?esrc=s&q=&rc ... H0476qeqdB

3- Vérifie que tu reçois bien quelque chose dans la cpu du Step7
4 - Vérifie la programmation du Step 7 revoie bien quelque chose

Dans ton cas, c'est l'ihm qui est à l'initiative de la communication Ptp.. il faut que le step 7 surveille son port Com et lui réponde en cas de message arrivé. d'ou les blocs Receive / Send à programmer

La commande OUTPUT doit bloquer l'exécution de la macro (jusqu'à la fin de la commande ou time out)
La commande INPUT doit faire la même chose (jusqu'à réception ou time out)

+1 avec la commande Purge(1) (dans ton cas) en début de macro
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2076
Inscription : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: Macro sur écran KEP

Message par philou77 »

tiens en cherchant un peu, voici un truc trouvé pour ton CP340 (Modbus Master Slave Rtu sans dongle ni licence)

Cela résoudrais peut être ton problème en changeant le mode de réponse du step7 !
Mais cela n'enlève pas un minimum de programmation dans le step 7
Et côté ihm, tu fais comme dans l'exemple fourni dans la doc macro (qui fait des requêtes Modbus avec Output et lit les réponse avec Input)


https://support.industry.siemens.com/tf ... ageSize=10
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Avatar de l’utilisateur
steph31
Forcené des structures
Forcené des structures
Messages : 177
Inscription : 20 oct. 2015, 19:17
Localisation : Toulouse

Re: Macro sur écran KEP

Message par steph31 »

Salut

Coté du S7-300, je n'ai pas de problème, Le CP340 reçois rien. la led rx ne clignote pas. J'ai mis un testeur de lignes RS232, l'écran envoie rien.
Câblage OK.
Je vais essayer la commande Purge(1)

J'ai fait un autre essais: j'ai configuré mon CP340 en modbus master avec la fonction FC10 MBMA et tout ce qui vas bien (J'ai déjà utilisé cette fonction, elle fonctionne bien) et mon écran en modbus server, modbus slave.
Et la: :shock: j'ai soulevé un bug de l'écran. Je me retrouve avec 2 connection modbus configuré (une en RS485 master pour la CPU1284 sur COM3 et l'autre en RS232 Slave sur COM1 pour le CP340).
Et ca "cafouille" Je ne sait pas ce que envoie l’écran sur la CPU1284? elle reboote a chaque fois qu'elle reçois une trame modbus. ca le fait seulement quand il y a 2 ports configuré en modbus.

J'ai fait une version de mon IHM. Avec COM1 en modbus master, et COM3 en MPI. Dans mon projet EasyBuilder8000, j'ai crée un échange de données dans "Transfert de Données Temporel" .
Ca fonctionne, mais de temps en temps, je perd la communication pendants quelque secondes. La fenêtre jaune "Pas de réponse API" apparaît quelque secondes et disparaît.
C'est pour cela, que je pensait utilisé le CP340 qui et libre.
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2076
Inscription : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: Macro sur écran KEP

Message par philou77 »

Avec le lien envoyé, tu pourras avoir ton cp en modbus slave ! Don sur la même Com que l’autre cpu.

Sinon ton idée première devrait fonctionner, rien ne l’empêche !
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Avatar de l’utilisateur
steph31
Forcené des structures
Forcené des structures
Messages : 177
Inscription : 20 oct. 2015, 19:17
Localisation : Toulouse

Re: Macro sur écran KEP

Message par steph31 »

Bonjour
Merci pour le lien. Bon j’ai testé avec MBSL sur le CP340. Sur l’écan KEP, je ne peux pas mettre 2 unité modbus slave sur le même port comm. :evil:

1
Modbus master sur com1 => CPU1284 slave
Mosbus master sur com3 => CP340 slave
2
Modbus master sur com1 => CPU1284 slave
Mosbus slave sur com3 <= CP340 master avec MBMA
3
Modbus master sur com1 => CPU1284 slave
MPI sur com3 => CPU315 2DP

La solution 3 fonctionne pendant un certain temps (1 heure ou plus) et plante. Je dois rebooté l’IHM.

1 et 2 : J’ai ma CPU1284 sur com1, et mon CP340 sur com3. Ça ne marche pas. A croire que l’IHM ne supporte pas 2 drivers modbus sur 2 port différents. :?: :?: :?:
L’écran me fais rebooté ma CPU1284, et le CP340 ne reçois rien.
config.JPG
Que veux dire: nombre de mots par block? je lit 64 mots, il fait 4 lecture de 10 mots et 1 de 4 mots?
Et le délais d'envoie d'ACK, Reserve 1, 2 et 3 ?
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2076
Inscription : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: Macro sur écran KEP

Message par philou77 »

Salut !

Tu veux faire quoi au juste avec tes automates dans le kep, quelle est ton application ?

Tu ne déclares pas de driver donc tu dois travailler directement avec les adresses modbus.

Rien n'empêche d'avoir 2 esclaves sur Com1
Cocher case : N° de Station par défaut utilise la var(iable) Défaut N° Station (LW10000)

cette variable permet de dire avec quelle station tu communiques
Valeur 2 = CP1284
Valeur 3 = CP340
Facile pour ton script de positionner cette variable avant de faire la requête


Sinon tu déclares 2 Com Modbus
Com 1 -> Modbus RTU -> Pour ton CP1284
Com 3 -> Modbus RTU -> Pour ton CP340

et là tu peux utiliser les variables classiques de kep (Toujours en adresses MODBUS)


Regarde ici pour le modbus CP340 (sujet déjà traité)
viewtopic.php?f=4&t=932&start=10
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Répondre