USB Massenspeicher Ansteuerung B&R PP520

Boraas

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!

Ich habe ein 5PP520 und will beim IF7 auf einen USB-Stick zugreifen.
Hab mit asUSB schon rausgefunden das es Dynamisch vergeben wird. Also /bd0 beim ersten USB Stick.
Zu meinem Problem:

Ich erstelle ein FileDevice mit DeviceLink() was laut .status auch wunderbar klappt.
Danach will ich ein bestimmtes Directory abfragen das auf dem Stick sein sollte und zwar mit DirInfo.
Und dieser sagt mir mit .status dauernd 20709 (pDevice ist zu lang oder NULL , fiERR_FILE_DEVICE ) bzw einmal hab ichs geschafft das er das FileDevice angenommen hat und da hat er
20723 (fiERR_DIR_NOT_EXIST , Verzeichnis existiert nicht) gebracht.
Das Verzeichnis ist jedenfalls auf dem Stick und unter Windows funktionierte das Programm auch mit dem fixen FileDevice über die HW wunderbar.
Jetzt auf dem PP komm ich wies scheint mit der Dynamischen Belegung bzw der Ordner Hierarchie nicht klar.

Der Code Lautet wie folgt (Auszug):

case 4:


fDevLink.enable = 1;
fDevLink.pDevice = (UDINT) "USBIF7";
fDevLink.pParam = (UDINT) "/DEVICE=/bd0";
DevLink(&fDevLink);


if(fDevLink.status == 0 || fDevLink.status == 20730){
byStepDL = 1;
bStepDLOK = 1;
}
else if(fDevLink.status != 65535){
bStepDLOK = 0;
iSysError = FileIoGetSysError();
iErrorCode = 14;
byStepError = 111;
}
break;

.
.
.
.

case 1:
iRunLevel = 10;

fDirInfo.enable = 1;fDirInfo.pDevice = (UDINT) File.DevPath; //da Steht "USBIF7" drinnen
fDirInfo.pPath = (UDINT) File.LibPath; // Ordner am Stick ist unter windows M:\MedienBibliothek\. LibPath eingegeben als "\\Medienbibliothek\\"
DirInfo(&fDirInfo);

if(fDirInfo.status == 20723)
byStepCP = 2;
else if(fDirInfo.status == 0)
byStepCP = 7;
else if(fDirInfo.status != 65535){
iErrorCode = 3;
byStepError = 1;
byStepCP = 0;
}
break;


Ende

Die 2 Cases sind aus 2 versch. Programmteilen werden aber sofort nacheinander (im gleichen Zyklus und als nächste Operation) abgearbeitet.
Stick hab ich versucht 32GB FAT32 und 4GB FAT. Beide gleiches Ergebnis.
Sticks wurden umbenannt in USBIF7.
Habs auch mit dem FileDevice in der HW versucht mit /DEVICE=/bd0 und dabei das DeviceLink auskommentiert.
Gleiches Ergebnis.

Vielleicht hat jemand eine Idee und kann mir weiterhelfen.
Wette ich überseh wieder was ganz einfaches :p

Vielen Dank im voraus!
 
Hi,

Auszug aus der Hilfe:
Ab dem AR 4.x werden USB Geräte dynamisch im AR eingebunden und sind daher im
Automation Studio nicht mehr zu projektieren. Um ein USB Gerät verwenden zu
können, muss zur Laufzeit sein interner Devicename ermittelt werden, der für die
Erzeugung des Device-Handles mit dem FUB DevLink() benötigt wird. Anschließend
kann das USB Gerät wie bisher verwendet werden. Der interne Devicename wird mit
der AsUSB Bibliothek bestimmt. Ein Beispiel dazu findet sich in der AS Hilfe bei
der Bibliothek AsUSB -
Beispiele
).

Also bei mir funktioniert das mit dem Beispiel ohne Probleme, Stick Größe 8GB.
Derzeit verwende ich aber auch nur ein USB-Gerät.
Aber das Beispiel sucht sich dann den Stick an dem richtigen Port.

SG
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie gesagt den Devicenamen des USB Sticks hab ich schon zur Laufzeit ermittelt. Mit asUSB und da ist er /bd0.
Damit hab ich dann den DevLink() gefüttert. Indirekt über usbNode_typ.ifName (welcher zur Laufzeit automatisch /bd0 war) bzw. direkt mit /bd0.
DevLink.status = 0. Nächster FUB sagt

20709 ( fiERR_FILE_DEVICE , pDevice ist zu lang oder NULL) bzw
20798 (fiERR_DEVICE_MANAGER , Fehler im DeviceManager (z.B.: Filedevice nicht initialisiert "CPU->Eigenschaften->File Devices"))
 
Hast du ein Automation Runtime D4.10 (oder so) im Einsatz? Ich hatte neulich genau den gleichen Effekt und nach einem Downgrade auf V4.08 lief das wieder. Mir scheint im 4.10 gibt's da einen Bug...
 
Hallo, herdi liegt da richtig. In der AR Version D4.10 (und 2-3 Revisionen davor) ist die USB-Schnittstelle aufgrund eines Bugs nicht funktionsfähig. Bei meinem C70-Panel das selbe. Ab E4.10 wieder behoben.
 
Zuletzt bearbeitet:
Zurück
Oben