Page 1 sur 3
[Résolu] Récupérer l'états des différentes liaison
Posté : 08 nov. 2017, 09:34
par Priigame
Bonjour,
Je suis actuellement sur un projet de supervision pour valider mon année de Licence pro, cependant je me retrouve confronté à un petit problème et deux choix s'offre à moi afin de récupérer l'état de chaque liaison entre mon écran et les automates.
avant tout, j'utilise la version V14 de TIA pour ce projet.
Soit je vais crée un Bit d'état dans chaque automate que je récupère sur l'écran.
Soit je trouve une solution depuis l'écran afin de récupérer l'état directement.
Je vous cache pas que la seconde option m'intéresse d'avantage car le nombre d'automate est assez conséquent.
J'ai chercher déjà quelque piste du cotés alarmes système et pointeur mais je ne trouve pas de solution pour avoir un état booléen de chaque liaison
PS: Détail de l'utilisation:
Représentation graphique du réseau et animation sur les stations "coupé" lors d'un problème de liaison.
Merci d'avance de vos retours je galère un peu

Re: Récupérer l'états des différentes liaison
Posté : 08 nov. 2017, 12:00
par itasoft
slts,
difficile sans même savoir de quelle supervision il s'agit ni de quel modèle d'automate.
La première chose à faire quand un diffuse un message c'est de présenter le matériel.
Re: Récupérer l'états des différentes liaison
Posté : 08 nov. 2017, 13:55
par Priigame
Autant pour moi , il s'agit d'une supervision sous base PC, avec une panoplie assez diverse d'automate.
Tout sera regroupé sur un OPC HDA.
J'ai du crée des liaison avec chaque automate et du coup je cherche à récupérer l'état de chacun.
Je regarde coté script actuellement mais sans succès, les fonctions que je trouve ne sont pas reconnu dans la syntaxe.
Merci de ta réponse en tout cas.
Re: Récupérer l'états des différentes liaison
Posté : 08 nov. 2017, 14:17
par djé
Priigame a écrit : ↑08 nov. 2017, 13:55
il s'agit d'une supervision sous base PC, avec une panoplie assez diverse d'automate.
Tout sera regroupé sur un OPC HDA.
Oui mais quel logiciel de supervision (il y en a moultes)
depuis le serveur OPC tu peux peut-être avoir des infos.
Si la supervision supporte des scripts de type VBS c'est pas bien compliqué de fair un ping sur une adresse IP pour s'avoir si le matériel est présent (je suppose que tu es sur un réseau Ethernet) mAis la aussi ca manque de précision.
Re: Récupérer l'états des différentes liaison
Posté : 08 nov. 2017, 14:46
par Priigame
Sous OPC Scout, la supervision de TIA supporte les script Visual Basic mais je n'arrive pas a trouver des fonctions reconnu par TIA.
Par exemple:
If My.Computer.Network.Ping("198.01.01.01") Then
MsgBox("Server pinged successfully.")
Else
MsgBox("Ping request timed out.")
End If
Il ne reconnais pas la fonction "My", j'ajoute une variable local My et il me dis "set as été assigné à un objet non global.
Des idées ? J'ai jamais vraiment fais de VB donc si quelqu'un as un script modèle je suis preneur

