Hallo,
ich habe erfolgreich mittels Prodave eine Verbindung zu einer SoftPLC (ACCONtrol S7) aufgebaut. In C++ sieht der Code folgendermassen aus:
Code:
//load connection (automatically sets as active)
int loadConRV = 0; //return value
unsigned short conNr = 0; //ID
char* accessPoint = "S7ONLINE"; //default, as opposed to MPI
CON_TABLE_TYPE conTable[MAX_CONNECTION+1]; //CON_TABLE_TYPE conTable; works as well to simplify LV access
CON_TABLE_TYPE* pConTable = &conTable[conNr]; //&conTable; works as well to simplify LV access
unsigned short conTableLen = sizeof(CON_TABLE_TYPE);
pConTable[conNr].Adr.Ip[0] = 127; //IP irrelevant for softplc
pConTable[conNr].Adr.Ip[1] = 0;
pConTable[conNr].Adr.Ip[2] = 0;
pConTable[conNr].Adr.Ip[3] = 1;
pConTable[conNr].AdrType = 2; //IP
pConTable[conNr].SlotNr = 2;
pConTable[conNr].RackNr = 0;
loadConRV = LoadConnection_ex6(conNr, accessPoint, conTableLen, pConTable);
printf("LoadConnection() return value: %x\n", loadConRV);
Nun versuche ich dasselbe mit
unter WinXP 32-bit. Die Funktion lässt sich nicht importieren, weil unter den Parametern
union innerhalb
struct vorkommt. Ausschnitt aus dem Prodave-Manual:
Code:
int LoadConnection_ex6 (int ConNr, char* pAccessPoint, int ConTableLen,
CON_TABLE_TYPE * pConTable);
Parameters
ConNr
[in] Number of the connection (max. 64 connections).
pAccessPoint
[in] access point (zero-terminated) of the driver used, e.g. "S7ONLINE" for the MPI
driver or 0 (default).
ConTableLen
[in] length of the connection structure provided by the user in bytes
pConTable
[in] pointer to address structure of the user
#pragma pack(1)
typedef union {
unsigned char Mpi; // MPI/PB station address (2)
unsigned char Ip[4]; // IP address (192.168.0.1)
unsigned char Mac[6]; // MAC address (08-00-06-01-AA-BB)
} CON_ADR_TYPE;
typedef struct {
CON_ADR_TYPE Adr; // connection address
unsigned char AdrType; // Type of address: MPI/PB (1), IP (2), MAC (3)
unsigned char SlotNr; // Slot number
unsigned char RackNr; // Rack number
} CON_TABLE_TYPE;
#pragma pack(1)
Ich habe mir bereits folgende
Seite angeschaut. Man soll theoretisch die Parameter eines Structs einzeln nacheinander auflisten. Jedoch mein Code verursacht einen Absturz von LV..
Im Anhang findet ihr das Beispiel. Für jede Hilfe wäre ich dankbar.