Compare commits

2 Commits
ladder ... main

Author SHA1 Message Date
Tiago Batista Cardoso
e56dc5201b tiago 2025-12-04 21:52:11 +01:00
TIBERGHIEN corentin
faeed36e4d rapport 2025-12-04 17:02:36 +01:00
3 changed files with 667 additions and 0 deletions

18
Rapport.md Normal file
View File

@@ -0,0 +1,18 @@
Quelles difficultés avez-vous rencontré dans lutilisation de OpenPLC ?
les instructions d'installations pour linux n'étaient pas claires, il fallait soit lancer l'installateur classique soit compiler Open PLC depuis avec le code source.
-> en compilant depuis le code source, il faut utiliser python 2 qui n'est absolument plus disponible sur des distributions normales, j'ai réussi à l'installer sur debian mais je n'ai pas pu installer les paquets pip nécessaires avec
-> en utilsant l'installateur normal, ça fonctionne sauf qu'il faut installer python 3.11 qui est une version antérieure non disponible par défaut.
il faudrait inclure des instructions d'installation claires pour les distributions populaires étant donné que la quasi totalité des étudiant de l'ufr utilisent linux
Comment les avez-vous surmontées (ou pas) ?
le logiciel n'est pas particulièrement bien conçu, très peu d'indications sans devoir passer par la documentation, beaucoup de crashs et comportements étranges en utilisation normale, sans chercher à en produire.
Que pensez-vous sur le développement en langage Ladder (LD) ?
peu d'elements de syntaxe disponibles, par exemple, il n'y a pas d'instructions if else ce qui est assez embetant pour faire un programme de vérifications d'exigences comme les instructions demandées à l'exercice 4 je ne vois pas l'intérêt comparé à par exemple structured text
Inclure dans votre rapport des extraits de votre OpenPLC Editor sur les solutions demandées.

4
tp2/beremiz.xml Normal file
View File

@@ -0,0 +1,4 @@
<?xml version='1.0' encoding='utf-8'?>
<BeremizRoot xmlns:xsd="http://www.w3.org/2001/XMLSchema" URI_location="LOCAL://">
<TargetType/>
</BeremizRoot>

645
tp2/plc.xml Normal file
View File

