SymbolicXMLDA est un service Web permettant de mettre en œuvre un accès aux données de type Symbolic en fonction de l'espace de noms FactoryCast. Les services proposés sont :
-
lecture,
-
écriture,
-
navigation.
Limitation de l'accès de type Symbolic
L'accès de type Symbolic dépend de l'accès Modbus de bas niveau pour les communications réelles, de sorte que seuls les symboles associés aux données accessibles par l'intermédiaire des requêtes natives Modbus (lecture/écriture de registres et lecture/écriture de bits de sortie) sont pris en charge. Par conséquent, seuls les types de données suivants sont pris en charge :
-
bit,
-
16 bits,
-
mot double 32 bits.
Tous les types de données non localisées ne sont pas pris en charge.
L'objectif de cette requête est de lire un ou plusieurs symboles. Les symboles transférés comme arguments de requête sont traduits à l'aide de l'espace de noms pour obtenir l'adresse de la valeur à lire. Lorsque toutes les adresses sont connues, une requête Modbus est générée par adresses contiguës (si les registres 10, 11 et 13 sont demandés, deux requêtes sont générées : une pour les registres 10 et 11, et une pour le registre 13) et par type de variable souhaitée (bits de sortie, registres). Une fois les valeurs récupérées, la réponse SOAP est générée en utilisant le nom de la variable, son type et ses valeurs.
Entrée : liste de chaînes ItemName
Sortie : tableau de l'élément ReadResult
L'exemple suivant présente une requête SOAP et sa réponse :
Requête
POST /ws/SymbolicXmlDa.asmx HTTP/1 Host: 139.160.65.83:8080 Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: "http://www.schneider-electric.com/ws/SymbolicXmlDa/1.0/Read" <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <Read xmlns="http://www.schneider-electric.com/ws/SymbolicXmlDa/1.0/"> <ItemList> <Items> <ItemName>string</ItemName> </Items> <Items> <ItemName>string</ItemName> </Items> </ItemList> </Read> </soap:Body> </soap:Envelope>
Réponse
HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: length <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <WriteResponse xmlns="http://www.schneider-electric.com/ws/SymbolicXmlDa/"> </WriteResponse> </soap:Body> </soap:Envelope>
L'objectif de cette requête est d'écrire un ou plusieurs symboles. Les symboles, ainsi que leur type et leur valeur, sont transférés comme arguments de requête. Les noms des variables sont traduits à l'aide de l'espace de noms pour obtenir l'adresse de la valeur à lire. Lorsque toutes les adresses sont connues, une requête Modbus est générée par adresses contiguës (si les registres 10, 11 et 13 sont demandés, deux requêtes sont générées : une pour les registres 10 et 11, et une pour le registre 13) et par type de variable souhaitée (bits de sortie, registres).
Une fois toutes les valeurs écrites, la réponse SOAP est générée.
Entrée : liste de (chaîne ItemName, Value, Type)
Sortie : aucune
L'exemple suivant présente une requête SOAP et sa réponse :
Requête
POST /Recipe/ws/SymbolicXmlDa.asmx HTTP/1.1 Host: 139.160.65.83:8080 Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: "http://www.schneider-electric.com/ws/SymbolicXmlDa/1.0/Write" <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <Write xmlns="http://www.schneider-electric.com/ws/SymbolicXmlDa/1.0/"> <ItemList> <Items> <ItemName>string</ItemName> <Value>string</Value> <Type>string</Type> </Items> <Items> <ItemName>string</ItemName> <Value>string</Value> <Type>string</Type> </Items> </ItemList> </Write> </soap:Body> </soap:Envelope>
Réponse
HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: length <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ReadResponse xmlns="http://www.schneider-electric.com/ws/SymbolicXmlDa/"> <ReadResult> <Items> <Name>string</Name> <SymbolType>string</SymbolType> <IntValue>int</IntValue> </Items> <Items> <Name>string</Name> <SymbolType>string</SymbolType> <IntValue>int</IntValue> </Items> </ReadResult> </ReadResponse> </soap:Body> </soap:Envelope>
L'objectif de cette requête est de lire une liste de variables Symbolic présentes dans l'espace de noms du module FactoryCast.
Cette fonctionnalité n'a pas d'interface avec la couche Modbus, puisque sa seule action consiste à renvoyer les éléments de l'espace de noms. La réponse comprend les symboles et leur type.
Entrée : liste de (chaîne ItemName, Type)
Sortie : liste de Descriptions BrowseResult
L'exemple suivant présente une requête SOAP et sa réponse :
Requête
POST /Recipe/ws/SymbolicXmlDa.asmx HTTP/1.1 Host: 139.160.65.83:8080 Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: "http://www.schneider-electric.com/ws/SymbolicXmlDa/1.0/Browse" <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <Browse xmlns="http://www.schneider-electric.com/ws/SymbolicXmlDa/1.0/" /> </soap:Body> </soap:Envelope>
Réponse
HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: length <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <BrowseResponse xmlns="http://www.schneider-electric.com/ws/SymbolicXmlDa/1.0/"> <Elements> <BrowseElement> <ItemName>string</ItemName> <Type>string</Type> </BrowseElement> <BrowseElement> <ItemName>string</ItemName> <Type>string</Type> </BrowseElement> </Elements> </BrowseResponse> </soap:Body> </soap:Envelope>