# B&R Automation Basic - Variablenproblem



## be_und_err (16 Februar 2009)

Hallo,

ich stehe hier momentan vor dem Problem in Automation Basic, dass z.B. eine in einer IF-Abfrage geaenderte Variablen von dieser quasi "gesperrt" wird, da natuerlich in jedem Zyklus die Änderung aufs Neue gemacht wird. 

Gut wäre es wenn es einen Befehl gäbe der soetwas wie z.B. "BOOL umschalten" (TRUE auf FALSE und andersrum) machen würde.

Vielleicht hat noch jemand einen Tipp 

Gruß


----------



## Techniker (21 Februar 2009)

Hallo,

kannst du bitte einen kleinen Auszug deines Programmes posten?

Ansonsten wird es ein wenig schwer zu verstehen, was du meinst.


----------



## trinitaucher (22 Februar 2009)

be_und_err schrieb:


> ich stehe hier momentan vor dem Problem in Automation Basic, dass z.B. eine in einer IF-Abfrage geaenderte Variablen von dieser quasi "gesperrt" wird, da natuerlich in jedem Zyklus die Änderung aufs Neue gemacht wird.
> 
> Gut wäre es wenn es einen Befehl gäbe der soetwas wie z.B. "BOOL umschalten" (TRUE auf FALSE und andersrum) machen würde.



wieso nicht so:

```
VAR
   bVariable: BOOL; (* zu schaltende Variable *)
   bTrigger: BOOL; (* umschaltbedingung *)
END_VAR
(******************)

IF bTrigger THEN
  IF bVariable THEN
     bVariable := FALSE;
  ELSE 
     bVariable := TRUE;
  END_IF
END_IF
```
Solche eine Auswertung toggelt bVariable in jedem Zyklue, wenn bTrigger = TRUE ist. Man könnte vor das bTrigger dann noch eine Flankenauswertung schalten und diese dann als Trigger auswerten.


----------



## knorpe (22 Februar 2009)

hm - ist hilfe schwer. man sollte schon wissen was du vor hast.

eventuell hilft dir ja der befehl *edgepos* oder *edgeneg* - quasi die flankenerkennung. dabei wird nur bei ersten mal die schleife abgearbeit.

aber beschreib mal genauer was du machen willst.

lg
knorpe


----------



## Maxl (24 Februar 2009)

```
IF bTrigger THEN
  bVariable = NOT bVariable
END IF
```
Ach ja - was nun Basic oder ST????? Die von Dir geschriebene Syntax sieht mehr nach ST aus......


----------



## be_und_err (3 März 2009)

Mal wieder vielen Dank fuer Eure Tipps.
Ich hab mein Problem nun mit edgepos und edgeneg geloest.

Gruß


----------



## thovi (16 März 2009)

Maxl schrieb:


> Ach ja - was nun Basic oder ST????? Die von Dir geschriebene Syntax sieht mehr nach ST aus......



Nicht BASIC sondern AutomationBasic.:!: Das ist ein Unterschied.
Es handelt sich um eine Programmiersprache aus B&R AutomationStudio.
Enthält C und Basic Elemente und erleichtert das Programmieren erheblich.


----------



## Maxl (16 März 2009)

thovi schrieb:


> Nicht BASIC sondern AutomationBasic.:!: Das ist ein Unterschied.
> Es handelt sich um eine Programmiersprache aus B&R AutomationStudio.
> Enthält C und Basic Elemente und erleichtert das Programmieren erheblich.


Vielen Dank für die kurze Unterweisung!

In unserem Sprachgebrauch wurde der Ausdruck "Automation" beim Begriff "Automation Basic" übrigens wegrationalisiert, da es sich bei "Basic" im Zusammenhang mit B&R Automation Studio ohnehin immer und Automation Basic handelt. Sprich: der von mir gewählte Ausdruck "Basic" sollte eigentlich "Automation Basic" implizieren.

mfg Maxl

PS: Name des Threads "Automation Basic" - geposteter Code -> ST
PPS: C-Elemente konnte ich in Automation Basic bisher noch nicht entdecken.


----------



## thovi (16 März 2009)

Hallo Maxl,

in meinem Sprachgebrauch spreche ich von *Automation Basic* und *Visual Basic.net* oder *DotNet Basic*. 
Ich arbeite mit beiden Sprachen um die B&R zu steuern.

Daher ist für mich 

```
(Basic NOT Automation Basic) AND (Basic NOT Visual Basic.Net)
```
Nicht böse sein dass ich so kleinlich bin! 

Mfg, Thovi


----------



## harrylask (16 März 2009)

[KLUGSCHEISS_EIN]


