Skip to content
Snippets Groups Projects
Commit 02187287 authored by al.schwinn's avatar al.schwinn Committed by al.schwinn
Browse files

Bug 1441 - Restructurization of silecsdeploy - fixed xsd

parent 6a750113
No related branches found
No related tags found
No related merge requests found
...@@ -47,7 +47,7 @@ silecsHeader = """<?xml version="1.0" encoding="UTF-8"?> ...@@ -47,7 +47,7 @@ silecsHeader = """<?xml version="1.0" encoding="UTF-8"?>
def getSilecsHeader(silecsVersion): def getSilecsHeader(silecsVersion):
date = time.strftime("%x") date = time.strftime("%x")
owner = getpass.getuser() owner = getpass.getuser()
return silecsHeader%(silecsVersion,date,date,owner,owner) return silecsHeader % (silecsVersion, date, date, owner, owner)
#========================================================= #=========================================================
# DESIGN TEMPLATE # DESIGN TEMPLATE
...@@ -69,10 +69,10 @@ designTemplate = """<?xml version="1.0" encoding="UTF-8"?> ...@@ -69,10 +69,10 @@ designTemplate = """<?xml version="1.0" encoding="UTF-8"?>
</SILECS-Class> </SILECS-Class>
</SILECS-Design> </SILECS-Design>
""" """
def getDesignTemplate(designName,schemaPath,silecsVersion): def getDesignTemplate(designName, schemaPath, silecsVersion):
date = time.strftime("%x") date = time.strftime("%x")
owner = getpass.getuser() owner = getpass.getuser()
return designTemplate%(silecsVersion,date,date,schemaPath,owner,owner,designName) return designTemplate % (silecsVersion, date, date, schemaPath, owner, owner, designName)
#========================================================= #=========================================================
...@@ -87,11 +87,12 @@ deployTemplate = """<?xml version="1.0" encoding="UTF-8"?> ...@@ -87,11 +87,12 @@ deployTemplate = """<?xml version="1.0" encoding="UTF-8"?>
<Editor user-login="%s"/> <Editor user-login="%s"/>
</Information> </Information>
<Deploy-Unit name="%s" version="0.1.0"/> <Deploy-Unit name="%s" version="0.1.0"/>
<SilecsDesign silecs-design-name="" silecs-design-version=""/>
<Controller host-name=""> <Controller host-name="">
<Siemens-PLC system="TIA-PORTAL" model="SIMATIC_S7-300" protocol="DEVICE_MODE" base-DB-number="1"/> <Siemens-PLC system="TIA-PORTAL" model="SIMATIC_S7-300" protocol="DEVICE_MODE" base-DB-number="1">
<SilecsDesign silecs-design-version="" silecs-design-name=""> <Device silecs-device-label="dev0" silecs-design-ref="" fesa-device-name="" fesa-fec-name=""/>
<Device device-name="" /> </Siemens-PLC>
</SilecsDesign>
</Controller> </Controller>
</SILECS-Deploy> </SILECS-Deploy>
""" """
...@@ -99,4 +100,4 @@ deployTemplate = """<?xml version="1.0" encoding="UTF-8"?> ...@@ -99,4 +100,4 @@ deployTemplate = """<?xml version="1.0" encoding="UTF-8"?>
def getDeployTemplate(deployName, schemaPath, silecsVersion): def getDeployTemplate(deployName, schemaPath, silecsVersion):
date = time.strftime("%x") date = time.strftime("%x")
owner = getpass.getuser() owner = getpass.getuser()
return deployTemplate%(silecsVersion,date,date,schemaPath,owner,owner,deployName) return deployTemplate % (silecsVersion, date, date, schemaPath, owner, owner, deployName)
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 2016 CERN and GSI <!-- Copyright 2016 CERN and GSI This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/. -->
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/.-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:include schemaLocation="shared.xsd" /> <xs:include schemaLocation="shared.xsd" />
<xs:element name="SILECS-Deploy"> <xs:element name="SILECS-Deploy">
<xs:annotation> <xs:annotation>
<xs:documentation>A SILECS configuration contains the class designs, the memory mapping and the hardware distribution for a given set of PLCs.</xs:documentation> <xs:documentation>A SILECS configuration contains the class designs,
the memory mapping and the hardware distribution for a given set of
PLCs.
</xs:documentation>
<xs:appinfo> <xs:appinfo>
<doc> <doc>
The SILECS configuration defines the data structure and the communication parameters required for the interconnection of the PLCs and the Front-End clients. It consists of 3 parts: The SILECS configuration defines the data structure and the
&lt;ol&gt; communication parameters required for the interconnection of the
&lt;li&gt; Design: to define the structure of the exchanged data PLCs and the Front-End clients. It consists of 3 parts:
&lt;li&gt; Mapping: to define the PLC memory mapping and the protocol parameters &lt;ol&gt;
&lt;li&gt; Generation: to define the hardware on which we will deployed the different Mapping &lt;li&gt; Design: to define the structure of the exchanged data
&lt;/ol&gt; &lt;li&gt; Mapping: to define the PLC memory mapping and the
Generally under the responsability of a unique expert entity, an SILECS configuration is done for a set of classes and PLCs in the scope of a particular project or set of equipment. protocol
parameters
&lt;li&gt; Generation: to define the hardware on
which we will deployed the
different Mapping
&lt;/ol&gt;
Generally
under the responsability of a unique expert entity, an SILECS
configuration is done for a set of classes and PLCs in the scope of
a particular project or set of equipment.
</doc> </doc>
</xs:appinfo> </xs:appinfo>
</xs:annotation> </xs:annotation>
...@@ -38,12 +38,12 @@ along with this program. If not, see http://www.gnu.org/licenses/.--> ...@@ -38,12 +38,12 @@ along with this program. If not, see http://www.gnu.org/licenses/.-->
<xs:sequence> <xs:sequence>
<xs:element name="Owner"> <xs:element name="Owner">
<xs:complexType> <xs:complexType>
<xs:attribute name="user-login" type="xs:string" use="required"/> <xs:attribute name="user-login" type="xs:string" use="required" />
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element name="Editor" maxOccurs="unbounded"> <xs:element name="Editor" maxOccurs="unbounded">
<xs:complexType> <xs:complexType>
<xs:attribute name="user-login" type="xs:string" use="required"/> <xs:attribute name="user-login" type="xs:string" use="required" />
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
</xs:sequence> </xs:sequence>
...@@ -51,19 +51,21 @@ along with this program. If not, see http://www.gnu.org/licenses/.--> ...@@ -51,19 +51,21 @@ along with this program. If not, see http://www.gnu.org/licenses/.-->
</xs:element> </xs:element>
<xs:element name="Deploy-Unit"> <xs:element name="Deploy-Unit">
<xs:complexType> <xs:complexType>
<xs:attribute name="name" type="DeployNameType" use="required"/> <xs:attribute name="name" type="DeployNameType" use="required" />
<xs:attribute name="version" type="VersionType" use="required"/> <xs:attribute name="version" type="VersionType" use="required" />
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element name="SilecsDesign" type="SilecsDesignType" maxOccurs="unbounded" minOccurs="1">
<xs:unique name="Design-name-uniquer">
<xs:selector xpath="." />
<xs:field xpath="@silecs-design-name" />
</xs:unique>
</xs:element>
<xs:element name="Controller" type="ControllerType" maxOccurs="unbounded" minOccurs="1"> <xs:element name="Controller" type="ControllerType" maxOccurs="unbounded" minOccurs="1">
<xs:unique name="Device-name-unique-per-controller"> <xs:unique name="silecs-device-label-unique-per-controller">
<xs:selector xpath="SilecsDesign/Device"/> <xs:selector xpath="*/Device" />
<xs:field xpath="@device-name"/> <xs:field xpath="@silecs-device-label" />
</xs:unique> </xs:unique>
<xs:unique name="Class-name-unique-per-controller">
<xs:selector xpath="SilecsDesign"/>
<xs:field xpath="@silecs-design-name"/>
</xs:unique>
</xs:element> </xs:element>
</xs:sequence> </xs:sequence>
<xs:attribute name="silecs-version" type="xs:string" use="required"> <xs:attribute name="silecs-version" type="xs:string" use="required">
...@@ -88,431 +90,558 @@ along with this program. If not, see http://www.gnu.org/licenses/.--> ...@@ -88,431 +90,558 @@ along with this program. If not, see http://www.gnu.org/licenses/.-->
</xs:annotation> </xs:annotation>
</xs:attribute> </xs:attribute>
</xs:complexType> </xs:complexType>
<xs:unique name="Host-name-unique-per-silecsdeploy"> <xs:unique name="Host-name-unique-per-silecsdeploy">
<xs:selector xpath="Controller"/> <xs:selector xpath="Controller" />
<xs:field xpath="@host-name"/> <xs:field xpath="@host-name" />
</xs:unique> </xs:unique>
<xs:unique name="fesa-device-name-unique">
<xs:selector xpath="Controller/*/Device" />
<xs:field xpath="@fesa-device-name" />
</xs:unique>
</xs:element> </xs:element>
<xs:complexType name="ControllerType"> <xs:complexType name="ControllerType">
<xs:sequence> <xs:sequence>
<xs:choice> <xs:choice>
<xs:element name="Siemens-PLC" type="SiemensPLCType"> <xs:element name="Siemens-PLC" type="SiemensPLCType">
<xs:annotation> <xs:annotation>
<xs:documentation>A Siemens-Mapping defines a particular Mapping of classes intended to SIMATIC PLCs</xs:documentation> <xs:documentation>A Siemens-Mapping defines a particular Mapping
</xs:annotation> of classes intended to SIMATIC PLCs
</xs:element> </xs:documentation>
<xs:element name="Schneider-PLC" type="SchneiderPLCType"> </xs:annotation>
<xs:annotation> </xs:element>
<xs:documentation>A Schneider-Mapping defines a particular Mapping of classes intended to PL7/UNITY PLCs</xs:documentation> <xs:element name="Schneider-PLC" type="SchneiderPLCType">
</xs:annotation> <xs:annotation>
</xs:element> <xs:documentation>A Schneider-Mapping defines a particular Mapping
<xs:element name="Beckhoff-PLC" type="BeckhoffPLCType"> of classes intended to PL7/UNITY PLCs
<xs:annotation> </xs:documentation>
<xs:documentation>A Beckhoff-Mapping defines a particular Mapping of classes intended to TwinCat PLCs</xs:documentation> </xs:annotation>
</xs:annotation> </xs:element>
</xs:element> <xs:element name="Beckhoff-PLC" type="BeckhoffPLCType">
<!-- No support for this type in CERN codegen so far<xs:element name="Beckhoff-RIO" type="BeckhoffRIOType"> <xs:annotation>
<xs:annotation> <xs:documentation>A Beckhoff-Mapping defines a particular Mapping
<xs:documentation>A Beckhoff-RIO deployment defines the physical Mapping of TwinCAT Remote IO modules.</xs:documentation> of classes intended to TwinCat PLCs
</xs:annotation> </xs:documentation>
</xs:element>--> </xs:annotation>
<xs:element name="Rabbit-uC" type="RabbituCType"> </xs:element>
<xs:annotation> <!-- No support for this type in CERN codegen so far<xs:element name="Beckhoff-RIO" type="BeckhoffRIOType"> <xs:annotation> <xs:documentation>A Beckhoff-RIO deployment defines the physical Mapping of TwinCAT Remote IO modules.</xs:documentation> </xs:annotation> </xs:element> -->
<xs:documentation>A Rabbit-Mapping defines a particular Mapping of classes intended for Rabbit microcontrollers</xs:documentation> <xs:element name="Rabbit-uC" type="RabbituCType">
</xs:annotation> <xs:annotation>
</xs:element> <xs:documentation>A Rabbit-Mapping defines a particular Mapping of
<xs:element name="Virtual-Controller" type="VirtualControllerType"> classes intended for Rabbit microcontrollers
<xs:annotation> </xs:documentation>
<xs:documentation>Defines a particular C++ code mapping of classes intended for Software controller</xs:documentation> </xs:annotation>
</xs:annotation> </xs:element>
</xs:element> <xs:element name="Virtual-Controller" type="VirtualControllerType">
<xs:element name="NI-Controller" type="NIControllerType"> <xs:annotation>
<xs:annotation> <xs:documentation>Defines a particular C++ code mapping of classes
<xs:documentation>A NI-Mapping defines a particular Mapping of classes intended to National Instrument Controllers</xs:documentation> intended for Software controller
</xs:annotation> </xs:documentation>
</xs:element> </xs:annotation>
</xs:choice> </xs:element>
<xs:element name="SilecsDesign" type="SilecsDesignType" maxOccurs="unbounded"/> <xs:element name="NI-Controller" type="NIControllerType">
<xs:annotation>
<xs:documentation>A NI-Mapping defines a particular Mapping of
classes intended to National Instrument Controllers
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
</xs:sequence> </xs:sequence>
<xs:attribute name="host-name" type="HostNameType" use="required"/> <xs:attribute name="host-name" type="HostNameType" use="required" />
</xs:complexType> </xs:complexType>
<xs:complexType name="SilecsDesignType"> <xs:complexType name="SilecsDesignType">
<xs:sequence> <xs:attribute name="silecs-design-name" type="SilecsClassNameType" use="required" />
<xs:element name="Device" type="DeviceType" maxOccurs="unbounded"/> <xs:attribute name="silecs-design-version" type="VersionType" use="required" />
</xs:sequence> </xs:complexType>
<xs:attribute name="silecs-design-name" type="SilecsClassNameType" use="required"/>
<xs:attribute name="silecs-design-version" type="VersionType" use="required"/> <xs:complexType name="DeviceType">
</xs:complexType> <xs:sequence>
<xs:annotation>
<xs:complexType name="DeviceType"> <xs:documentation>The device is an instance of the related
<xs:sequence> silecs-design.
<xs:annotation> </xs:documentation>
<xs:documentation>The device is an instance of the related silecs-design.</xs:documentation> <xs:appinfo>
<xs:appinfo> <doc>
<doc> The device is an instance of the related SILECS design class.
The device is an instance of the related SILECS design class. The label is dedicated to the PLC process and the SILECS client
The label is dedicated to the PLC process and the SILECS client software to identify the device in the scope of that class in that particular Mapping. software to identify the device in the scope of that class in that
It does not identify a unique device instance of the control system at the supervision level. particular Mapping.
The device sequence will occupy contiguous segment of PLC memory respecting their exact ordering. It does not identify a unique device instance
The SILECS tool assists the expert in ordering devices as required. of the control system
</doc> at the supervision level.
</xs:appinfo> The device sequence
</xs:annotation> will occupy contiguous segment of PLC memory
</xs:sequence> respecting their exact
<xs:attribute name="device-name" type="DeviceNameType" use="required"/> ordering.
</xs:complexType> The SILECS tool assists the expert in ordering devices as
required.
</doc>
</xs:appinfo>
</xs:annotation>
</xs:sequence>
<xs:attribute name="silecs-device-label" type="DeviceNameType" use="required" />
<xs:attribute name="silecs-design-ref" type="SilecsClassNameType" use="required" />
<xs:attribute name="fesa-device-name" type="DeviceNameType" use="optional" />
<xs:attribute name="fesa-fec-name" type="HostNameType" use="optional" />
</xs:complexType>
<xs:simpleType name="HostNameType"> <xs:simpleType name="HostNameType">
<xs:restriction base="xs:string"> <xs:restriction base="xs:string">
<xs:minLength value="1"/> <xs:minLength value="1" />
<xs:pattern value="[_A-Za-z0-9]*"/> <xs:pattern value="[_A-Za-z0-9]*" />
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>
<xs:simpleType name="DeployNameType"> <xs:simpleType name="DeployNameType">
<xs:restriction base="xs:string"> <xs:restriction base="xs:string">
<xs:minLength value="1"/> <xs:minLength value="1" />
<xs:maxLength value="20"/> <xs:maxLength value="20" />
<xs:pattern value="[_A-Za-z]+[_A-Za-z0-9]*"/> <xs:pattern value="[_A-Za-z]+[_A-Za-z0-9]*" />
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>
<xs:simpleType name="DeviceNameType"> <xs:simpleType name="DeviceNameType">
<xs:restriction base="xs:string"> <xs:restriction base="xs:string">
<xs:minLength value="1"/> <xs:minLength value="1" />
<xs:maxLength value="30"/> <xs:maxLength value="30" />
<!-- In FESA the deviceName is restricted to max. 30 characters --> <!-- In FESA the deviceName is restricted to max. 30 characters -->
<xs:pattern value="[_A-Za-z][_A-Za-z0-9]*"/> <xs:pattern value="[_A-Za-z][_A-Za-z0-9]*" />
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>
<xs:simpleType name="SiemensSystemType"> <xs:simpleType name="SiemensSystemType">
<xs:restriction base="xs:string"> <xs:restriction base="xs:string">
<xs:enumeration value="STEP-7"/> <xs:enumeration value="STEP-7" />
<xs:enumeration value="TIA-PORTAL"/> <xs:enumeration value="TIA-PORTAL" />
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>
<xs:simpleType name="SchneiderSystemType"> <xs:simpleType name="SchneiderSystemType">
<xs:restriction base="xs:string"> <xs:restriction base="xs:string">
<xs:enumeration value="UNITY Pro"/> <xs:enumeration value="UNITY Pro" />
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>
<xs:simpleType name="BeckhoffSystemType"> <xs:simpleType name="BeckhoffSystemType">
<xs:restriction base="xs:string"> <xs:restriction base="xs:string">
<xs:enumeration value="TWINCat"/> <xs:enumeration value="TWINCat" />
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>
<xs:simpleType name="RabbitSystemType"> <xs:simpleType name="RabbitSystemType">
<xs:restriction base="xs:string"> <xs:restriction base="xs:string">
<xs:enumeration value="Standard-C"/> <xs:enumeration value="Standard-C" />
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>
<xs:simpleType name="NISystemType"> <xs:simpleType name="NISystemType">
<xs:restriction base="xs:string"> <xs:restriction base="xs:string">
<xs:enumeration value="Labview"/> <xs:enumeration value="Labview" />
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>
<xs:simpleType name="BothProtocolType"> <xs:simpleType name="BothProtocolType">
<xs:restriction base="xs:string"> <xs:restriction base="xs:string">
<xs:enumeration value="DEVICE_MODE"/> <xs:enumeration value="DEVICE_MODE" />
<xs:enumeration value="BLOCK_MODE"/> <xs:enumeration value="BLOCK_MODE" />
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>
<xs:simpleType name="DeviceProtocolType"> <xs:simpleType name="DeviceProtocolType">
<xs:restriction base="xs:string"> <xs:restriction base="xs:string">
<xs:enumeration value="DEVICE_MODE"/> <xs:enumeration value="DEVICE_MODE" />
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>
<xs:simpleType name="BlockProtocolType"> <xs:simpleType name="BlockProtocolType">
<xs:restriction base="xs:string"> <xs:restriction base="xs:string">
<xs:enumeration value="BLOCK_MODE"/> <xs:enumeration value="BLOCK_MODE" />
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>
<xs:simpleType name="PCSystemType"> <xs:simpleType name="PCSystemType">
<xs:restriction base="xs:string"> <xs:restriction base="xs:string">
<xs:enumeration value="SNAP7 linux32"/> <xs:enumeration value="SNAP7 linux32" />
<xs:enumeration value="SNAP7 linux64"/> <xs:enumeration value="SNAP7 linux64" />
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>
<xs:complexType name="PLCBaseType">
<xs:sequence>
<xs:element name="Device" type="DeviceType" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="SiemensPLCType"> <xs:complexType name="SiemensPLCType">
<xs:attribute name="system" type="SiemensSystemType" use="required"> <xs:complexContent>
<xs:annotation> <xs:extension base="PLCBaseType">
<xs:documentation>System infrastructure used to develop and/or configure the controller software.</xs:documentation> <xs:attribute name="system" type="SiemensSystemType" use="required">
<xs:appinfo> <xs:annotation>
<doc> <xs:documentation>System infrastructure used to develop and/or
System infrastructure used to develop and/or configure the controller software. configure the controller software.
</doc> </xs:documentation>
</xs:appinfo> <xs:appinfo>
</xs:annotation> <doc>
</xs:attribute> System infrastructure used to develop and/or configure the
<xs:attribute name="model" use="required"> controller
<xs:simpleType> software.
<xs:restriction base="xs:string"> </doc>
<xs:enumeration value="SIMATIC_S7-300"/> </xs:appinfo>
<xs:enumeration value="SIMATIC_S7-400"/> </xs:annotation>
<xs:enumeration value="SIMATIC_S7-1200"/> </xs:attribute>
<xs:enumeration value="SIMATIC_S7-1500"/> <xs:attribute name="model" use="required">
<xs:enumeration value="SIMATIC_ET-200S"/> <xs:simpleType>
</xs:restriction> <xs:restriction base="xs:string">
</xs:simpleType> <xs:enumeration value="SIMATIC_S7-300" />
</xs:attribute> <xs:enumeration value="SIMATIC_S7-400" />
<xs:attribute name="protocol" type="BothProtocolType" use="required"> <xs:enumeration value="SIMATIC_S7-1200" />
<xs:annotation> <xs:enumeration value="SIMATIC_S7-1500" />
<xs:documentation>Data access mode is defined at PLC level for all the classes</xs:documentation> <xs:enumeration value="SIMATIC_ET-200S" />
<xs:appinfo> </xs:restriction>
<doc> </xs:simpleType>
DEVICE_MODE: One S7-DB per class/device ([class-name]_[device-label|id]), &lt;br&gt;containing the corresponding ordered list of Blocks </xs:attribute>
&lt;br&gt;BLOCK_MODE: One S7-DB per class/block ([class-name]_[block-name]), &lt;br&gt;containing array of corresponding Block, one element per device <xs:attribute name="protocol" type="BothProtocolType" use="required">
</doc> <xs:annotation>
</xs:appinfo> <xs:documentation>Data access mode is defined at PLC level for all
</xs:annotation> the classes
</xs:attribute> </xs:documentation>
<xs:attribute name="base-DB-number" type="xs:unsignedInt" use="required"> <xs:appinfo>
<xs:annotation> <doc>
<xs:documentation>Number of the diagnostic DB that is the first one of the global configuration (corresponds to the common SilecsHeader data-block).</xs:documentation> DEVICE_MODE: One S7-DB per class/device
<xs:appinfo> ([class-name]_[device-label|id]),
<doc> &lt;br&gt;containing the
Number of the diagnostic DB that is the first one of the global configuration ( &gt;=1) corresponding ordered list of Blocks
</doc> &lt;br&gt;BLOCK_MODE: One
</xs:appinfo> S7-DB per class/block
</xs:annotation> ([class-name]_[block-name]),
</xs:attribute> &lt;br&gt;containing array of
corresponding Block, one element
per device
</doc>
</xs:appinfo>
</xs:annotation>
</xs:attribute>
<xs:attribute name="base-DB-number" type="xs:unsignedInt" use="required">
<xs:annotation>
<xs:documentation>Number of the diagnostic DB that is the first
one of the global configuration (corresponds to the common
SilecsHeader data-block).
</xs:documentation>
<xs:appinfo>
<doc>
Number of the diagnostic DB that is the first one of the
global
configuration ( &gt;=1)
</doc>
</xs:appinfo>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType> </xs:complexType>
<xs:complexType name="SchneiderPLCType"> <xs:complexType name="SchneiderPLCType">
<xs:attribute name="system" type="SchneiderSystemType" use="required"> <xs:complexContent>
<xs:annotation> <xs:extension base="PLCBaseType">
<xs:documentation>System infrastructure used to develop and/or configure the controller software.</xs:documentation> <xs:attribute name="system" type="SchneiderSystemType" use="required">
<xs:appinfo> <xs:annotation>
<doc> <xs:documentation>System infrastructure used to develop and/or
System infrastructure used to develop and/or configure the controller software. configure the controller software.
</doc> </xs:documentation>
</xs:appinfo> <xs:appinfo>
</xs:annotation> <doc>
</xs:attribute> System infrastructure used to develop and/or configure the
<xs:attribute name="model" use="required"> controller
<xs:simpleType> software.
<xs:restriction base="xs:string"> </doc>
<xs:enumeration value="Premium"/> </xs:appinfo>
<xs:enumeration value="Quantum"/> </xs:annotation>
<xs:enumeration value="M340"/> </xs:attribute>
</xs:restriction> <xs:attribute name="model" use="required">
</xs:simpleType> <xs:simpleType>
</xs:attribute> <xs:restriction base="xs:string">
<xs:attribute name="protocol" type="BlockProtocolType" use="required"> <xs:enumeration value="Premium" />
<xs:annotation> <xs:enumeration value="Quantum" />
<xs:documentation>Data access mode is defined at PLC level for all the classes</xs:documentation> <xs:enumeration value="M340" />
<xs:appinfo> </xs:restriction>
<doc> </xs:simpleType>
BLOCK_MODE: One data-segment per class/block ([class-name]_[block-name]), &lt;br&gt;containing array of corresponding Block, one element per device </xs:attribute>
</doc> <xs:attribute name="protocol" type="BlockProtocolType" use="required">
</xs:appinfo> <xs:annotation>
</xs:annotation> <xs:documentation>Data access mode is defined at PLC level for all
</xs:attribute> the classes
<xs:attribute name="base-address" type="xs:unsignedInt" use="required"> </xs:documentation>
<xs:annotation> <xs:appinfo>
<xs:documentation>Start address of the SILECS configuration (corresponds to the common SilecsHeader block address). Attention: 16bit address value is expected independently from the HW model (16 or 32 bit).</xs:documentation> <doc>
<xs:appinfo> BLOCK_MODE: One data-segment per class/block
<doc> ([class-name]_[block-name]),
Start address of the SILECS configuration (corresponds to the common SilecsHeader block address). &lt;br&gt;containing array of
&lt;br&gt;Attention: 16bit address value is expected independently from the HW model (16 or 32 bit) corresponding Block, one element per
</doc> device
</xs:appinfo> </doc>
</xs:annotation> </xs:appinfo>
</xs:attribute> </xs:annotation>
</xs:complexType> </xs:attribute>
<xs:attribute name="base-address" type="xs:unsignedInt" use="required">
<xs:annotation>
<xs:documentation>Start address of the SILECS configuration
(corresponds to the common SilecsHeader block address). Attention:
16bit address value is expected independently from the HW model (16
or 32 bit).
</xs:documentation>
<xs:appinfo>
<doc>
Start address of the SILECS configuration (corresponds to the
common
SilecsHeader block address).
&lt;br&gt;Attention: 16bit
address value is expected independently from the HW model
(16 or 32
bit)
</doc>
</xs:appinfo>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="BeckhoffPLCType"> <xs:complexType name="BeckhoffPLCType">
<xs:attribute name="system" type="BeckhoffSystemType" use="required"> <xs:complexContent>
<xs:annotation> <xs:extension base="PLCBaseType">
<xs:documentation>System infrastructure used to develop and/or configure the controller software.</xs:documentation> <xs:attribute name="system" type="BeckhoffSystemType" use="required">
<xs:appinfo> <xs:annotation>
<doc> <xs:documentation>System infrastructure used to develop and/or
System infrastructure used to develop and/or configure the Controller software. configure the controller software.
</doc> </xs:documentation>
</xs:appinfo> <xs:appinfo>
</xs:annotation> <doc>
</xs:attribute> System infrastructure used to develop and/or configure the
<xs:attribute name="model" use="required"> Controller
<xs:simpleType> software.
<xs:restriction base="xs:string"> </doc>
<xs:enumeration value="BC9020"/> </xs:appinfo>
<xs:enumeration value="CX9020"/> </xs:annotation>
</xs:restriction> </xs:attribute>
</xs:simpleType> <xs:attribute name="model" use="required">
</xs:attribute> <xs:simpleType>
<xs:attribute name="protocol" type="BlockProtocolType" use="required"> <xs:restriction base="xs:string">
<xs:annotation> <xs:enumeration value="BC9020" />
<xs:documentation>Data access mode is defined at PLC level for all the classes</xs:documentation> <xs:enumeration value="CX9020" />
<xs:appinfo> </xs:restriction>
<doc> </xs:simpleType>
BLOCK_MODE: One data-segment per class/block ([class-name]_[block-name]), &lt;br&gt;containing array of corresponding Block, one element per device </xs:attribute>
</doc> <xs:attribute name="protocol" type="BlockProtocolType" use="required">
</xs:appinfo> <xs:annotation>
</xs:annotation> <xs:documentation>Data access mode is defined at PLC level for all
</xs:attribute> the classes
<xs:attribute name="base-address" type="xs:unsignedInt" use="required"> </xs:documentation>
<xs:annotation> <xs:appinfo>
<xs:documentation>Start address of the SILECS configuration (corresponds to the common SilecsHeader block address). Attention: 16bit address value is expected independently from the HW model (16 or 32 bit).</xs:documentation> <doc>
<xs:appinfo> BLOCK_MODE: One data-segment per class/block
<doc> ([class-name]_[block-name]),
Start address of the SILECS configuration (corresponds to the common SilecsHeader block address). &lt;br&gt;containing array of
&lt;br&gt;Attention: 16bit address value is expected independently from the HW model (16 or 32 bit) corresponding Block, one element per
</doc> device
</xs:appinfo> </doc>
</xs:annotation> </xs:appinfo>
</xs:attribute> </xs:annotation>
</xs:complexType> </xs:attribute>
<xs:attribute name="base-address" type="xs:unsignedInt" use="required">
<xs:annotation>
<xs:documentation>Start address of the SILECS configuration
(corresponds to the common SilecsHeader block address). Attention:
16bit address value is expected independently from the HW model (16
or 32 bit).
</xs:documentation>
<xs:appinfo>
<doc>
Start address of the SILECS configuration (corresponds to the
common
SilecsHeader block address).
&lt;br&gt;Attention: 16bit
address value is expected independently from the HW model
(16 or 32
bit)
</doc>
</xs:appinfo>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- No support for this type in CERN codegen so far <xs:complexType name="BeckhoffRIOType"> <!-- No support for this type in CERN codegen so far <xs:complexType name="BeckhoffRIOType"> <xs:attribute name="system" type="BeckhoffSystemType" use="required"> <xs:annotation> <xs:documentation>System infrastructure used to develop and/or configure the controller software.</xs:documentation> <xs:appinfo> <doc> System infrastructure used to develop and/or configure the Controller software. </doc> </xs:appinfo> </xs:annotation> </xs:attribute> <xs:attribute name="model" use="required"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="BK9000"/> <xs:enumeration value="BK9050"/> <xs:enumeration value="BK9100"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="io-base-address" type="xs:unsignedInt" use="required"> <xs:annotation> <xs:documentation>Start address of the Remote IO modules (can be 0 if not required). Attention: 16bit address value is expected independently from the HW model (16 or 32 bit).</xs:documentation> <xs:appinfo> <doc> Start
<xs:attribute name="system" type="BeckhoffSystemType" use="required"> address of the Remote IO modules (can be 0 if not required). &lt;br&gt;Attention: 16bit address value is expected independently from the HW model (16 or 32 bit). </doc> </xs:appinfo> </xs:annotation> </xs:attribute> </xs:complexType> -->
<xs:annotation>
<xs:documentation>System infrastructure used to develop and/or configure the controller software.</xs:documentation>
<xs:appinfo>
<doc>
System infrastructure used to develop and/or configure the Controller software.
</doc>
</xs:appinfo>
</xs:annotation>
</xs:attribute>
<xs:attribute name="model" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="BK9000"/>
<xs:enumeration value="BK9050"/>
<xs:enumeration value="BK9100"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="io-base-address" type="xs:unsignedInt" use="required">
<xs:annotation>
<xs:documentation>Start address of the Remote IO modules (can be 0 if not required). Attention: 16bit address value is expected independently from the HW model (16 or 32 bit).</xs:documentation>
<xs:appinfo>
<doc>
Start address of the Remote IO modules (can be 0 if not required).
&lt;br&gt;Attention: 16bit address value is expected independently from the HW model (16 or 32 bit).
</doc>
</xs:appinfo>
</xs:annotation>
</xs:attribute>
</xs:complexType>-->
<xs:complexType name="RabbituCType">
<xs:attribute name="system" type="RabbitSystemType" use="required">
<xs:annotation>
<xs:documentation>System infrastructure used to develop and/or configure the controller software.</xs:documentation>
<xs:appinfo>
<doc>
System infrastructure used to develop and/or configure the Controller software.
</doc>
</xs:appinfo>
</xs:annotation>
</xs:attribute>
<xs:attribute name="model" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Rabbit_RCM_4010"/>
<xs:enumeration value="Rabbit_RCM_2000"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="protocol" type="BothProtocolType" use="required">
<xs:annotation>
<xs:documentation>Data access mode is defined at PLC level for all the classes</xs:documentation>
<xs:appinfo>
<doc>
DEVICE_MODE: One C struct field per class/device ([class-name]_[device-label|id]), &lt;br&gt;containing the corresponding ordered list of Blocks
&lt;br&gt;BLOCK_MODE: One C struct field per class/block ([class-name]_[block-name]), &lt;br&gt;containing array of corresponding Block, one element per device
</doc>
</xs:appinfo>
</xs:annotation>
</xs:attribute>
<xs:attribute name="base-address" type="xs:unsignedInt" use="required">
<xs:annotation>
<xs:documentation>Start address of the entire SILECS configuration interpreted as 16bit address.</xs:documentation>
<xs:appinfo>
<doc>
Start address of the entire SILECS configuration interpreted as 16bit address.
</doc>
</xs:appinfo>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="VirtualControllerType"> <xs:complexType name="RabbituCType">
<xs:attribute name="system" type="PCSystemType" use="required"> <xs:complexContent>
<xs:annotation> <xs:extension base="PLCBaseType">
<xs:documentation>System infrastructure used to develop and/or configure the controller software.</xs:documentation> <xs:attribute name="system" type="RabbitSystemType" use="required">
<xs:appinfo> <xs:annotation>
<doc> <xs:documentation>System infrastructure used to develop and/or
System infrastructure used to develop and/or configure the Controller software. configure the controller software.
</doc> </xs:documentation>
</xs:appinfo> <xs:appinfo>
</xs:annotation> <doc>
</xs:attribute> System infrastructure used to develop and/or configure the
<xs:attribute name="model" use="required"> Controller
<xs:simpleType> software.
<xs:restriction base="xs:string"> </doc>
<xs:enumeration value="SIMATIC_S7-VIRTUAL"/> </xs:appinfo>
</xs:restriction> </xs:annotation>
</xs:simpleType> </xs:attribute>
</xs:attribute> <xs:attribute name="model" use="required">
<xs:attribute name="protocol" type="BothProtocolType" use="required"> <xs:simpleType>
<xs:annotation> <xs:restriction base="xs:string">
<xs:documentation>Data access mode is defined at PLC level for all the classes</xs:documentation> <xs:enumeration value="Rabbit_RCM_4010" />
<xs:appinfo> <xs:enumeration value="Rabbit_RCM_2000" />
<doc> </xs:restriction>
DEVICE_MODE: One C struct field per class/device ([class-name]_[device-label|id]), &lt;br&gt;containing the corresponding ordered list of Blocks </xs:simpleType>
&lt;br&gt;BLOCK_MODE: One C struct field per class/block ([class-name]_[block-name]), &lt;br&gt;containing array of corresponding Block, one element per device </xs:attribute>
</doc> <xs:attribute name="protocol" type="BothProtocolType" use="required">
</xs:appinfo> <xs:annotation>
</xs:annotation> <xs:documentation>Data access mode is defined at PLC level for all
</xs:attribute> the classes
<xs:attribute name="base-DB-number" type="xs:unsignedInt" use="required"> </xs:documentation>
<xs:annotation> <xs:appinfo>
<xs:documentation>Number of the diagnostic DB that is the first one of the global configuration (corresponds to the common SilecsHeader data-block).</xs:documentation> <doc>
<xs:appinfo> DEVICE_MODE: One C struct field per class/device
<doc> ([class-name]_[device-label|id]), &lt;br&gt;containing the
Number of the diagnostic DB that is the first one of the global configuration ( &gt;=1) corresponding ordered list of Blocks
</doc> &lt;br&gt;BLOCK_MODE: One C
</xs:appinfo> struct field per class/block ([class-name]_[block-name]),
</xs:annotation> &lt;br&gt;containing array of corresponding Block, one element per
</xs:attribute> device
</xs:complexType> </doc>
</xs:appinfo>
<xs:complexType name="NIControllerType"> </xs:annotation>
<xs:attribute name="model" use="required"> </xs:attribute>
<xs:simpleType> <xs:attribute name="base-address" type="xs:unsignedInt" use="required">
<xs:restriction base="xs:string"> <xs:annotation>
<xs:enumeration value="Compact_RIO"/> <xs:documentation>Start address of the entire SILECS configuration
<xs:enumeration value="PXI_RT"/> interpreted as 16bit address.
<xs:enumeration value="PXI_Windows"/> </xs:documentation>
<xs:enumeration value="PC_Windows"/> <xs:appinfo>
<xs:enumeration value="Other_Support_CNV"/> <doc>
</xs:restriction> Start address of the entire SILECS configuration interpreted
</xs:simpleType> as 16bit
</xs:attribute> address.
<xs:attribute name="system" type="NISystemType" use="required"> </doc>
<xs:annotation> </xs:appinfo>
<xs:documentation>System infrastructure used to develop and/or configure the controller software.</xs:documentation> </xs:annotation>
<xs:appinfo> </xs:attribute>
<doc> </xs:extension>
System infrastructure used to develop and/or configure the Controller software. </xs:complexContent>
</doc> </xs:complexType>
</xs:appinfo>
</xs:annotation> <xs:complexType name="VirtualControllerType">
</xs:attribute> <xs:complexContent>
<xs:attribute name="protocol" type="DeviceProtocolType" use="required"> <xs:extension base="PLCBaseType">
<xs:annotation> <xs:attribute name="system" type="PCSystemType" use="required">
<xs:documentation>Data access mode is defined at PLC level for all the classes</xs:documentation> <xs:annotation>
<xs:appinfo> <xs:documentation>System infrastructure used to develop and/or
<doc> configure the controller software.
DEVICE_MODE: One shared variable per class/device (//class-name//controllerName//device-label), &lt;br&gt;containing the corresponding ordered list of Blocks. </xs:documentation>
</doc> <xs:appinfo>
</xs:appinfo> <doc>
</xs:annotation> System infrastructure used to develop and/or configure the
</xs:attribute> Controller
</xs:complexType> software.
</doc>
</xs:appinfo>
</xs:annotation>
</xs:attribute>
<xs:attribute name="model" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="SIMATIC_S7-VIRTUAL" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="protocol" type="BothProtocolType" use="required">
<xs:annotation>
<xs:documentation>Data access mode is defined at PLC level for all
the classes
</xs:documentation>
<xs:appinfo>
<doc>
DEVICE_MODE: One C struct field per class/device
([class-name]_[device-label|id]), &lt;br&gt;containing the
corresponding ordered list of Blocks
&lt;br&gt;BLOCK_MODE: One C
struct field per class/block ([class-name]_[block-name]),
&lt;br&gt;containing array of corresponding Block, one element per
device
</doc>
</xs:appinfo>
</xs:annotation>
</xs:attribute>
<xs:attribute name="base-DB-number" type="xs:unsignedInt" use="required">
<xs:annotation>
<xs:documentation>Number of the diagnostic DB that is the first one
of the global configuration (corresponds to the common SilecsHeader
data-block).
</xs:documentation>
<xs:appinfo>
<doc>
Number of the diagnostic DB that is the first one of the
global
configuration ( &gt;=1)
</doc>
</xs:appinfo>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="NIControllerType">
<xs:complexContent>
<xs:extension base="PLCBaseType">
<xs:attribute name="model" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Compact_RIO" />
<xs:enumeration value="PXI_RT" />
<xs:enumeration value="PXI_Windows" />
<xs:enumeration value="PC_Windows" />
<xs:enumeration value="Other_Support_CNV" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="system" type="NISystemType" use="required">
<xs:annotation>
<xs:documentation>System infrastructure used to develop and/or
configure the controller software.
</xs:documentation>
<xs:appinfo>
<doc>
System infrastructure used to develop and/or configure the
Controller
software.
</doc>
</xs:appinfo>
</xs:annotation>
</xs:attribute>
<xs:attribute name="protocol" type="DeviceProtocolType" use="required">
<xs:annotation>
<xs:documentation>Data access mode is defined at PLC level for all
the classes
</xs:documentation>
<xs:appinfo>
<doc>
DEVICE_MODE: One shared variable per class/device
(//class-name//controllerName//device-label), &lt;br&gt;containing
the corresponding ordered list of Blocks.
</doc>
</xs:appinfo>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:keyref name="SilecsDesignRef" refer="SilecsDesign">
<xs:selector xpath="Controller/*/Device" />
<xs:field xpath="@silecs-design-ref" />
</xs:keyref>
<xs:key name="SilecsDesign">
<xs:selector xpath="SilecsDesign" />
<xs:field xpath="@silecs-design-name" />
</xs:key>
</xs:schema> </xs:schema>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment