S7 SCL-Editor

herdi

Level-1
Beiträge
50
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo miteinander,

ich bin in der S7-Welt noch relativ neu (mit CoDeSys hab ich schon ein paar Jahre gearbeitet). Alles in allem ist befremdet mich die ganze Siemens-Programmiererei doch etwas, alles ist dort so umständlich...

Aber was ich eigentlich fragen wollte: Im SCL-Editor; gibt es dort wirklich keine Art Codevervollständigung ala Intellisense oder ähnlichem? Es bremst mich bei der Arbeit zum Beispiel ziemlich aus wenn man die ganze Zeit irgendwo nachschauen muss wie jetzt eine Membervariable einer Struktur genau geschrieben wird oder welche Übergabeparameter eine Funktion so hat... So was wie bei CoDeSys kommt wenn man F2 drückt wäre auch nicht übel...

Viele Grüße

Herdi
 
Zuletzt bearbeitet:
schön wärs gewesen.....
meines wissens gibts da nichts.
Bin schon froh über das syntax highlighting.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Gibts wirklich nicht,

Siemens hat vor ca. 10 Jahren aufgehört, den SCL-Editor weiter zu entwickeln, es fehlt da noch an vielen, vielen weiteren Möglichkeiten die ein moderner Editor bieten könnte (sollte)!!
 
Gibts wirklich nicht,

Siemens hat vor ca. 10 Jahren aufgehört, den SCL-Editor weiter zu entwickeln, es fehlt da noch an vielen, vielen weiteren Möglichkeiten die ein moderner Editor bieten könnte (sollte)!!

Ja, stimmt .... vor allem das Debuging und der Editor sind absolut nicht Stand der Dinge.

Vielleicht erfinden die ja man ein S7.Net mit einem VisualS7Studio :D :D :D
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielleicht erfinden die ja man ein S7.Net mit einem VisualS7Studio :D :D :D

Ich hoffe, dass wenn sie das tun, dass dann die Herren Intel & Co vorher einen entsprechend leistungsfähigen Prozessort entwickelt haben - man denke hier bitte an Flex ...:ROFLMAO:

Gruß
LL
 
Hallo zusammen,
also mittlerweile hab ich jetzt schon einiges in SCL zusammenprogrammiert. Der Editor schockiert mich nach wie vor... Ich habe zwar das Prinzip wie die SCL-Quellen zu Bausteinen werden und auch wie man wo und was in DBs abspeichert ziemlich raus. Bin aber mehr denn je der Meinung dass in S7 so ziemlich alles elendig umständlich ist. Vor allem die Zwischenstufe Symboltabelle um einem Teil mit sinnvollen Namen eine nichtssagende Nummer OBXX, FCXX, DBXX zuzuordnen ist nicht sehr übersichtlich...

Was mich jetzt aber weniger erstaunt ist das man von Siemens-Leuten erstaunlich wenig Widerspruch und Gegenargumente erhält wenn man sagt das man CoDeSys oder B&R um Welten besser findet...

Man kann sichs halt nicht immer raussuchen...

Gruß

Herdi

PS: Ich hab immer gedacht Strukturierter Text wäre auf dem Vormarsch, bei Siemens wohl nicht...
 
Hallo zusammen,
also mittlerweile hab ich jetzt schon einiges in SCL zusammenprogrammiert. Der Editor schockiert mich nach wie vor... Ich habe zwar das Prinzip wie die SCL-Quellen zu Bausteinen werden und auch wie man wo und was in DBs abspeichert ziemlich raus. Bin aber mehr denn je der Meinung dass in S7 so ziemlich alles elendig umständlich ist. Vor allem die Zwischenstufe Symboltabelle um einem Teil mit sinnvollen Namen eine nichtssagende Nummer OBXX, FCXX, DBXX zuzuordnen ist nicht sehr übersichtlich...

Was mich jetzt aber weniger erstaunt ist das man von Siemens-Leuten erstaunlich wenig Widerspruch und Gegenargumente erhält wenn man sagt das man CoDeSys oder B&R um Welten besser findet...

Man kann sichs halt nicht immer raussuchen...

Gruß

Herdi

PS: Ich hab immer gedacht Strukturierter Text wäre auf dem Vormarsch, bei Siemens wohl nicht...


Die meißten werden es wohl nicht kennen, aber innerhalb von CFC / PCS7
läuft der SCL-Editer mit vielen speziellen Funktionen zur Hochform auf.
Diese zusätzlichen VISUELLEN Funktionen werden aber leider in einer
normalen STEP7 Umgebung leider nicht genutzt.

Im Übringen gilt auch hier das Henne-Ei-Prinzip. Die große Masse der
SCL-Installationen wird wohl als Unterbau für CFC/PCS7 genutzt.


Beispielhafte Variablendeklaration für CFC-Visualisierung:


