Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Results 1 to 5 of 5

Thread: bitmuster verbreitern/schmälen (vorlauf/nachlauf)

  1. #1
    Join Date
    16.06.2003
    Location
    88356 Ostrach
    Posts
    5,043
    Danke
    1,354
    Erhielt 1,184 Danke für 561 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    hallo,

    wenn ich zb folgendes bitmuster habe:

    Code:
    00000000011110000000001111110000
    die bereiche in denen eine 1 steht will ich zb um 2 verbreitern,
    also so:

    Code:
    00000001111111100000111111111100
    dann kann ich das ja machen in dem ich das dw in einer
    schleife immer um eine stelle nach links bzw. nach rechts schiebe, und akku1 mit akku2 verodere, aber wenn ich den bereich stark vergrößern will hab ich ne schleife die sehr viel zykluszeit frisst...

    deshalb wollte ich mal die mathefreaks hier fragen ob das nicht einfacher oder eleganter geht. darf auch kompliziert aussehen, wie das programm für andere nachvollziehbar ist ist nicht so wichtig. aber einspaarungen in der zykluszeit schon...

    (ich muss in der schleife mehrere dw verodern.
    Reply With Quote Reply With Quote bitmuster verbreitern/schmälen (vorlauf/nachlauf)  

  2. #2
    Join Date
    19.06.2003
    Posts
    2,299
    Danke
    85
    Erhielt 274 Danke für 179 Beiträge

    Default

    Rezept (kein Code):

    1. Du schiebst das Wort (oder Doppelwort, hab nich gezählt) rechts oder links, Richtung egal, da du ja symmetrisch "verbreitern" willst.
    2. Nach jedem Schiebeschritt kontrollierst du die oder-Verknüpfung des 1.,2. und 3. Bits., z.B. bei Rechtsschieben x.0,x.1,x.2
    Ergibt das 1, kopierst Du eine 1 in die höchste Stelle eines Ergebnisdatenworts, sonst eine 0, d.h. Du kopierst das Ergenis des Oders dorthin.
    Beispiel:
    U M4.0
    0 M4.1
    0 M4.2
    =M8.15
    3. Du schiebst das Ergebnis-Wort (oder Doppelwort) rechts oder links, Richtung wie beim Ausgangswort.
    4. Du wiederholst 1-3 sooft, wie die Worte Bits haben.

  3. #3
    Markus's Avatar
    Markus is offline Administrator
    Themenstarter
    Join Date
    16.06.2003
    Location
    88356 Ostrach
    Posts
    5,043
    Danke
    1,354
    Erhielt 1,184 Danke für 561 Beiträge

    Default

    danke,

    aber:

    1. ich habs nicht wirklich kappiert (was ist m8.15)
    2. die lösung die ich gepostet habe scheint da doch eifacher zu sein.

    im prinzip will ich von der schleife wegkommen...

  4. #4
    Join Date
    19.06.2003
    Posts
    2,299
    Danke
    85
    Erhielt 274 Danke für 179 Beiträge

    Default

    M8.15 sollte M9.7 heissen, ist einfach der höchste Merker
    bei 16-bit, Wenn das Ergebnis z.B.im MW8 stünde.

    Ok, geht auch einfacher, sorry:

    Originalwort mit links geschobener und rechts geschobener Kopie verodern, verbreitert die Einsen rechts und links um 1. Für Breite 2 2 mal machen.

    Wenn Du sicher sein kannst, dass das Muster immer mindestens
    2 Einsen nebeneinader aufweist, müsste man auch gleich um 2 schieben können:
    000011000
    001100000
    000000110
    --------- oder
    001111110

    Wo steht deine Lösung?

  5. #5
    Markus's Avatar
    Markus is offline Administrator
    Themenstarter
    Join Date
    16.06.2003
    Location
    88356 Ostrach
    Posts
    5,043
    Danke
    1,354
    Erhielt 1,184 Danke für 561 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    die lösung steht doch in meinem ersten post.
    dann kann ich das ja machen in dem ich das dw in einer
    schleife immer um eine stelle nach links bzw. nach rechts schiebe, und akku1 mit akku2 verodere, aber wenn ich den bereich stark vergrößern will hab ich ne schleife die sehr viel zykluszeit frisst...
    ne ich darf immer nur um eine stelle schieben, ist verschieden.

    hab aber deine lösung nochmal angeschaut, habs jetzt verstanden.

    es handelt sich dabei um dws d.h. bei deiner lösung würde die schleife jedesmal 32 umläufe haben.

    bei mir nur soviele wie ich das muster verbreitern will.

    prinzipiell würden beide lösungen funktionieren, und deine gefällt mir auch ganz gut weil die zykluszeit (schleifendurchläufe) stabil wäre.

    bei mir wäre sie von der verbreiterung abhängig...
    und sobald ich um mehr wie 32 verbreitere hätte ich mehr durchläufe...

    (das bitmuster ist 7 dw breit)


    aber eigentlich wollte ich weg von den schleifen, und dachte das es irgeneine rafinierte formel oder sowas gibt...

    trotzdem danke, hat mich auf einen etwas anderen weg gebracht...[/code]

Similar Threads

  1. Replies: 4
    Last Post: 21.05.2014, 14:13
  2. Step 7 Taktmerker nach Bitmuster
    By Reckers in forum Simatic
    Replies: 9
    Last Post: 26.11.2013, 14:35
  3. Aus Hex Zahl wieder Bitmuster machen
    By Deimos0815 in forum Simatic
    Replies: 17
    Last Post: 17.08.2011, 10:34
  4. Bitmuster Puzzel
    By doelckenbeck in forum Programmierstrategien
    Replies: 10
    Last Post: 09.08.2010, 10:19
  5. Bitmuster
    By AdrianS in forum Simatic
    Replies: 5
    Last Post: 06.10.2007, 15:23

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •