plc programmas

Komen jullie regelmatig een of andere standaard tegen in PLC programma's waarin vastgelegd is hoe alles moet ontworpen worden. En indien ja hebben die standaarden dan een naam?

Elk bedrijf heeft wel een interne standaard
Klanten hebben eisen
Maar een algehele standaard is naar mijn weten nergens bekend

Je zou een richtlijn als de isa88(voor procesbesturingen) kunnen bekijken
Niet verplicht maar dergelijke opbouw kom je nogal eens tegen
Al ligt het geheel opdelen en er een boomstructuur van maken nogal voor de hand

Er is niet echt een universele standaard zoals DK al zei. Wat velen wel doen is programmeren in stappen.
vb.

code:

Stap 0: RUSTSTAP
- x-as HOMED = 0 & 3s op start?
Stap 1: motor controllers uit zetten (reset automatisch fouten) 
- controller alarm uitgang 0?
Stap 2: motor controllers aanzetten
- controller alarm uitgang 1? (= klaar voor start)
Stap 3: servo aanzetten
- servo aan?
Stap 4: Setup ingang (= home commando, encoders zijn positie kwijt)
- bezig?
Stap 5: Home commando uitzetten
- niet bezig? In positie?
Stap 6: SET FLAG --> X-as HOMED

code:

Stap 0: RUSTSTAP
- X-as HOMED =1 & 3s op start?
Stap 11: Coördinaat adres op uitgangen
- evt. tijd aflopen
Stap 12: Move commando
- bezig? 
Stap 13: RESET FLAG --> X-as HOMED
.....

Meer bepaald serieel programmeren (niet: druk ik op PLUS in stap 13, dan ga ik naar stap 14 OF druk ik op MIN in stap 13, dan ga ik naar stap 24). Die OF is er teveel aan...
Als't niet duidelijk is, zet ik een voorbeeldje online...

Ieder bedrijf heeft inderdaad ongeveer zijn eigen standaard.

Voorbeeldje van een stukje automaat programma: (Step7-SCL)

code:

(*----------------------------------------------------------------*)
(*  Step 5: Step select                                           *)
(*----------------------------------------------------------------*)
    5: 
        // Action
        IF      StepPulse
        THEN
            ;
        END_IF;
        
        // Transition
        IF      NOT StepPulse
            AND     Steprelease
        THEN
            IF      NOT "IX_PipeInGripper"
            THEN
                StepNrNxt   := 10;
            ELSE
                StepNrNxt   := 20;
            END_IF;
        END_IF;

(*----------------------------------------------------------------*)
(*  Step 10: Pipe clamp open                                      *)
(*----------------------------------------------------------------*)
    10: 
        // Action
        IF      StepPulse
        THEN
            "Cmd_PipeGripper"       := 2;   // Pipe clamp open
        END_IF;
        
        // Transition
        IF      NOT StepPulse
            AND     Steprelease
            AND     "IX_PipeGripOpened"
        THEN
            IF          ("DB_PipeInserter".Pos_Actual > ("DB_BOSCH_SERVO".PipeInserter.Setpoint.Position_PickUp + "DB_PipeInserter".In_Position_Window))
            THEN
                //If inserter is under slider, first slider to elevator
                StepNrNxt   := 12;
            ELSE
                //If inserter is above slider, first inserter to home position
                StepNrNxt   := 13;
            END_IF;
        END_IF;

(*----------------------------------------------------------------*)
(*  Step 12: Pipe slider to elevator                              *)
(*----------------------------------------------------------------*)
    12: 
        // Action
        IF      StepPulse
        THEN
            "Cmd_PipeSlider"        := 2;   // Slider to elevator
        END_IF;
        
        // Transition
        IF      NOT StepPulse
            AND     Steprelease
            AND     "IX_PipeSliderElevator"
        THEN
            StepNrNxt   := StepNrNxt + 1;
        END_IF;

Wat we nu steeds vaker zien is inderdaad ISA88.