OSCAT-Hilfe

CBRA

Level-1
Beiträge
22
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

zwar hab ich das Forum schon durchsucht und auch schon Hilfe won einem von euch zu einem Teilproblem erhalten. Jetzt hab ich doch noch ein Problem mit diesen CRC_GEN und CRC_Check Bausteinen aus OSCAT.
Der Generierungsbaustein funktioniert, aber es kommen nicht die Werte die ich denke zu bekommen. Auch ist es mir nicht möglich berechnete Hi- und Lo-Bytes anschließend zum I-DB zu schicken.

Kann sich jemand mal das DING anschauen und ggf. auch darin rumwusseln.

Wäre euch sehr dankbar dafür.
Übrigens ist die OSCAT_LIB sehr zu empfehlen, hab schon viele Teile angewendet. Die haben auch geklappt.

Ich hab als Anlage mal das Projekt (S7-Format) angehangen.
 

Anhänge

  • CRC_TEST_ZIP.ZIP
    20,8 KB · Aufrufe: 35
Hi

Also nur mal so kurz, was mir auf die schnelle aufgefallen ist:

DW#16#98309 ist NICHT das Polynom für CRC-16-IBM

Willst du die Eingabe in Hex machen --> 8005





 
Zuletzt bearbeitet:
Danke

Hallo Karl,

schön das du Zeit hast, dir das DING mal anzuschauen.

Das mit DW#16#00018005 hab ich eingegeben. Leider wurde zwar was berechnet, aber nicht das was ich erwartet hab. Raus kommt DW#16#00340004, schade. Was kann da falsch sein?

Ich hab da ein kleines Programm, mit dem ich das ganze austesten kann. Liegt in der Anlage. Das verwende ich auf Arbeit.

Beispiel:
Mein zu berechnendes Telegramm besteht aus drei Bytes (0Dh 00h 01h), dann erwarte ich ein hi-Byte mit C3h und ein Lo-Byte mit 21h. Somit lautet das zu sendende Telegramm 0Dh 00h 01h C3h 21h.
 

Anhänge

  • crc.zip
    18 KB · Aufrufe: 12
hallo leute,

ihr habt recht der baustein crc_gen generiert falsche werte, bin auch gerade am testen. in dieser woche noch wird es die oscat lib 21 für die s7 geben in dieser wird dann der korrekt funktionierende baustein vorhanden sein.

mfg
daniel
 
Hi CBRA

Es muss zusätzlich eine Initialisierungsvariable mit in deinem Code
(Hex FFFF) programiert werden.

Anbei ein Hardcopy eines Links mit dessen Vorbesetzungen.
 

Anhänge

  • CRC_Info.zip
    658,4 KB · Aufrufe: 30
Hi

Gerade ist mein Kumpel da.

Er sagt, das Protokoll ist das für den MODBUS.

16 bit, Polynom 8005, Initwert FFFF, Check 4B37
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo gravieren,

danke erstmal für die Information.

Leider ist mir unbekannt wo ich diesen Initialisierungswert eintragen muss.

Hast du eine Idee???:confused:
 
Hi

Leider ist mir unbekannt wo ich diesen Initialisierungswert eintragen muss.
Mir auch :cool:

Momentan gibt es KEINE Möglichkeit dafür.
(Modbus benötigt das jedoch)

Ich werde mich mal darum kümmern, jedoch ist das KEINE verbindliche Zusage.

Ich werde mich bis Mittwoch bei dir rühren.
 
Also mein CRC für Modbus (auf Codesys) sieht so aus:

Code:
FUNCTION CRC16a : WORD        (* Bildet die CRC16-Summe von einem Byte-Array      *)
VAR_INPUT
 ptabInput: POINTER TO ARRAY[0..20] OF BYTE;  (* Zeiger auf das Array, von dem die Checksumme gebildet werden soll *)
 byteLen: BYTE;          (* Anzahl der Bytes, von denen die Checksumme gebildet werden soll *)
 bSwap: BOOL;          (* Wenn wahr dann werden die Bytes im Ergebnis vertauscht    *)
END_VAR
VAR
 XorConstant: WORD := 16#A001;
 n: INT;
 o: INT;
END_VAR


Code:
CRC16a:=16#FFFF;
FOR n:= 0 TO byteLen-1 DO
CRC16a:=CRC16a XOR ptabInput^[n];
 FOR o:= 1 TO 8 DO
  IF CRC16a.0 THEN
  CRC16a:=XorConstant XOR (SHR(CRC16a,1));
  CRC16a.15:= XorConstant.15;
  ELSE
  CRC16a:=SHR(CRC16a,1);
  END_IF
 END_FOR
END_FOR
IF bSwap THEN
CRC16a:=SHR(CRC16a,8) OR SHL(CRC16a,8);
END_IF

Das bSwap kann ggf.auch entfallen, kommt drauf an wie die Bytes vom Ergebnis im weiteren Programm verwendet werden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Obercheffe,

danke für deine Informationen zum Thema.

Jetzt habe ich einen Ansatz, um mein Problem lösen zu können. Jedoch besteht nun noch ein weiteres Problemchen für mich. Ich arbeite nicht mit Codesys und bin auch nicht mit der Hochsprachenprogrammierung vertraut. Derzeit arbeite ich mit WINPLC7 bzw. Step7 und das in FUP bzw. KOP. Bei AWL komme ich langsam rein. Nun werde ich versuchen dein Skript in FUP umzusetzen und es testen.

