moyo13
Messages postés6Date d'inscriptionlundi 25 août 2008StatutMembreDernière intervention27 août 2008
-
25 août 2008 à 17:54
Clad74
Messages postés44Date d'inscriptionmercredi 18 avril 2012StatutMembreDernière intervention 5 avril 2013
-
29 août 2008 à 12:40
Bonjour,
J'utilise actuellement un serveur OPC pour superviser un automate siemens. Plus précisément, il s'agit d'un automate sur PC, j'utilise une carte CP5613 associée au logiciel WinAC.
Le serveur OPC a été codé en VB.
Côté superviseur, il me faut mettre à jour de nombreux items (180 mots) à chaque cycle, ce qui nous prend environ 1 secondes.
Côté automate, la lecture de tous les items prend également environ 1 seconde.
Je trouve ça énorme !
Savez-vous s'il est possible de diminuer ce temps de lecture/écriture des items ? et si oui comment ?
Clad74
Messages postés44Date d'inscriptionmercredi 18 avril 2012StatutMembreDernière intervention 5 avril 2013 26 août 2008 à 09:20
Bonjour,
j'ai le même problème, mon temps de dialogue(ethernet) entre le PC et l'automate est long.
J'utilise un server OPC de KEP, et j'ai remarqué qu'on pouvait en manuel écrire ou lire en sychrone ou Asynchrone mais où faut t'il dire qu'il faut utiliser le Asynchrone.
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 26 août 2008 à 09:33
Re,
> [auteur/CLAD74/899754.aspx clad74]: Je crois qu'il y a deux methodes pour la l'écriture.
Pour un OPCGroup il existe les méthodes SyncWrite et AsyncWrite (existe aussi SyncRead et AsyncRead)
>[auteur/MOYO13/1462804.aspx moyo13] : Meme remarque pour la lecture , si je me souviens bien tu peux lire une plage de mot (ils seront retourner dans un tableau non?) pour peu qu'ils soient contigus.
@+: Ju£i€n Pensez: Réponse acceptée
Vous n’avez pas trouvé la réponse que vous recherchez ?
Clad74
Messages postés44Date d'inscriptionmercredi 18 avril 2012StatutMembreDernière intervention 5 avril 2013 26 août 2008 à 10:07
merci jrivet, oui il y a bien ces méthodes mais comment les utiliser? et quelle est la différence entre syncwrite et asyncwrite? de ce que j'ai compris le syncwrite attend quelque chose ne n'attend pas le asyncwrite?
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 26 août 2008 à 10:19
Re:
>[auteur/CLAD74/899754.aspx clad74] : si je me souviens bien (rien est moins sur)
Un Variable de type OPCGroup
possède un événement AsyncWriteComplete(ByVal TransactionID As Long, ByVal NumItems As Long, ClientHandles() As Long, Errors() As Long
Il faut simplement déclarer ta variable OPCGroup comme étant une variable avec des événements. Private WithEvents GroupeOPC As OPCGroup
Lorsque tu fais un SyncWrite, ton programme VB6 reste bloqué sur cette ligne jusqu'à la fin des écriture. Alors que qu'avec le AsyncWrite, il envoie au serveur tout ce qu'il faut pour les ecritures, et le serveur se "démerde" , ton VB6 continue alors son exécution. puis lorsque le serveur à terminer toutes les écriture il t'envoie un évènement AsyncWriteComplete et ensuite c'est à toi de le traiter comme tu veux.
Donc avant d'utiliser Sync ou Async, il faut que tu saches si tu à besoin que ton programme continue son exécution ou bien si tu à besoin qu'il attende que les Items soient écrits.
Clad74
Messages postés44Date d'inscriptionmercredi 18 avril 2012StatutMembreDernière intervention 5 avril 2013 26 août 2008 à 10:49
a oki, mais dans l'écriture variable.write, le faite qu'il y ai un temps de dialogue d'environ une seconde avec l'automate provient'il de sunc ou async?
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 26 août 2008 à 10:59
Re,
Et bien je ne sais pas cela peut venir de plein de chose (PC, Réseau, Automate) Es tu allé voir sur le site du constructeur pour voir si il y a déjà des problème connus?
Clad74
Messages postés44Date d'inscriptionmercredi 18 avril 2012StatutMembreDernière intervention 5 avril 2013 26 août 2008 à 11:05
ui j'ai appelé les constructeur, mais ils n'en savent pas plus. Il m'ont dit que ça pouvait venir du réseau mais je n'est pas vu beaucoup de différence en enlevant les autres appareils branché.
moyo13
Messages postés6Date d'inscriptionlundi 25 août 2008StatutMembreDernière intervention27 août 2008 27 août 2008 à 14:03
Pour info, je viens de modifier le code VB pour envoyer tous les mots dans un seul tableau au lieu de les envoyer 1 par 1. Ca a permis de diminuer le temps d'écriture des 180 mots de 600 ms à 15ms !
Du point de vue de la lecture, l'automate recopie les 180 mots dans une nouvelle DB (base de données) avec un bloc SFC20. Cette opération prend plus de 1 seconde. La solution est sans doute de travailler directement à partir de la DB source dans laquelle le serveur OPC écrit. Ca évite de faire une copier-coller inutile... C'est ce qu'on va tester!
moyo13
Messages postés6Date d'inscriptionlundi 25 août 2008StatutMembreDernière intervention27 août 2008 27 août 2008 à 14:57
Sur certains bites d'état que le superviseur et l'automate s'échangent, la lecture se fait sur évènement.
Dans le cas des 180 mots, ils doivent être complètement écrits avant d'être utilisés par le programme automate. Pour cela, on utilise un bit "flag" que le superviseur passe à 1 lorsqu'il a terminé l'écriture et que l'automate repasse à 0 lorsqu'il a terminé le copier-coller.