[Résolu] Récupérer l'états des différentes liaison

Forum traitant des automates industriels de marque Siemens.
Avatar du membre
Priigame
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 121
Enregistré le : 08 nov. 2017, 09:28

[Résolu] Récupérer l'états des différentes liaison

Message 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 :x
Modifié en dernier par Priigame le 17 avr. 2018, 11:14, modifié 2 fois.
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7806
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: Récupérer l'états des différentes liaison

Message 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.
Automaticien privé (de tout)
itasoft@free.fr
Avatar du membre
Priigame
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 121
Enregistré le : 08 nov. 2017, 09:28

Re: Récupérer l'états des différentes liaison

Message 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.
Avatar du membre
djé
Dieu du process
Dieu du process
Messages : 864
Enregistré le : 20 oct. 2015, 09:55
Localisation : Bretagne, Pays de la Loire, Nantes
Contact :

Re: Récupérer l'états des différentes liaison

Message 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.
Le monde se divise en 10 catégories:les personnes qui comprennent le binaire,et les autres.

Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
Avatar du membre
Priigame
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 121
Enregistré le : 08 nov. 2017, 09:28

Re: Récupérer l'états des différentes liaison

Message 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 :x
Avatar du membre
djé
Dieu du process
Dieu du process
Messages : 864
Enregistré le : 20 oct. 2015, 09:55
Localisation : Bretagne, Pays de la Loire, Nantes
Contact :

Re: Récupérer l'états des différentes liaison

Message 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.
Le monde se divise en 10 catégories:les personnes qui comprennent le binaire,et les autres.

Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
Avatar du membre
Priigame
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 121
Enregistré le : 08 nov. 2017, 09:28

Re: Récupérer l'états des différentes liaison

Message 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 :/
Modifié en dernier par Priigame le 09 nov. 2017, 09:37, modifié 1 fois.
Avatar du membre
Priigame
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 121
Enregistré le : 08 nov. 2017, 09:28

Re: Récupérer l'états des différentes liaison

Message 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 :/
Avatar du membre
Priigame
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 121
Enregistré le : 08 nov. 2017, 09:28

Re: Récupérer l'états des différentes liaison

Message 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
Avatar du membre
djé
Dieu du process
Dieu du process
Messages : 864
Enregistré le : 20 oct. 2015, 09:55
Localisation : Bretagne, Pays de la Loire, Nantes
Contact :

Re: Récupérer l'états des différentes liaison

Message 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.
Le monde se divise en 10 catégories:les personnes qui comprennent le binaire,et les autres.

Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
Répondre