> ... um die B&R zu steuern



Vermutlich meinst du damit eine Steuerung der Firma Bernecker & Rainer. Konkret eine der SPSn der Generation SG3/SG4. SG2 CPUs verstehen nämlich von Haus aus kein Basic, ausser du schreibst dafür einen Interpreter. Obwohl, wenn ich mich recht entsinne gab es vor Ewigkeiten eine CPU die das Wort "Basic" in der Bezeichnung hatte, mit welcher Sprache diese programmiert wurde entzieht sich aber meiner Kenntnis.

[KLUGSCHEISS_AUS]

Aus dem Kontext heraus habe ich auf (Automation) Basic getippt, aber erst durch deine Richtigstellung wurde ich von meiner Unsicherheit befreit.

Grüsse, harrylask

PS: Du steuerst eine B&R SPS mit .Net? Jetzt bin ich neugierig, wie stellst du das an?


----------



## thovi (17 März 2009)

harrylask schrieb:


> PS: Du steuerst eine B&R SPS mit .Net? Jetzt bin ich neugierig, wie stellst du das an?


 
Guten Morgen harrylask! 

Es gibt ein PVI Management System für den Zugriff auf Prozessvariablen.
Für VB.Net, C# und C++ werden Klassen zur Verfügung gestellt die einen uneingeschränkten Zugriff auf die Prozess Variablen der Steuerung gewähren.
Es lassen sich sogar ganze Tasks/Module austauschen. Die SPS kann gestoppt, gestartet, neu gebootet werden usw.
Eine Variable kann global oder lokal sein und wird direkt über ihren Namen angesprochen. Wir können so die Eingaben/Ausgaben ohne Power Panel nur mit einem Windows PC oder IPC vornehmen. :!: So kann man z. B. ganz leicht Fernwartungs-Programme erstellen oder Updateprogramme für den Kunden.

mfg thovi


----------



## harrylask (17 März 2009)

Hallo thovi,
PVI - Process Visualisation Interface, mit dem kannst du auf eine SPS zugreifen, aber keine Tasks programmieren. Und um das ging es in diesem Thread. Die Frage an dem Ersteller lautete "Basic oder ST?" und dieser meinte damit sicher keine Programmiersprache mit der sich die SPS definitv *nicht* programmieren lässt.

Grüsse, harrylask


----------



## thovi (17 März 2009)

Hallo harrylask,

ich könnte jetzt auch die KLUGSCHEISS Variante wählen tue ich aber nicht.



harrylask schrieb:


> PVI - Process Visualisation Interface, mit dem kannst du auf eine SPS zugreifen, aber keine Tasks programmieren.


Das ist Richtig. Man kann aber Programme entwickeln mit denen man die Steuerung updaten also einen fehlerhaftenTask durch einen neuen ersetzen kann. (Lässt sich auch mit PVI Transfer bewerkstelligen) 


> Die Frage an dem Ersteller lautete "Basic oder ST?"


.
Meine Antwort bezog sich auf die Definition von BASIC. Das Automation Basic ist entfernt mit der *Programmiersprache* *BASIC* verwant. _Automation Basic_ soll eine einfache Programmierung suggerieren. Ist ja auch so. Ich finde aber das sie C wesentlich ähnlicher, wenn auch etwas einfacher, ist.



> dieser meinte damit sicher keine Programmiersprache mit der sich die SPS definitv *nicht* programmieren lässt.


Ich habe *nie* behauptet das ich die SPS damit Programmieren kann. Ich habe geschrieben dass ich sie steuern kann

mfg thovi


----------



## harrylask (17 März 2009)

Hallo thovi,



> ich könnte jetzt auch die KLUGSCHEISS Variante wählen tue ich aber nicht.



Was wolltest du dann mit dem letzten Posting bezwecken?



> Ich habe nie behauptet das ich die SPS damit Programmieren kann. Ich habe geschrieben dass ich sie steuern kann



In diesem Thread stand nicht die Definition von Basic zur Debatte. Auch wenn die Frage des Themenstellers schon beantwortet wurde muss ein Thread nicht mit themenfremden Müll belastet werden. Mach einen Neuen auf falls du es für diskussionswürdig hältst. Abgesehen davon, um ein viel strapaziertes Zitat eines eifrigen Forenmitglieds zu verwenden ...  "Lesen soll man können" ... manchmal auch zwischen den Zeilen!

Grüsse, harrylask


----------



## thovi (17 März 2009)

harrylask schrieb:


> "Lesen soll man können" ... manchmal auch zwischen den Zeilen!


 
Das gebe ich hiermit zurück. ENDE


----------