Die Eingangsparameter und die Temp-Parameter lassen sich sicherlich leicht in den Deklarationsbereich einsetzen. Beim Umsetzen des Ablauf in deiner unteren Tabelle sehe ich da Schwierigkeiten auf mich zukommen.:(

Frage an dich, hast du das Skript auch in FUP bzw. KOP?:rolleyes:

Bin auch jetzt erstmal eine weile (bis nächsten Mittwoch) nicht online, da rüber nach Berlin arbeiten.

Danke nochmals für deine Mühen und deine Hilfestellung.
 
also das macht Codesys bei Umwandlung in AWL draus:

Code:
 LD  65535
ST  CRC16a
LD  0
ST  n
for1_0:
LD  n
GT(  byteLen
SUB  1
)
JMPC  endfor1_0
LD  CRC16a
XOR  [n]
ST  CRC16a
LD  1
ST  o
for2_0:
LD  o
GT  8
JMPC  endfor2_0
LD  CRC16a.0
NOT
JMPC  else3_0
LD  XorConstant
XOR(  CRC16a
SHR  1
)
ST  CRC16a
LD  XorConstant.15
ST  CRC16a.15
JMP  end3_0
else3_0:
LD  CRC16a
SHR  1
ST  CRC16a
end3_0:
LD  o
ADD  1
ST  o
JMP  for2_0
endfor2_0:
LD  n
ADD  1
ST  n
JMP  for1_0
endfor1_0:
LDN  bSwap
JMPC  else4_0
LD  CRC16a
SHR  8
OR(  CRC16a
SHL  8
)
ST  CRC16a
else4_0:
end4_0:

ist mit Sicherheit nicht schön, FUP dürfte noch schlimmer sein.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo CBRA,

wir haben die Bausteine CRC_CHECK u. CRC_GEN noch etwas angepasst.
Anbei ein kleines Beispiel Projekt zum testen.

Der Baustein liefert jetzt die selben Ergebnisse wie der CRC Generator unter
folgender URL: http://www.zorc.breitbandkatze.de/crc.html


MfG
Daniel
 

Anhänge

  • CRC.zip
    45,8 KB · Aufrufe: 60
OSCAT Ltime Systemfehler

Hallo ! ich habe Schwierigkeiten beim implementieren
von OSCAT Bausteinen in mein S7 Programm.

Folgende Module wollte ich implementieren:
Ltime, Holiday,Sun_time

Habe die Bausteine in einem FC1 zusammengefasst
& auch die entsprechenden Instanz DB's erstellt.
Auch die entsprechenden Eingangssignale sind projektiert:
DATE_AND_TIME/TOD/DATE etc... soweit kein problem.

Nach dem Download in die CPU geht die Steuerung in SF.
Egal welches der OSCAT Module ich aktiviere.

Ich habe SCL nicht installiert. Kann das der Grund sein ?

Vielen Dank ! Andreas.
 
Hallo Andreas,

die Funktionen nutzen intern noch folgende Bausteine:

Ltime
oscat/Time&Date/DST
oscat/Time&Date/weekday
S7/Standard Library/IEC Function Blocks/DT_DATE
S7/Standard Library/IEC Function Blocks/DT_TOD

holiday
oscat/Time&Date/year
oscat/Time&Date/month
oscat/Time&Date/set_Date
oscat/Time&Date/date_add
oscat/Time&Date/weekday
oscat/Time&Date/day_of_month
S7/Standard Library/IEC Function Blocks/D_TOD_DT
S7/Standard Library/IEC Function Blocks/DT_DATE

sun_time
oscat/Time&Date/hour_to_tod
oscat/Time&Date/day_of_year
S7/Standard Library/IEC Function Blocks/D_TOD_DT
S7/Standard Library/IEC Function Blocks/DT_DATE

das steht jeweils auch im Bausteinkommentar
-> Rechts klick auf Baustein/Objekteigenschaften
hier dann der Reiter "Allgemein - Teil 1" Kommentar

MfG
Daniel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hmmmm...

Hi Daniel,
Herzlichen Dank für das schnelle Feedback.

ich muss wohl irgendetwas grundsätzliches falsch machen.

ich habe mich mal auf Ltime konzentriert & alle erforderlichen
Bausteine in den OB1 geschoben. d.h.:
READ_CLK funktioniert
DT_TOD funktioniert
DT_DATE funktioniert
DST, Weekday, Ltime: sobald irgendeiner dieser Bausteine enabeld
wird kommt ein SF & die CPU geht in stop. CPU315 Vers. 1AF02 OABO

D.h. alle Bausteine lassen sich in die SPS dowloaden, aber sobald
ein Zugriff auf einen der OSCAT Bausteine über das Programm erfolgt,
geht die CPU in Störung.

Noch mal Herzlichen Dank ! Andreas.
 
;-)

Gerne !

S7-programm(1) zeigt den Test mit Ltime
S7-programm(2) ist das eigentliche Anwenderprogramm,
wie es nachher eingesetzt werden soll.

Herzlichen Dank im Vorraus !!! Andreas.
 

Anhänge

  • Hst-ag-f.zip
    322,6 KB · Aufrufe: 30
Zurück
Oben