Systemtakt bei B&R

taktmerker gibts nich. aber da deine task in einer bestimmten zeitscheibe aufgerufen werden ist es ein leichtes "taktmerker" zu generieren.
zb. lampentakt generiert in TK1 (10msec)

Code:
#include <bur/plctypes.h>

_GLOBAL UINT cTakt;
_GLOBAL BOOL Lampentakt;

_CYCLIC void cyclic(void)
{
  if (!(++cTakt<100))
    cTakt=0;

  Lampentakt=cTakt<50;
}
 
Also ich hab mir jetzt selbst etwas gebastelt, und zwar über den SystemTick!
Das ist diese Funktion, die im ms bereich hochzählt.

Das ganze sieht dann so aus:

Code:
_LOCAL TIME zeit;
_LOCAL plcbit mTakt, bWasInit;

void _INIT vInitModule(void)
{
	bWasInit = 1;
}

void _CYCLIC vCyclicModule( void )
{
	zeit = clock_ms ();
	/*Mein Taktmerker*/
	counter = clock_ms();
	
	if (bWasInit)
	{
		bWasInit = 0;
		oldcounter = counter;
	}
		
	if (counter == (oldcounter + 400))
	{
		mTakt = !mTakt;
		oldcounter = counter;
	}
}


[\code]

Denke zwar nicht, dass das jetzt  die Ultimative Lösung ist, aber wenigstens mal ein Diskutabler ansatz.

MFG

Markus
 
@ Gast:

Die Lösung von harrylask ist mir etwas zu unsicher, ich brauche aber einen Takt.

Wenn du aber eine einfachere Lösung hast, dann sind wir hier alle offen dafür!

MFG

Markus
 
Was mir hier auffällt:

Verwenden eigentlich alle hier, die mit B&R arbeiten, hauptsächlich Ansi-C?

Ich hab heuer ein größeres Projekt mit B&R gemacht, und der größte Wunsch vom Kunden war, auf keinen Fall C als Programmiersprache zu verwenden!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bei mir steht im (Basis)Taktmerker nur

bgTakt100:= NOT(bgTakt100)
Das Ding blinkt somit mit der Taskzeit zB 100msec,
oder es gibt halt das 2 Timergebilde.

In meinem Umfeld programmieren die Leute mit 'Automation Basic', das wird dem Anwender auch
beim Start mit B&R von den Trainern so eingetrichtert.

Selber verwende ich vermehrt ST - weil es das 3S ST ist und der Code dann zu Codesys + Derivate und TwinCAT passt.

Kurt
 
Maxl schrieb:
Was mir hier auffällt:

Verwenden eigentlich alle hier, die mit B&R arbeiten, hauptsächlich Ansi-C?

Ich hab heuer ein größeres Projekt mit B&R gemacht, und der größte Wunsch vom Kunden war, auf keinen Fall C als Programmiersprache zu verwenden!

Ich benutze hauptsächlich Automation Basic. C hat den Vorteil, das man einen Quellcode mehrmals aufrufen kann, ähnlich wie bei einem FC/FB in Siemens. So braucht man nur in einem Baustein zu ändern, anstatt in 10.

Nachteil von C: Die Doku von B&R ist noch schlechter als die sowieso schon bescheidene.

pt
 
Zum Thema C:

Ich komme aus der Siemens Ecke, und hab dann erst versucht mit der IEC zu programmieren, was mich aber schier in den Wahnsinn getrieben hat, da nix so funktioniert hat, wie man es gewohnt war. Dann habe ich mich dazu entschlossen die B&R sachen alle in C zu machen.

@plc tippser:

Ich finde die B&R Doku im Vergleich zu anderen Herstellern sehr gut. Sie wird zwar nie das Siemens niveau erreichen, aber es lässt sich schon damit arbeiten. Ich habe zur Zeit eine Beta-Version des AS hier, aber auch hier is die Hilfe schon relativ gut ausgearbeitet. Hin und wieder etwas Buggy, aber es geht.

Was mir wirklich Abgeht sind Beispielprogramme und klare aussagen, welche Library ich dann und wann einfügen muss. Aber wenn ich die Herren vom Support noch 5 mal Anrufe und nerve, dann kommt das bestimmt bald.


MFG

Markus
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Doku ist zum Teil gut, ok. Aber such mal eine Beschreibung zu einem Fehlercode. Dann öffnet sich eine Seite, kein Eintrag und ein Link ins Nichts.

Ich weiß, es gibt viel viel schlimmer Hersteller und nutze die B&R sehr gerne, man hat halt so gut wie alle Vorzüge der Hochsprache.

pt
 
Ich finde die B&R Doku im Vergleich zu anderen Herstellern sehr gut. Sie wird zwar nie das Siemens niveau erreichen, aber es lässt sich schon damit arbeiten. Ich habe zur Zeit eine Beta-Version des AS hier, aber auch hier is die Hilfe schon relativ gut ausgearbeitet. Hin und wieder etwas Buggy, aber es geht.

ich bin meistens frustriert wenn ich in der hilfe nachlesen muss, die alten dokus von ihnen waren um welten besser.

Was mir wirklich Abgeht sind Beispielprogramme und klare aussagen, welche Library ich dann und wann einfügen muss. Aber wenn ich die Herren vom Support noch 5 mal Anrufe und nerve, dann kommt das bestimmt bald.

was mich an ihren libraries stört ist dass
- sie unheitlich sind
- sie manchmal unheimlich besch.... zu bedienen sind (zb. io_lib)
- sie, wieder mal, schlecht beschrieben sind (ihre beispiele sind zum teil lächerlich)

Die Lösung von harrylask ist mir etwas zu unsicher, ich brauche aber einen Takt.

findest du? in automation basic würde das in etwa so aussehen

Code:
(* cyclic program *)
cT_1Sek = cT_1Sek + 1

if (not (cT_1Sek <= 100)) then
	cT_1Sek = 0
endif

T_1Sek = cT_1Sek < 50

es funktioniert wunderbar. für einfache zeiten benutze ich stets zähler die auf der zykluszeit der verwendeten taskklasse aufsetzen. sollte es abweichungen zur "echtzeit" geben, sind sie mir bis dato nicht aufgefallen und deshalb, für mich, vernachlässigbar.

Ich komme aus der Siemens Ecke, und hab dann erst versucht mit der IEC zu programmieren, was mich aber schier in den Wahnsinn getrieben hat, da nix so funktioniert hat, wie man es gewohnt war. Dann habe ich mich dazu entschlossen die B&R sachen alle in C zu machen.

anfänglichs hab ich auch keine vorteile gesehen, auch nicht nach dem ersten projekt in c bei dem ganz schön geschwitzt hatte. aber, wie so oft, mit der zeit gings immer besser und heute will ichs nicht mehr missen.

grüsse, harry
 
Die Doku ist zum Teil gut, ok. Aber such mal eine Beschreibung zu einem Fehlercode. Dann öffnet sich eine Seite, kein Eintrag und ein Link ins Nichts.

das hat seinen grund, du kannst zu jedem fehler eigene notizen hinzufügen (siehe hilfe>projektierung und support>support>b&r fehlernummernübersicht>system)

grüsse, harry
 
Zurück
Oben