• 3940阅读
  • 0回复

倍福 Beckhoff TWinCAT ADS PLC编程简述 [复制链接]

上一主题 下一主题
离线cahwxy
 

图酷模式  只看楼主 倒序阅读 楼主  发表于: 2018-07-30
倍福 Beckhoff TWinCAT ADS PLC编程简述

一、倍福TWinCAT ADS简述
在Beckhoff TwinCAT 系统中,各个软件模块(如TwinCAT PLC、TwinCAT NC、Windows 应用程序等)及硬件系统CX、BX、BC 系列控制器中包含TwinCAT信息路由器。因此各个ADS 设备之间都能够交换数据和信息。

二、TWinCat ADS 设备标识
每台TwinCATADS 设备都有各自不同的AdsAmsNetId 和AdsPort(端口号), AdsAmsNetId 是TCP/IP 地址的扩展,默认为在IP基础上增加.1.1,也可以进行修改。

ADS 客户端(ADS Client)应用程序的AdsPort 则是可变的。不同ADS 设备的AdsPort 如下图所示:
ADS 设备
 
AdsPort
PC 控制器中的PLC
Run-timesystem 1
801
Run-timesystem 2
811
Run-timesystem 3
821
Run-timesystem 4
831
自定义任务( Additional Task )
AdditionalTask 1
301
AdditionalTask 2
302
BC、BX 控制器中的PLC
 
800
NC
 
500


三、TwinCat ADS通讯方式(同步和异步两种方式)

  异步方式(Asynchronous)
    ADS 客户端向ADS 服务器发送ADS 请求,同时客户端继续自己的工作。ADS 服务器处理请求后,把响应以Call-back 函数方式发给客户端。
优点:不会造成系统堵塞
缺点:不能确保每次请求都有返回

  同步方式(Synchronous)
ADS 客户端向ADS 服务器发送ADS 请求,在通讯过程中客户端程序停止执行,直到获得ADS 服务器返回的响应

优点:能即时返回结果
缺点:如果通讯故障会造成系统堵塞

同步方式(Synchronous)通讯分为两种,即读操作和写操作,针对于读和写操作又分别分为两种方式,即按变量名进行读写和按照地址进行读写。

1.变量名方式
在TwinCAT PLC程序中每个变量都有一个句柄(Handle)。在对变量进行操作之前,首先我们要通过相关路径得到变量的句柄,然后进行读写操作,操作完毕后对句柄进行释放。

2. 地址方式
在TwinCAT PLC中一个变量的地址由两部分组成,即GroupIndex和OffsetIndex, GroupIndex为该变量所在的寄存器类型,为一常量; OffsetIndex为该变量在寄存器中得地址偏移量,为一变量。
GroupIndex
描述
0x00004020
M寄存器(用%M声明)
0x00004021
MX寄存器(用MX声明)
0x0000F020
I寄存器(用%I声明)
0x0000F021
IX寄存器(用IX声明)
0x0000F030
Q寄存器(用%Q声明)
0x0000F031
QX寄存器(用QX声明)
0x0000F003
取变量的句柄
0x0000F005
通过变量句柄访问变量值
0x0000F006
释放句柄


1.对于MX,IX,QX寄存器的偏移地址的单位是“位”,而不是字节,计算地址需要注意
2.M寄存器偏移地址最大值为0x0000FFFF,而MX,I,IX,Q,QX偏移地址最大值为0xFFFFFFFF。
3.上表后三个主要用于C++语言,其他高级语言已经封装成专有方法,不需直接调用

四、按变量名和按变量地址进行操作的比较
    1.变量名方式
  优点:
A、 无需知道变量的具体地址;
B、 可以省略计算地址的工作;
C、 可对过程变量进行操作;
    缺点:
A、 因为要抓放句柄(10ms),和地址方式比较通讯速度慢
B、 对BC、BX系列不能进行操作

    2. 地址方式
  优点:
A、 直接对地址进行操作,省去抓放句柄时间,通讯速度快;
B、 无需知道变量的具体路径;
C、 可以操作BC、BX系列控制器
     缺点:
           A、使用中需考虑不同变量的偏移地址,容易出错

五、TwinCAT 通讯高级语言接口
  
  1. 开放、简单、 灵活、 文档齐全


  

六、TwinCAT通讯高级语言组件
为方便各种计算机高级语言及其环境使用ADS通讯,Beckhoff TwinCAT提供相如下组件:
ADS .NET Component
    适用.NET平台,VB.NET,C#等
ADS-OCX (ActiveXCOM控件)
    适用于Visual Basic, Visual C++, Delphi等.
ADS-DLL
    适用于Visual C++等.
ADS-Script-DLL
    适用于VBScript, Jscript等脚本,创建B/S架构的应用.
JAVA DLL
    适用于JAVA语言。
“PlcSystem.lib”PLC
ADS设备可以通过据此和其他ADS设备以及Windows进行通讯

七、TwinCAT通讯高级语言组件获取
ADS组件库集成在TwinCAT软件中,安装任何版本的TwinCAT软件都包含ADS通讯组件,如果用户希望在没有安装TwinCAT软件的计算机适用ADS通讯组件可以安装Supplement中的TwinCAT_ADS_Communication_Library此为免费产品。

八、Qt C++ VS2015 工程设置示例
A、需要的相关文件
需要包含的头文件: TcAdsAPI.h 和 TcAdsDef.h
需要包含的Lib文件: TcAdsDll.lib
程序运行目录需要包含库文件: TcAdsDll.dll

B、设置方式
        我们在工程目录下面新建一个目录,命名为: ads_include 【包含文件TcAdsAPI.h 和 TcAdsDef.h】
加入工程方法:工程属性 -> C/C++ -> 常规附加包含目录 中添加 ads_include即可
    我们在工程目录下面新建一个目录,命名为: libs 【包含文件TcAdsDll.lib】
加入工程方法:工程属性-> 链接器 -> 常规 附加库目录 中添加 libs即可
               工程属性-> 链接器->输入附加依赖项 中添加TcAdsDll.lib即可
同时需要把TcAdsDll.dll 库放置于程序的执行目录中。

九、推荐的Qt C++ 软件结构设计图【已经产品化实践过】
    

十、其他问题
1、 注意字节对齐,尽量统一使用4倍或者8倍字节数,也能大大提高内存访问命中率
2、 注意通讯高效性,尽量使用地址访问方式
3、 注意线程同步,保持主界面线程操作流程


原文: https://www.apps121.com/2018/07/30/beckhoff-twincat-ads-plc/

快速回复
限100 字节
 
上一个 下一个