Code:
FUNCTION_BLOCK "STATE"
TITLE   ='STATE' 
NAME    : STATE
AUTHOR  : xxx 
FAMILY  : CTRL 
VERSION : '0.3'
//KNOW_HOW_PROTECT 
// Typical-Attribute
{
  S7_m_c       :='false';
  S7_blockview :='big'
}
VAR_INPUT   
    TAKT_3       {S7_dynamic := 'true'; S7_visible  :='true'                                                        } : BOOL :=   FALSE; //Takt      
    TAKT_5       {S7_dynamic := 'true'; S7_visible  :='true'                                                        } : BOOL :=   FALSE; //Takt  
    DRUCKNIO     {S7_dynamic := 'true'; S7_visible  :='true'; S7_string_0 := 'DRUCK_OK' ; S7_string_1 := 'DRUCKNIO' } : BOOL :=   FALSE; //interne Überwachung
    Start_FL     {S7_dynamic := 'true'; S7_visible  :='true'; S7_string_0 := 'OFF'      ; S7_string_1 := 'START'    } : BOOL :=   FALSE; //Status von Eingängen
    Stop         {S7_dynamic := 'true'; S7_visible  :='true'; S7_string_0 := 'OFF'      ; S7_string_1 := 'STOP'     } : BOOL :=   FALSE; //Status von Eingängen
    REMOTE       {S7_dynamic := 'true'; S7_visible  :='true'; S7_string_0 := 'OFF'      ; S7_string_1 := 'REMOTE'   } : BOOL :=   FALSE; //Status von Eingängen 
    KL_AUTO      {S7_dynamic := 'true'; S7_visible  :='true'; S7_string_0 := 'KL_HAND'  ; S7_string_1 := 'OK'       } : BOOL :=   FALSE; //Klappen im Automatikbetrieb 
 
    SI_RELEASE   {S7_dynamic := 'true'; S7_visible  :='true'; S7_string_0 := 'OK'       ; S7_string_1 := 'RELEASE'  } : BOOL :=   FALSE; //Status Sicherheits-SPS  [S7-300]
    SI_SPS_RUN   {S7_dynamic := 'true'; S7_visible  :='true'; S7_string_0 := 'RUN_FLT'  ; S7_string_1 := 'OK'       } : BOOL :=   FALSE; //Status Sicherheits-SPS  [S7-300] 
    SI_LIVE_BIT  {S7_dynamic := 'true'; S7_visible  :='true'; S7_string_0 := 'LIVE_FLT' ; S7_string_1 := 'OK'       } : BOOL :=   FALSE; //Status Sicherheits-SPS  [S7-300]    
END_VAR
 
VAR_OUTPUT    
    LM_EIN       {S7_dynamic := 'true'; S7_visible  :='true'; S7_string_0 := 'OFF'      ; S7_string_1 := 'LM_EIN'   }  : BOOL       :=   FALSE; //Leuchtmelder EIN
    CTRL_OK      {S7_dynamic := 'true'; S7_visible  :='true'; S7_string_0 := 'OFF'      ; S7_string_1 := 'CTRL_OK'  }  : BOOL       :=   FALSE; //CTRL_OK      an Sicherheits-SPS [S7-300]
    QUIT         {S7_dynamic := 'true'; S7_visible  :='true'; S7_string_0 := 'OFF'      ; S7_string_1 := 'QUIT'     }  : BOOL       :=   FALSE; //QUIT_SIGNAL  an Sicherheits-SPS [S7-300]
 
    STATE_TEXT   {S7_dynamic := 'true'; S7_visible  :='true'                                                        }  : STRING[18] :=   'FILLTEXT0123456789'; //Zustand als Text        
 
    STATE_Z00    {S7_dynamic := 'true'; S7_visible  :='true'; S7_string_0 := 'OFF'      ; S7_string_1 := 'AUSGESCH' }  : BOOL       :=   FALSE; //AUSGESCH
    STATE_Z01    {S7_dynamic := 'true'; S7_visible  :='true'; S7_string_0 := 'OFF'      ; S7_string_1 := 'HOCHLAUF' }  : BOOL       :=   FALSE; //HOCHLAUF
    STATE_Z02    {S7_dynamic := 'true'; S7_visible  :='true'; S7_string_0 := 'OFF'      ; S7_string_1 := 'HANDBETR' }  : BOOL       :=   FALSE; //HANDBETR
    STATE_Z03    {S7_dynamic := 'true'; S7_visible  :='true'; S7_string_0 := 'OFF'      ; S7_string_1 := 'GESTOERT' }  : BOOL       :=   FALSE; //GESTOERT
    STATE_Z04    {S7_dynamic := 'true'; S7_visible  :='true'; S7_string_0 := 'OFF'      ; S7_string_1 := 'BEREIT'   }  : BOOL       :=   FALSE; //BEREIT
    STATE_Z05    {S7_dynamic := 'true'; S7_visible  :='true'; S7_string_0 := 'OFF'      ; S7_string_1 := 'QUIT_EIN' }  : BOOL       :=   FALSE; //QUIT_EIN
    STATE_Z06    {S7_dynamic := 'true'; S7_visible  :='true'; S7_string_0 := 'OFF'      ; S7_string_1 := 'QUIT_AUS' }  : BOOL       :=   FALSE; //QUIT_AUS
    STATE_Z07    {S7_dynamic := 'true'; S7_visible  :='true'; S7_string_0 := 'OFF'      ; S7_string_1 := 'NORMBETR' }  : BOOL       :=   FALSE; //DRUCKSTEUERUNG EIN
 
    STATE_ERR    {S7_dynamic := 'true'; S7_visible  :='true'; S7_string_0 := 'OFF'      ; S7_string_1 := 'PROG_FLT' }  : BOOL       :=   FALSE; //PROGRAMMFEHLER                      
END_VAR
 
VAR_IN_OUT
    ZUSTAND      {S7_dynamic := 'true'; S7_visible  :='true' }  : INT  :=       0; //Zustand aktuell          
    ZUSTAND_OLD  {S7_dynamic := 'true'; S7_visible  :='true' }  : INT  :=       0; //Zustand (N-1)  
END_VAR
 
VAR
    NEXT_S06 :   TON;                                    // interner Timer 
    NEXT_S05 :   TON;                                    // interner Timer     
END_VAR
 
VAR_TEMP
    //
END_VAR
 
BEGIN  
...
END_FUNCTION_BLOCK
 
Zurück
Oben