HEX erzeugen für FU Steuerwort (Profibus)

BodyKra

Level-1
Beiträge
72
Reaktionspunkte
5
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich suche einen Ansatz um für einen Danfoss FC 302 das Steuerwort zu erzeugen. Dieses muss als WORD (HEX) erzeugt werden. Da ja jedes Bit
eine FU Steuerfunktion . Habe bis jetzt jedes Steuerwort Ausgerechnet und in einen DB abgelegt. und lade mir dann denn gebrauchten wert heraus:

zb:
Start =W#16#047C
Stop =W#16#0474
Reviesierung=W#16#847C

dies ist aber zu umständlich.ich würde lieber direkt die einzelnen Bits ein-bzw ausschalten und das da durch automatisch das Richtige HEX erzeugt wird.

Bin S7 Einsteiger Arbeite mit einer VIPA CPU 313SC/DPM und MHJ-Software WinSPS-V4 und Danfoss FU FC302
Kommunikation via Profibus

Gruß Andy :confused:
 
Zuletzt bearbeitet:
einfachste möglichkeit: die bits eines merkerworts beeinflußen ... dazu muß man natürlich wissen wie der speicherbereich aufgebaut ist ... wort=2byte=16bit ..alle über ihre bitadresse ansprechbar
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das mit dem bit aufbau ist mir bewusst.

aber ich suche eine elegantere variante den HEX zu erzeugen

zb. im MW0 soll der bit M0.4 geändert werden kann ich den bit einfach mit zb. SR Setzen oder Rücksetzen und wie kann ich aus dem MW0 den HEX erzeugen

Binär:
Vorher 0000010001111100
Nachher 0000010001110100
(R nach L lesen)
 
du kannst das bit einfach setzen und rücksetzen. der wert des MW0 ändert sich dann, egal ob du es dir dual, dezimal oder hex-codiert anzeigen läßt, der FU wird es richtig interpretieren.


das mit dem merker ist, wie gesagt, die einfache lösung ... wenn du an etwas eleganteren interessiert bist, schau mal in die FAQ pointer zeiger fifo lifo
 
Versteh ich nicht wirklich...

Hallo,

BodyKra schrieb:
Start =W#16#047C
Stop =W#16#0474
Reviesierung=W#16#847C

dies ist aber zu umständlich.ich würde lieber direkt die einzelnen Bits ein-bzw ausschalten und das da durch automatisch das Richtige HEX erzeugt wird.

Also ich kann dein Problem nicht wirklich nachvollziehen. Das Ein/ausschalten der Bits kannst du über logische Funktionen wie "AND" b.z.w. "OR", "XOR" u.s.w. natürlich steuern, aber das ist nun mal wesentlich umständlicher als die von Dir bemängelte Lösung über eine feste (und gut dokumentierte)Zuweisung z.B. "Stop =W#16#0474" ?
Vielleicht ein selbstgemachtes Problem als Anfänger ?

Gruß

Question_mark
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du musst erst mal verstehen das HEX nur ein Anzeigeformat ist.

z.B.
Code:
.
MW0  BIN 2#0000_0100_1000_1100 
MW0  HEX W#16#048C W#16#048C
MW0  DEZ 1164

also wenn du Binär änders ändern sich automatisch auch HEX und DEZ oder welches Anzeigeformat auch immer gewählt wurde.

Wie 4l schon geschrieben hat, der FU wird es interpretieren.

Gruß
Sven_HH
 
OK aber was ist mit dem Sollwert der ist ja von 0000-4000HEX (0-100%) der muss doch bestimmt noch in INT umgewandelt werden Damit ich ihn scalieren und verarbeiten kann.
 
@Bodykra
Auch hier ist es wieder nur eine Darstellung und keine Wandlung!

16#0 - 16#4000 = 0 - 16384

Mfg
Manuel
 
aber das ist nun mal wesentlich umständlicher als die von Dir bemängelte Lösung über eine feste (und gut dokumentierte)Zuweisung z.B. "Stop =W#16#0474" ?

hmm, was sich der kollege qm da wieder bei gedacht hat :confused:

start ist w#16#047C ist 10001111100
stop ist w#16#0474 ist 10001110100

so und nun sag mir warum ein

Code:
*
      U     E      0.0     //Start
      S     M      1.3
      UN    E      0.1     //Stop
      R     M      1.3
komplizierter sein soll als ein

Code:
*
      U     E      0.0     //Start
      SPBN  _001
      L     W#16#47C
_001: UN    E      0.1     //Stop
      SPBN  _002
      L     W#16#474
_002: T     MW     0
:confused:
 
Zuletzt bearbeitet:
@4L:
Schreibst du immer Hex-Codes wenn du das Steuerwort eines FU oder Servo's "befruchten" willst ...?
Ich löse das generell auch Binär - ist m.E. auch übersichtlicher ...

Gruß
LL
 
Zurück
Oben