Ads funktioiden avulla voi toteuttaa kättelyn c++ ohjelman ja Beckhoffin logiikan välillä.
Yksinkertainen esimerkki
Code Block |
---|
title | Window määrittelyjä |
---|
collapse | true |
---|
|
#ifndef WINTYPES_H
#define WINTYPES_H
/*
Microsoftin tytöt ja pojat ovat halunneet keksiä omia nimiä standardi cpp:n tyypeille,
alla muutamia tärkeimpiä, joita tässä esimerkissä tarvitaan. Saatat tarvita Windows projektissa lisää tyyppejä. Niitä löydät osoitteesta
http://msdn.microsoft.com/en-us/library/aa383751(VS.85).aspx#BYTE
*/
typedef int INT;
typedef char* LPSTR;
#define WINAPI __stdcall
typedef int BOOL;
typedef BOOL *PBOOL;
typedef void VOID;
#define CALLBACK __stdcall
typedef unsigned long DWORD;
typedef DWORD *PDWORD;
typedef char CHAR;
typedef CHAR *PCHAR;
typedef float FLOAT;
typedef FLOAT *PFLOAT;
typedef unsigned short WORD;
typedef WORD *PWORD;
typedef short SHORT;
typedef SHORT PSHORT;
typedef void *PVOID;
typedef unsigned char BYTE;
typedef BYTE *PBYTE;
typedef int DaqHandleT;
typedef unsigned long ULONG;
typedef long LONG;
typedef unsigned int UINT;
typedef unsigned short USHORT;
typedef wchar_t WCHAR;
typedef unsigned long ULONG;
#endif // WINTYPES_H |
Code Block |
---|
title | projektitiedostoon kirjaston polku |
---|
collapse | true |
---|
|
LIBS += "c://twincat//AdsApi//tcadsdll//lib//TcAdsDll.lib" |
Code Block |
---|
title | otsikkotiedosto |
---|
collapse | true |
---|
|
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include "WinTypes.h"
#include "c:\twincat\AdsApi\tcadsdll\include\tcadsdef.h"
#include "c:\twincat\AdsApi\tcadsdll\include\tcadsapi.h"
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = 0);
~Dialog();
long nErr, nPort;
AmsAddr Addr;
PAmsAddr pAddr;
DWORD dwData;
ULONG hAnalogInputs;
ULONG hAnalogOutputs;
void WriteDataToLogic(qint32 *asetusarvot, quint8 kokoTavuina);
void ReadDataFromLogic(qint32 *mitatutArvot, quint32 kokoTavuina);
private:
Ui::Dialog *ui;
};
#endif // DIALOG_H |
Code Block |
---|
title | luokan funktiot |
---|
collapse | true |
---|
|
#include "dialog.h"
#include "ui_dialog.h"
Dialog::Dialog(QWidget *parent) :QDialog(parent),ui(new Ui::Dialog)
{
ui->setupUi(this);
pAddr = &Addr;
nPort = AdsPortOpen();
nErr = AdsGetLocalAddress(pAddr);
pAddr->port =851;
//5.11.25.80.1.1 netid on logiikan identiteetti (jokaisella oma)
pAddr->netId.b[0]=5;
pAddr->netId.b[1]=11;
pAddr->netId.b[2]=25;
pAddr->netId.b[3]=80;
pAddr->netId.b[4]=1;
pAddr->netId.b[5]=1;
nErr=AdsSyncReadWriteReq( pAddr, ADSIGRP_SYM_HNDBYNAME, 0x0,
sizeof(ULONG), &hAnalogInputs,
sizeof("MAIN.communication.AnalogInputsToPc_"),
"MAIN.communication.AnalogInputsToPc_");
...
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::WriteDataToLogic(qint32 *asetusarvot, quint8 kokoTavuina)
{
nErr=AdsSyncWriteReq( pAddr, ADSIGRP_SYM_VALBYHND, hAnalogOutputs,kokoTavuina,asetusarvot);
Q_ASSERT(nErr==0);
}
void Dialog::ReadDataFromLogic(qint32 *mitatutArvot, quint32 kokoTavuina)
{
nErr=AdsSyncReadReq( pAddr, ADSIGRP_SYM_VALBYHND,hAnalogInputs, lengthOfVectorAsBytes,mitatutArvot);
Q_ASSERT(nErr==0);
} |
Esimerkkejä
ADS-DLL Sample01.zip
ADS-DLL Sample02.zip
ADS-DLL Sample03.zip
ADS-DLL Sample04.zip
BechoffEsim.zip