Re: Récupérer l'états des différentes liaison
Posté : 08 nov. 2017, 15:53
par djé
Je ne connais pas bien Wincc mais je crois qu'il supporte le vbs:
tu peux essayer ce script (VBS)
Code : Tout sélectionner
dim ipAd
ipAd = "192.168.2.250"
WScript.Echo "est-ce que " & ipAd & " est en ligne:" & Ping( ipAd )
Function Ping( myHostName )
' This function returns True if the specified host could be pinged.
' myHostName can be a computer name or IP address.
' The Win32_PingStatus class used in this function requires Windows XP or later.
' This function is based on the TestPing function in a sample script by Don Jones
' http://www.scriptinganswers.com/vault/computer%20management/default.asp#activedirectoryquickworkstationinventorytxt
' Standard housekeeping
Dim colPingResults, objPingResult, strQuery
' Define the WMI query
strQuery = "SELECT * FROM Win32_PingStatus WHERE Address = '" & myHostName & "'"
' Run the WMI query
Set colPingResults = GetObject("winmgmts://./root/cimv2").ExecQuery( strQuery )
' Translate the query results to either True or False
For Each objPingResult In colPingResults
If Not IsObject( objPingResult ) Then
Ping = False
ElseIf objPingResult.StatusCode = 0 Then
Ping = True
Else
Ping = False
End If
Next
Set colPingResults = Nothing
End Function
Vérifies si ca marche avec un adresse IP qui est présente sur le réseau et si oui à toi d'adapter.
Re: Récupérer l'états des différentes liaison
Posté : 08 nov. 2017, 15:55
par Priigame
Merci, je vais de suite essayer
Edit: Il n'aime pas les instructions "Set" par exemple, j'ai l'impression que c'est du VB très simplifié et réduit.
Merci quand même :/
Re: Récupérer l'états des différentes liaison
Posté : 09 nov. 2017, 08:53
par Priigame
En bidouillant un petit peu depuis hier j'ai quelque chose de pas mal pour ping, cependant je n'arrive pas à récupérer la réponse PINGFlag.
Je voulais faire une condition IF afin de set ou reset un bit local mais je ne sais pas quoi mettre en condition, c'est pourquoi je voulais récupérer le résultat PINGFlag dans un bloc note afin d'étudier le résultat émis.
Code : Tout sélectionner
Dim WshShell, PINGFlag, My, Activate, test, i
Set WshShell = CreateObject("WScript.Shell")
Set PINGFlag = WshShell.Run("ping 192.168.90.57")
End Sub
Si quelqu'un as une solution compatible TIA :/
Re: Récupérer l'états des différentes liaison
Posté : 09 nov. 2017, 09:35
par Priigame
Je suis pas du tout à l'aise en programmation mais je vais tenter de faire un petit algo, ça devrais ressembler à cela:
Début
WshShell, PINGFlag, Activate
Crée Objet Shell
Exécuter "Ping xxx.xxx.xxx.xxx"
Écrire dans PINGFlag
//Exécuter "notepad" ------- Juste pour les essaie
//Ecrire PINGFlag dans notepad (ou ailleurs tant que j'ai un aperçu de la réponse) --------- Juste pour les essaie
Si PINGFlag est bon alors
mettre bit interne à 1
si non
mettre bit interne à 0
Fin
Re: Récupérer l'états des différentes liaison
Posté : 09 nov. 2017, 09:51
par djé
Salut,
J'ai fait un petit test sur Wincc Flexible avec le script qui suit (type=Sub):
Depuis une page j'ai créé deux boutons distinct:
- le premier appelle le script avec en paramètre une adresse IP présente sur mon réseau;
- le second idem mais avec une adresse IP bidon:
Un carré simple sur la même page est animé (vert/rouge) sur la variable locale Variable_1 (écrite dans le script) vert=1 (présent)
Code : Tout sélectionner
' déclaration variables
Dim colPingResults, objPingResult, strQuery
' définition de la requete WMI
'ipAdr = paramètre transmis à la routine (SUB) (ex 192.168.2.250)
strQuery = "SELECT * FROM Win32_PingStatus WHERE Address = '" & ipAdr & "'"
' lancement de la requete WMI
Set colPingResults = GetObject("winmgmts://./root/cimv2").ExecQuery( strQuery )
' Analyse de la reponse requete WMI
For Each objPingResult In colPingResults
If Not IsObject( objPingResult ) Then
Variable_1 = False
ElseIf objPingResult.StatusCode = 0 Then
Variable_1 = True 'Variable_1 d'animation de type locale
Else
Variable_1 = False
End If
Next
Set colPingResults = Nothing
Ca fonctionne.