倍福Twincat 3.0软件与C++通讯问题
倍福公司所开发的Twincat 3.0软件是基于Visual studio开发环境的一款自动化软件,目前其与C++程序通讯的方式主要还是靠ADS-DLL接口进行数据和信息传递,作者在Visual C++上进行混合编程开发,通过TwinCAT路由器和C语言API函数实现混合编程。
倍福软件提供:
TcAdsDll.dll—动态链接库;
TcAdsDll.lib—使用TcAdsDll的函数库;
TcAdsApi.h—声明ADS功能的头文件;
TcAdsDef.h—声明结构和常数的头文件;
具体步骤如下:
1.首先启动Visual Studio 2013,创建一个新项目,我们选择Visual C++→MFC→MFC应用程序。输入项目名称并保存确定,后续可以选择基于对话框的程序类型。
![新建MFC项目](https://i-blog.csdnimg.cn/blog_migrate/192d39283e32bf34156430a54f59f3c8.png)
2.之后添加链接库,方便各种函数的调用,打开项目属性→配置属性→链接器→常规→附加库目录→输入目录名称(C:\TwinCAT\AdsApi\TcAdsDll\x64\lib,这是安装Twincat的通讯库函数的默认路径)。
![添加附加库目录](https://i-blog.csdnimg.cn/blog_migrate/e36447b075b85f17e3b47aefcdbc234e.png)
3.再依次添加:链接器→输入→附加依赖项,输入文件名“TcAdsDll.lib”,点击确定。
![添加依赖项](https://i-blog.csdnimg.cn/blog_migrate/f6597ea27debc0f97042a347074755d4.png)
![声明头文件](https://i-blog.csdnimg.cn/blog_migrate/84d3c7af9eac775a706737fa29418157.png)
5.到此可以成功调用Twincat的ads通讯库的函数了,继续进行ADS通讯的初始化。
//声明全局变量
long nErr;
long nPort;
AmsAddr Addr;
PAmsAddr pAddr;
//初始化内容:建立路由、获取NetID、设置PLC端口号
pAddr = &Addr;
nPort = AdsPortOpen();
//如果是远程ADS则使用下面注释的两句确定AmsNetId,id填入远程控制器的ip
//AmsNetId id = {192,168,1,1,1,1};
//pAddr->netId = id;
//如果是本地ADS通讯则使用下面两条语句确定AmsNetId
nErr = AdsGetLocalAddress(pAddr);
if (nErr) cerr << "Error: AdsGetLocalAddress: " << nErr << '\n';
//确定端口号
pAddr->port = 851