AVR wie Siemens Programmieren geht das?

Gast #1838272
Lesenswert?

@GBZ-Oholiker

Wie Siemens S5 oder S7?

Schau mal auf Muff-electronic.ch

Dafür habe ich ein Hutschienenlayout gemacht.
Optokoppler-In, ULN2003-Out, RS232-Programmierinterface, LCD und 
I2C-Anschluß.

Gruß Helmut
#1838294
Lesenswert?

Grrrr schrieb:
> Peter Dannegger schrieb:
>> Warscheinlich schon, wenn es einem nichts ausmacht, die Möglichkeiten
>> eines MC nichtmal zu 5% ausnutzen zu können.
>
> Magst Du das bitte näher begründen, Peter?
Ich bin zwar nich Peter, aber ich versuch's dennoch mal :)
Schreibe mal
1
lcdptr = &LCDM1;
2
*(lcdptr+(unsigned char)((seg>>8) & 0xff)) |= (unsigned char)(seg&0xff);
ähnlich effektiv in irgendeiner SPS-Sprache oder Flowcode.
Anderes Beispiel mit Bitophorror:
1
PORTB = (((blinksrc & (1<<S_FAST))>>S_FAST)<<PB2)|(PORTB & ~(1<<PB2));
So etwas kann man IMHO nicht ohne weiteres Graphisch ähnlich effizient 
umsetzen.
Gast #1838315
Lesenswert?

Ja, ich gebe dir Recht und wahrscheinlich meint Peter es auch.

Nur der Eine oder Andere versteht die Sprache nicht und kann es visuell 
so einfacher umsetzten, sprich verstehen.

Warum kann man dann nicht einfach nur 5 % ausnutzen, dabei aber 100% 
Nutzen haben?

Auf die Speicher oder Ausnützung der Möglichkeiten kommt es nicht immer 
an.

Ich würde da keine Unterschiede in der Bewertung der Ansprüche machen 
wollen, das Ergebniss zählt.

Gruß Helmut
Gast #1838321
Lesenswert?

@ Luk4s K.

Bei aller Wertschätzung Deines Beitrages hast Du eine Frage beantwortet, 
die so garnicht gestellt wurde. Genauer betrachtet hast Du nur eine neue 
Frage gestellt.
Aber formuliere ich sie so um, das sie eine Antwort ist, dann lautet 
sie: Du kannst obige Ausdrücke nicht graphisch effizient umsetzen.

Abgesehen davon, was denn "graphisch effizient" sein soll, kranken Deine 
Beispiele daran, das sie vernachlässigen, das die Bitschieberei hier 
letztlich nur der Bitauswahl dient, was man in SPS eigentlich durch 
Benennung macht; man hat es also garnicht nötig die Bitschieberei 
explizit hinzuschreiben.

Sowohl der erste und der zweite Ausdruck würden dann schliesslich die 
Oder-Verknüpfung von 8 Bit parallel bzw. das kopieren/weiterleiten eines 
Bits sein.´Viele Werte darin sind ohnehin nur Konstanten. (1<<S_FAST), 
(1<<PB2), etc.

Die Frage hat aber sowieso anders gelautet. Nämlich: Warum kann man die 
Möglichkeiten einer CPU mit so einer graphischen Beschreibungssprache 
nur zu 5% oder weniger nutzen?
#1838325
Lesenswert?

MaWin schrieb:
>> PORTB = (((blinksrc & (1<<S_FAST))>>S_FAST)<<PB2)|(PORTB & ~(1<<PB2));
>
> blinksrc: BYTE;
> blink AT blinksrc: ARRAY [0..7] OF BOOL;
>
> A1.2 = blink[S_FAST]   ??

Wie meinen?
Die Bitop hat die Aufgabe das Bit S_FAST aus blinksrc nach PB2 in PORTB 
zu kopieren.
Grrrr schrieb:
> Warum kann man die
> Möglichkeiten einer CPU mit so einer graphischen Beschreibungssprache
> nur zu 5% oder weniger nutzen?

Ich habe dies so aufgefasst, dass eine graphische Beschreibungssprache 
weniger effizienten Assemblercode als ein C-Compiler; sicher lassen sich 
meine Beispiele auch mit SPSen realisieren, nur was macht der Compiler 
draus?
Gast #1838330
Lesenswert?

Nein,

keiner hat in diesem Fall Recht, sondern will Recht haben!

die Frage war:


gibt es eine Möglichkeit um einen AVR wie Siemens mit Logiksymbolen zu
Programmieren ohne das man eine Programmiersprache wie C, C++, Basic
usw. können muss?


Diese simple Frage wird nicht beantwortet, sondern es nur Kommentare 
abgegeben!
Gast #1838331
Lesenswert?

Und genau das tut diese (Siemens STEP 7) SCP Anweisung,
man muß bei SPS nicht irgendwelche blödsinnige Bitfummelei machen,
bloss um ein einzelnen Ausgangsleitung beeinflussen zu können,
und man muß nicht irgendwelche undurchsichtigen Bitfummeleien machen, um 
auf eine simple gespeicherte BITfolge zugreifen zu können.

Es ist so einfach:

A1.2 = blink[index]

Vergiss deine C-Programmierung obfuscation
#1838489
Lesenswert?

Grrrr schrieb:
> Peter Dannegger schrieb:
>> Warscheinlich schon, wenn es einem nichts ausmacht, die Möglichkeiten
>> eines MC nichtmal zu 5% ausnutzen zu können.
>
> Magst Du das bitte näher begründen, Peter?

Schaltplaneingabe ist eine parallele Darstellung.
Ein MC kann aber nix parallel machen, sondern muß alles in Zeitscheiben 
einteilen und hintereinander machen. Und damit reduziert sich die 
Abarbeitungsgeschwindigkeit drastisch.
Es ist etwas ähnlich zu einem RTOS, bloß hat ein RTOS noch viele 
Möglichkeiten, die Abarbeitung zu steuern (Prioritäten usw.).

Eine weitere Sache ist, daß Peripherieeinheiten (Timer usw.) oft 
verschiedene Sachen kombinieren. Für ein Schaltplantool stelle ich mir 
das schwierig vor. D.h. ist im Schaltplan ein Timer z.B. mit PWM belegt, 
kann er nicht mehr als Input-Capture benutzt werden. In einem C-Programm 
geht das aber.

Man kann also weder die CPU-Geschwindigkeit noch die Peripherie optimal 
ausnutzen.

Daß sich viele Sachen (z.B. Protokolle) als Schaltplan nur sehr 
umständlich ausdrücken lassen, kommt noch hinzu.


Peter

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren