Write flag synchronously into the PLC

Download: 'Write flag synchronously into PLC'

In this example program, the value that the user has entered is written into flag double word 0.

#include <iostream.h>
#include <windows.h>

// ADS headers for TwinCAT 3
#include "C:\TwinCAT\AdsApi\TcAdsDll\Include\TcAdsDef.h"
#include "C:\TwinCAT\AdsApi\TcAdsDll\Include\TcAdsAPI.h"

void main()
{
long nErr, nPort;
AmsAddr Addr;
PAmsAddr pAddr = &Addr;
DWORD dwData;

// Open communication port on the ADS router
nPort = AdsPortOpen();
nErr = AdsGetLocalAddress(pAddr);
if (nErr) cerr << "Error: AdsGetLocalAddress: " << nErr << '\n';

// TwinCAT 3 PLC1 = 851
pAddr->port = 851;

// Read value from user that is to be written to the PLC
cout << "Value: ";
cin >> dwData;

// Write value to MD0
nErr = AdsSyncWriteReq( pAddr, 0x4020, 0x0, 0x4, &dwData );
if (nErr) cerr << "Error: AdsSyncWriteReq: " << nErr << '\n';

// Close communication port
nErr = AdsPortClose();
if (nErr) cerr << "Error: AdsPortClose: " << nErr << '\n';
}