@@ -0,0 +1,645 @@
<?xml version='1.0' encoding='utf-8'?>
<project xmlns="http://www.plcopen.org/xml/tc6_0201" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:ns1="http://www.plcopen.org/xml/tc6_0201">
<fileHeader companyName="Unknown" productName="Unnamed" productVersion="1" creationDateTime="2025-11-28T11:40:28"/>
<contentHeader name="tp2" modificationDateTime="2025-12-04T13:05:24">
<coordinateInfo>
<fbd>
<scaling x="10" y="10"/>
</fbd>
<ld>
<scaling x="10" y="10"/>
</ld>
<sfc>
<scaling x="10" y="10"/>
</sfc>
</coordinateInfo>
</contentHeader>
<types>
<dataTypes/>
<pous>
<pou name="motor" pouType="program">
<interface>
<localVars>
<variable name="START">
<type>
<BOOL/>
</type>
</variable>
<variable name="STOP">
<type>
<BOOL/>
</type>
</variable>
<variable name="DELAY">
<type>
<TIME/>
</type>
<initialValue>
<simpleValue value="T#100ms"/>
</initialValue>
</variable>
<variable name="RUNNING">
<type>
<BOOL/>
</type>
</variable>
<variable name="RS0">
<type>
<derived name="RS"/>
</type>
</variable>
<variable name="TON0">
<type>
<derived name="TON"/>
</type>
</variable>
</localVars>
</interface>
<body>
<LD>
<leftPowerRail localId="1" width="10" height="140">
<position x="180" y="100"/>
<connectionPointOut formalParameter="">
<relPosition x="10" y="20"/>
</connectionPointOut>
<connectionPointOut formalParameter="">
<relPosition x="10" y="120"/>
</connectionPointOut>
</leftPowerRail>
<contact localId="2" negated="false" width="21" height="20">
<position x="250" y="110"/>
<connectionPointIn>
<relPosition x="0" y="10"/>
<connection refLocalId="1">
<position x="250" y="120"/>
<position x="190" y="120"/>
</connection>
</connectionPointIn>
<connectionPointOut>
<relPosition x="21" y="10"/>
</connectionPointOut>
<variable>START</variable>
</contact>
<block localId="4" typeName="RS" instanceName="RS0" width="50" height="60">
<position x="390" y="90"/>
<inputVariables>
<variable formalParameter="S">
<connectionPointIn>
<relPosition x="0" y="30"/>
<connection refLocalId="8" formalParameter="Q">
<position x="390" y="120"/>
<position x="350" y="120"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="R1">
<connectionPointIn>
<relPosition x="0" y="50"/>
<connection refLocalId="5">
<position x="390" y="140"/>
<position x="370" y="140"/>
<position x="370" y="210"/>
<position x="271" y="210"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="Q1">
<connectionPointOut>
<relPosition x="50" y="30"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<contact localId="5" negated="false" width="21" height="20">
<position x="250" y="200"/>
<connectionPointIn>
<relPosition x="0" y="10"/>
<connection refLocalId="1">
<position x="250" y="210"/>
<position x="220" y="210"/>
<position x="220" y="220"/>
<position x="190" y="220"/>
</connection>
</connectionPointIn>
<connectionPointOut>
<relPosition x="21" y="10"/>
</connectionPointOut>
<variable>STOP</variable>
</contact>
<coil localId="6" negated="false" width="21" height="20">
<position x="470" y="110"/>
<connectionPointIn>
<relPosition x="0" y="10"/>
<connection refLocalId="4" formalParameter="Q1">
<position x="470" y="120"/>
<position x="440" y="120"/>
</connection>
</connectionPointIn>
<connectionPointOut>
<relPosition x="21" y="10"/>
</connectionPointOut>
<variable>RUNNING</variable>
</coil>
<rightPowerRail localId="7" width="10" height="80">
<position x="540" y="100"/>
<connectionPointIn>
<relPosition x="0" y="20"/>
<connection refLocalId="6">
<position x="540" y="120"/>
<position x="490" y="120"/>
</connection>
</connectionPointIn>
<connectionPointIn>
<relPosition x="0" y="60"/>
</connectionPointIn>
</rightPowerRail>
<block localId="8" typeName="TON" instanceName="TON0" width="50" height="70">
<position x="300" y="90"/>
<inputVariables>
<variable formalParameter="IN">
<connectionPointIn>
<relPosition x="0" y="30"/>
<connection refLocalId="2">
<position x="300" y="120"/>
<position x="271" y="120"/>
</connection>
</connectionPointIn>
</variable>
<variable formalParameter="PT">
<connectionPointIn>
<relPosition x="0" y="60"/>
<connection refLocalId="9">
<position x="300" y="150"/>
<position x="280" y="150"/>
<position x="280" y="160"/>
<position x="260" y="160"/>
</connection>
</connectionPointIn>
</variable>
</inputVariables>
<inOutVariables/>
<outputVariables>
<variable formalParameter="Q">
<connectionPointOut>
<relPosition x="50" y="30"/>
</connectionPointOut>
</variable>
<variable formalParameter="ET">
<connectionPointOut>
<relPosition x="50" y="60"/>
</connectionPointOut>
</variable>
</outputVariables>
</block>
<inVariable localId="9" width="60" height="30" negated="false">
<position x="200" y="140"/>
<connectionPointOut>
<relPosition x="60" y="20"/>
</connectionPointOut>
<expression>DELAY</expression>
</inVariable>
</LD>
</body>
</pou>
<pou name="fan" pouType="program">
<interface>
<localVars>
<variable name="START">
<type>
<BOOL/>
</type>
</variable>
<variable name="STOP">
<type>
<BOOL/>
</type>
</variable>
<variable name="MOTOR1">
<type>
<BOOL/>
</type>
</variable>
<variable name="TEMPO">
<type>
<BOOL/>
</type>
</variable>
</localVars>
</interface>
<body>
<SFC>
<step localId="1" name="Step0" initialStep="true" width="60" height="30">
<position x="550" y="100"/>
<connectionPointOut formalParameter="">
<relPosition x="30" y="30"/>
</connectionPointOut>
</step>
<leftPowerRail localId="2" width="10" height="80">
<position x="370" y="130"/>
<connectionPointOut formalParameter="">
<relPosition x="10" y="20"/>
</connectionPointOut>
<connectionPointOut formalParameter="">
<relPosition x="10" y="60"/>
</connectionPointOut>
</leftPowerRail>
<contact localId="3" negated="false" edge="rising" width="21" height="20">
<position x="420" y="140"/>
<connectionPointIn>
<relPosition x="0" y="10"/>
<connection refLocalId="2">
<position x="420" y="150"/>
<position x="380" y="150"/>
</connection>
</connectionPointIn>
<connectionPointOut>
<relPosition x="21" y="10"/>
</connectionPointOut>
<variable>START</variable>
</contact>
<contact localId="4" negated="false" width="21" height="20" edge="rising">
<position x="420" y="180"/>
<connectionPointIn>
<relPosition x="0" y="10"/>
<connection refLocalId="2">
<position x="420" y="190"/>
<position x="380" y="190"/>
</connection>
</connectionPointIn>
<connectionPointOut>
<relPosition x="21" y="10"/>
</connectionPointOut>
<variable>STOP</variable>
</contact>
<step localId="5" name="Step1" initialStep="false" width="50" height="30">
<position x="560" y="180"/>
<connectionPointIn>
<relPosition x="20" y="0"/>
<connection refLocalId="6">
<position x="580" y="180"/>
<position x="580" y="160"/>
</connection>
</connectionPointIn>
<connectionPointOut formalParameter="">
<relPosition x="20" y="30"/>
</connectionPointOut>
<connectionPointOutAction formalParameter="">
<relPosition x="50" y="20"/>
</connectionPointOutAction>
</step>
<transition localId="6" width="20" height="10">
<position x="570" y="150"/>
<connectionPointIn>
<relPosition x="10" y="0"/>
<connection refLocalId="1">
<position x="580" y="150"/>
<position x="580" y="130"/>
</connection>
</connectionPointIn>
<connectionPointOut>
<relPosition x="10" y="10"/>
</connectionPointOut>
<condition>
<connectionPointIn>
<connection refLocalId="3">
<position x="570" y="150"/>
<position x="441" y="150"/>
</connection>
</connectionPointIn>
</condition>
</transition>
<actionBlock localId="8" width="100" height="30">
<position x="670" y="170"/>
<connectionPointIn>
<relPosition x="0" y="20"/>
<connection refLocalId="5">
<position x="670" y="190"/>
<position x="640" y="190"/>
<position x="640" y="200"/>
<position x="610" y="200"/>
</connection>
</connectionPointIn>
<action localId="0" qualifier="D" duration="t#2s">
<relPosition x="0" y="0"/>
<reference name="TEMPO"/>
</action>
</actionBlock>
<step localId="10" name="Step2" initialStep="false" width="50" height="30">
<position x="560" y="260"/>
<connectionPointIn>
<relPosition x="20" y="0"/>
<connection refLocalId="11">
<position x="580" y="260"/>
<position x="580" y="240"/>
</connection>
</connectionPointIn>
<connectionPointOut formalParameter="">
<relPosition x="20" y="30"/>
</connectionPointOut>
<connectionPointOutAction formalParameter="">
<relPosition x="50" y="20"/>
</connectionPointOutAction>
</step>
<transition localId="11" width="20" height="10">
<position x="570" y="230"/>
<connectionPointIn>
<relPosition x="10" y="0"/>
<connection refLocalId="5">
<position x="580" y="230"/>
<position x="580" y="210"/>
</connection>
</connectionPointIn>
<connectionPointOut>
<relPosition x="10" y="10"/>
</connectionPointOut>
<condition>
<inline name="">
<ST>
<xhtml:p><![CDATA[TEMPO]]></xhtml:p>
</ST>
</inline>
</condition>
</transition>
<jumpStep localId="12" targetName="Step0" width="20" height="20">
<position x="570" y="340"/>
<connectionPointIn>
<relPosition x="10" y="0"/>
<connection refLocalId="13">
<position x="580" y="340"/>
<position x="580" y="320"/>
</connection>
</connectionPointIn>
</jumpStep>
<transition localId="13" width="20" height="10">
<position x="570" y="310"/>
<connectionPointIn>
<relPosition x="10" y="0"/>
<connection refLocalId="10">
<position x="580" y="310"/>
<position x="580" y="290"/>
</connection>
</connectionPointIn>
<connectionPointOut>
<relPosition x="10" y="10"/>
</connectionPointOut>
<condition>
<connectionPointIn>
<connection refLocalId="4">
<position x="570" y="310"/>
<position x="546" y="310"/>
<position x="546" y="190"/>
<position x="441" y="190"/>
</connection>
</connectionPointIn>
</condition>
</transition>
<actionBlock localId="14" width="100" height="30">
<position x="668" y="260"/>
<connectionPointIn>
<relPosition x="0" y="20"/>
<connection refLocalId="10">
<position x="668" y="280"/>
<position x="610" y="280"/>
</connection>
</connectionPointIn>
<action localId="0">
<relPosition x="0" y="0"/>
<reference name="MOTOR1"/>
</action>
</actionBlock>
</SFC>
</body>
</pou>
<pou name="street_light" pouType="program">
<interface>
<localVars>
<variable name="RED">
<type>
<BOOL/>
</type>
</variable>
<variable name="YELLOW">
<type>
<BOOL/>
</type>
</variable>
<variable name="GREEN">
<type>
<BOOL/>
</type>
</variable>
<variable name="WAIT">
<type>
<BOOL/>
</type>
</variable>
</localVars>
</interface>
<body>
<SFC>
<step localId="1" name="show_green" initialStep="true" width="100" height="30">
<position x="500" y="80"/>
<connectionPointOut formalParameter="">
<relPosition x="50" y="30"/>
</connectionPointOut>
<connectionPointOutAction formalParameter="">
<relPosition x="100" y="10"/>
</connectionPointOutAction>
</step>
<actionBlock localId="2" width="110" height="60">
<position x="630" y="70"/>
<connectionPointIn>
<relPosition x="0" y="10"/>
<connection refLocalId="1">
<position x="630" y="80"/>
<position x="615" y="80"/>
<position x="615" y="100"/>
<position x="600" y="100"/>
</connection>
</connectionPointIn>
<action localId="0" qualifier="SL" duration="t#30s">
<relPosition x="0" y="0"/>
<reference name="GREEN"/>
</action>
<action localId="0" qualifier="SD" duration="t#28s">
<relPosition x="0" y="0"/>
<reference name="YELLOW"/>
</action>
</actionBlock>
<step localId="4" name="show_yellow" initialStep="false" width="100" height="30">
<position x="500" y="250"/>
<connectionPointIn>
<relPosition x="50" y="0"/>
<connection refLocalId="5">
<position x="550" y="250"/>
<position x="550" y="210"/>
</connection>
</connectionPointIn>
<connectionPointOut formalParameter="">
<relPosition x="50" y="30"/>
</connectionPointOut>
<connectionPointOutAction formalParameter="">
<relPosition x="100" y="10"/>
</connectionPointOutAction>
</step>
<transition localId="5" width="20" height="10">
<position x="540" y="200"/>
<connectionPointIn>
<relPosition x="10" y="0"/>
<connection refLocalId="1">
<position x="550" y="200"/>
<position x="550" y="110"/>
</connection>
</connectionPointIn>
<connectionPointOut>
<relPosition x="10" y="10"/>
</connectionPointOut>
<condition>
<inline name="">
<ST>
<xhtml:p><![CDATA[GREEN = false]]></xhtml:p>
</ST>
</inline>
</condition>
</transition>
<jumpStep localId="7" targetName="show_green" width="20" height="20">
<position x="540" y="440"/>
<connectionPointIn>
<relPosition x="10" y="0"/>
<connection refLocalId="10">
<position x="550" y="440"/>
<position x="550" y="410"/>
</connection>
</connectionPointIn>
</jumpStep>
<transition localId="8" width="20" height="10">
<position x="540" y="310"/>
<connectionPointIn>
<relPosition x="10" y="0"/>
<connection refLocalId="4">
<position x="550" y="310"/>
<position x="550" y="280"/>
</connection>
</connectionPointIn>
<connectionPointOut>
<relPosition x="10" y="10"/>
</connectionPointOut>
<condition>
<inline name="">
<ST>
<xhtml:p><![CDATA[YELLOW = false]]></xhtml:p>
</ST>
</inline>
</condition>
</transition>
<step localId="9" name="show_red" initialStep="false" width="80" height="30">
<position x="510" y="350"/>
<connectionPointIn>
<relPosition x="40" y="0"/>
<connection refLocalId="8">
<position x="550" y="350"/>
<position x="550" y="320"/>
</connection>
</connectionPointIn>
<connectionPointOut formalParameter="">
<relPosition x="40" y="30"/>
</connectionPointOut>
<connectionPointOutAction formalParameter="">
<relPosition x="80" y="10"/>
</connectionPointOutAction>
</step>
<transition localId="10" width="20" height="10">
<position x="540" y="400"/>
<connectionPointIn>
<relPosition x="10" y="0"/>
<connection refLocalId="9">
<position x="550" y="400"/>
<position x="550" y="380"/>
</connection>
</connectionPointIn>
<connectionPointOut>
<relPosition x="10" y="10"/>
</connectionPointOut>
<condition>
<inline name="">
<ST>
<xhtml:p><![CDATA[RED = false]]></xhtml:p>
</ST>
</inline>
</condition>
</transition>
<comment localId="3" height="100" width="310">
<position x="760" y="60"/>
<content>
<xhtml:p><![CDATA[REQ2 : Green lit for at least 30s
REQ3 : Lighting up Yellow 2s before Green turns off to ensure it ligths up within 0.2s.]]></xhtml:p>
</content>
</comment>
<actionBlock localId="13" width="90" height="30">
<position x="620" y="340"/>
<connectionPointIn>
<relPosition x="0" y="20"/>
<connection refLocalId="9">
<position x="620" y="360"/>
<position x="590" y="360"/>
</connection>
</connectionPointIn>
<action localId="0" qualifier="SL" duration="t#10s">
<relPosition x="0" y="0"/>
<reference name="RED"/>
</action>
</actionBlock>
<actionBlock localId="14" width="100" height="30">
<position x="640" y="240"/>
<connectionPointIn>
<relPosition x="0" y="20"/>
<connection refLocalId="4">
<position x="640" y="260"/>
<position x="600" y="260"/>
</connection>
</connectionPointIn>
<action localId="0" qualifier="P">
<relPosition x="0" y="0"/>
<reference name="YELLOW"/>
</action>
</actionBlock>
<comment localId="15" height="40" width="350">
<position x="680" y="180"/>
<content>
<xhtml:p><![CDATA[REQ1 : After Green, next step is yellow.]]></xhtml:p>
</content>
</comment>
<comment localId="16" height="40" width="350">
<position x="730" y="340"/>
<content>
<xhtml:p><![CDATA[REQ5 : Red stays active for at least 10s.]]></xhtml:p>
</content>
</comment>
<comment localId="17" height="40" width="220">
<position x="690" y="290"/>
<content>
<xhtml:p><![CDATA[REQ4 : Next step is Red.]]></xhtml:p>
</content>
</comment>
</SFC>
</body>
</pou>
</pous>
</types>
<instances>
<configurations>
<configuration name="Config0">
<resource name="Res0">
<task name="task0" priority="0" interval="T#20ms">
<pouInstance name="instance0" typeName="motor"/>
<pouInstance name="instance2" typeName="street_light"/>
<pouInstance name="instance1" typeName="fan"/>
</task>
</resource>
</configuration>
</configurations>
</instances>
</project>