jestem studentem Politechniki Śląskiej, na wydziale Mechanicznym Technologicznym na kierunku Automatyka i Robotyka. Zwracam się do was z prośbą o pomoc w rozwiązaniu problemu, z którym napotkałem się w mojej pracy inżynierskiej. Mianowicie celem pracy było stworzenie Interfejsu w LabView do wymiany prostych danych w sieci Profibus DP pomiędzy komputerem a robotem pełniącym rolę Mastera. W komputerze znajuje się karta PCI firmy Softing PCI PB-IF-1MS. Producent nie wspiera oprogramowania LabView, więc jej obsługa odbywa się poprzez bibliotekę dll dostarczoną przez producenta. Stworzony przeze mnie program działa tylko częściowo, otóż nawiązanie połączenia, pobranie danych o połączeniu, czy nawet wysyłanie danych działa poprawnie, a mam ogromny problem z odbieraniem danych przesłanych do karty. Do odczytania przesłanych danych z bufora karty służy funkcja w bibliotece papi.dll o nazwie profi_get_dps_output_data. Funkcja została zaimplementowana za pomocą Call Library Function Node. Funkcja zwraca kod blędu "0" co według dokumentacji oznacza poprawne wykoanie. Sam zaś Node nie wskazuje na zaden błąd, niby wszystko ok a zwraca same zera. Proszę o pomoc, bo naprawdę nie mam już pojęcia, co mogłem zrobić źle podczas konfiguracji Call Library Function Node, lub wskazanie miejsca gdzie mogłem jeszcze zrobić błąd. Nadmienię, iż może na sto uruchomień o dziwo te odbieranie zadziałało 3 razy poprawnie. Bardzo proszę o pomoc, gdyż zbliża się termin mojej obrony a ja nie bardzo już wiem, co robić.
Opis funkcji z dokumentacji producenta :
The profi_get_dps_output_data function reads the current outputs of the DP slave from the DP-Slave
output data device.
INT16 profi_get_dps_output_data
(
OUT USIGN8* pData,
INOUT USIGN8* pDataLength,
OUT USIGN8* pState
);
Function parameter description:
pData: Pointer to a USIGN8 variable array to read the outputs of the slave.
pDataLength: (IN) Pointer to a USIGN8 variable indicating the buffer size in bytes
(OUT) Number of output data read
pState: Pointer to the current output data status with:
- DPS_OUTPUT_STATE_SYNC_ENABLED
The function for freezing the outputs has been enabled.
- DPS_OUTPUT_STATE_SYNC_COMMAND
A corresponding Global_Control command was received. Since the last time
the function profi_get_dps_output_data was called, a Sync command has
been received upon which received upon which new output data have been
made ready. The bit is cleared automatically after access.
- DPS_OUTPUT_STATE_CLEAR_DATA
The outputs are in failsafe state. A corresponding command was received
from the master.
- DPS_OUTPUT_STATE_VALID_DATA
No transmission errors have occurred during data transmission from the
master and user data are exchanged (no timeout or watchdog error).
- DPS_OUTPUT_STATE_NEW_DATA
New output data were received from the master. Since the last access via
profi_get_dps_output_data function new data have been delivered
(independent of the Sync command). With this bit you can prevent reusing
old data. The bit is cleared after access.
- DPS_OUTPUT_STATE_GLOBAL_CONTROL
Since the last time the output data were read, a Global_Control command
has been received. The bit is cleared as soon as the output data have been
read.
konfiguracja Call Library Node + kod LabView





