Download presentation
Presentation is loading. Please wait.
Published byJohannes Seppälä Modified 6年之前
1
ADS通讯-高级语言 The Windows Control and Automation Technology 1 尚德明
2
ADS简介 在Beckhoff TwinCAT 系统中,各个软件模块(如TwinCAT PLC、TwinCAT NC、Windows 应用程序等)的工作模式类似于硬件设备,它们能够独立工作。各个软件模块之间的信息交换通过TwinCAT ADS 而完成。ADS(Automation Device Specification)即自动化设备规范,它为设备之间的通讯提供路由。 在TwinCAT PC 和Beckhoff 的CX、BX、BC 系列控制器中都包含TwinCAT 信息路由器。因此各个ADS 设备之间都能够交换数据和信息。 基于ADS 的TwinCAT 系统构架如下图所示: 2
3
自定义任务( Additional Task )
TwinCAT ADS 设备标识 每台TwinCAT ADS 设备都有各自不同的AdsAmsNetId 和AdsPort(端口号),以相互区别。 AdsAmsNetId 是TCP/IP 地址的扩展,是TwinCAT Message Router,存在于每台TwinCAT PC 或Beckhoff CX、BX、BC 系列控制器中。例如:如果一台PC 的IP 地址是“ ”,那么它的AdsAmsNetId 就是“ ”。当然,也可以对AdsAmsNetId 进行修改。 每台ADS 设备(ADS Server)的AdsPort 都各不相同,且固定不变。而ADS 客户端(ADS Client)应用程序的AdsPort 则是可变的。不同ADS 设备的AdsPort 如下图所示: ADS 设备 AdsPort PC 控制器中的PLC Run-time system 1 801 Run-time system 2 811 Run-time system 3 821 Run-time system 4 831 自定义任务( Additional Task ) Additional Task 1 301 Additional Task 2 302 BCxxxx 控制器中的PLC 800 NC 500 3
4
ADS 通讯方式 ADS 设备之间的通讯有多种方式,不同方式有不同的特点。 一般的ADS 通讯(General ADS Services)
- 异步方式(Asynchronous) ADS 客户端向ADS 服务器发送ADS 请求,同时客户端继续自己的工作。ADS 服务器处理请求后,把响应以Call-back 函数方式发给客户端。 - 通知方式(Notification) ADS 客户端向ADS 服务器发送ADS 请求,ADS 服务器以Call-back 函数的方式不断向客户端发送响应,直到客户端取消该请求。 这两种通讯方式的效率高,但需求复杂的客户端程序。 优点:不会造成系统堵塞 缺点:不能确保每次请求都有返回 4
5
ADS 通讯方式 特殊的ADS 通讯(Specific ADS Services)
TwinCAT ADS 设备和Windows 应用程序(例如VB、VC 应用程序等)之间的通讯除了可以采用一般的ADS 通讯方式外,还可以采用特殊的通讯方式,即同步通讯方式。 - 同步方式(Synchronous) ADS 客户端向ADS 服务器发送ADS 请求,在通讯过程中客户端程序停止执行,直到获得ADS 服务器返回的响应。 这种通讯方式不需求复杂的客户端程序,但其轮循的通讯方式给系统带来比较大的负载,因此通讯效率较低。 优点:能即时返回结果 缺点:如果通讯故障会造成系统堵塞 5
6
ADS API 为方便各种计算机高级语言及其环境使用ADS通讯,Beckhoff TwinCAT提供相如下组件:
•ADS .NET Component 适用.NET平台,VB.NET,C#等 • ADS-OCX (ActiveX COM控件) 适用于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进行通讯。 6
7
ADS 通讯协议概述 ADS协议处于网络通讯协议的应用层。 TCP/IP模型 OSI模型 应用层 传输层 Internet层 网络接口层 7
8
ADS 访问变量方式 TwinCAT ADS访问变量有两种方式: 1.地址方式
一个PLC变量的地址由两部分组成:GroupIndex和OffsetIndex: GroupIndex一般用于区别寄存器类型,在TwinCAT ADS设备中为常量,具体内容可以参考Information System(后附常用的GroupIndex值)。 OffsetIndex为变量的偏移地址,在PLC中为该变量的地址。 2.变量名方式 在TwinCAT ADS设备中每个变量都有一个句柄(Handle)。 适用变量名访问变量首先需要得到该变量的句柄。(不同的高级语言方式略有不同) 8
9
ADS组件库文件组成简介 ADS组件库集成在TwinCAT软件中,安装任何版本的TwinCAT软件都包含ADS通讯组件,如果用户希望在没有安装TwinCAT软件的计算机适用ADS通讯组件可以安装Supplement中的TwinCAT_ADS_Communication_Library此为免费产品。 除需要复制到Windows/System32目录外绝大部分相关文件可以在TwinCAT安装目录找到。假设TwinCAT安装路径为C:\TwinCAT 文件 描述 C:\TwinCAT\ADS Api\TcAdsDll\ ADS DLL C:\TwinCAT\ADS Api\.NET .NET组件(支持三个版本的Framework) C:\TwinCAT\ADS Api\AdsToJava ADS JAVA DLL C:\TwinCAT\ADS Api\CompactFramework .NET Compact Framework组件 C:\TwinCAT\ADS Api\Lib VS 97 Lib C:\TwinCAT\ADS Api\TcAdsWebService WebService组件 C:\WINDOWS\system32\AdsOcx.ocx ADS OCX C:\TwinCAT\TcScript.dll ADS-Script-DLL 9
10
Ads 组件调用过程简介 新建工程 .NET调用流程 添加引用TwinCAT.Ads.dll 用于读写变量 定义TcAdsClient对象
private TcAdsClient adsClient; 添加引用TwinCAT.Ads.dll 用于读写变量 定义TcAdsClient对象 adsClient = new TcAdsClient(); adsClient.Connect(801); 初始化TcAdsClient对象 AddDeviceNotification 通过变量名取得变量的句柄 注册DeviceNotification事件 读写变量 接受处理返回结果 释放资源 10
11
Ads 组件调用过程简介 C++ 在 Visual C++ 中进行链接和程序开发时所需要的文件:
TcAdsDll.dll – 动态链接库 TcAdsDll.lib – 使用 TcAdsDll.dll 的函数库 TcAdsApi.h – 声明 ADS 功能的头文件 TcAdsDef.h – 声明结构和常数的头文件 主要接口: AdsPortOpen:建立 TwinCAT 信息路由器连接 (通讯口)。 AdsPortClose:关闭 TwinCAT 信息路由器的连接(通讯口)。 AdsGetLocalAddress:返回本地 NetId 和端口号 AdsSyncWriteReq:同步写数据到一个 ADS 设备 AdsSyncReadReq:从 ADS 服务器中同步读数据。 AdsSyncReadWriteReq:同步写入数据到 ADS 服务器中并从 ADS 设备接收返回的数据。 AdsSyncReadStateReq:从 ADS 服务器中读 ADS 状态和设备状态。 AdsSyncAddDeviceNotificationReq:通知在 ADS 服务器中进行定义 (如 PLC)。当某个事件发生时,该功能 (回调功能) 在ADS 客户端进行调用 (C 程序)。 AdsSyncDelDeviceNotificationReq:从 ADS 服务器中删除以前定义的通知。 11
12
辅助工具-TwinCAT ADS Monitor
TwinCAT ADS Monitor可以抓取ADS通讯数据包 通讯数据帧记录 ADS数据结构 帧数据 12
13
辅助工具-仿真器 1.下载文件: 以下路径为FTp路径(ftp://ftp.beckhoff.com)
/Software/embPC-Control/CE/Solutions/CX_Emulator/ emulator.zip (CE仿真器英文) /Software/embPC-Control/CE/Solutions/SDK/Beckhoff HMI 500 V1.3 SDK.msi /Software/embPC-Control/CE/Solutions/VS_NET2005/CE5_DbgHlp.zip 2.仿真器安装: a.安装Microsoft Windows CE 5.0 Emulator.msi需要连接互联网 b.安装完仿真器,再安装虚拟网卡驱动netsvwrap.msi 3.配置: a.安装后修改StartEmulator_DE.bat 文件,将参数中的/Ethernet 的MAC改为本地网卡的实际MAC地址 b.参数vmid 后的GUID值做为保存映像是的文件夹名称。 4.设置仿真器和VS.net集成环境: Windows CE 5 的模拟器是基于x86的,VS 2005 的 Device Emulator 是基于ARM的,VS2005开发环境无法和Win CE模拟器进行集成进行远程调试。 但是可以通过下面的方式实现集成: 1).将CE5_DbgHlp.zip压缩包文件解压复制仿真器的 \hard disk\system 路径下(实际的控制器新版本系统中这些文件已经存在) 2).运行Conmanclient2.exe 13
14
辅助工具-仿真器(续) 3).配置VS2005开发环境: a.转到“Tools-->options-->device tools-->devices” b.选择Windows CE 5.0设备,点击“属性(properties)”按钮 c.在Windows CE 5.0设备属性对话框点击“配置(configure)”按钮 d.在TCP/IP配置对话框选定“使用特定的IP(use specific IP address)”,输入仿真器的IP地址。 下面就可以Debug CE应用程序,选择部署到Windows CE5.0。如果部署仍然失败,运行仿真器\hard disk\system 路径下的cMaccept.exe文件。 测试正常后保存仿真器的设置,载关闭时选择Save Sate而不是True Off,这样下次启动仿真器就不需要重新设置仿真器。 如果想删除保存的文件,转到“我的文档\My Virtual Machines下,将上文提到的在 StartEmulator_DE.bat 设置的vmid 值为名称的文件夹删除即可。 如果在具体操作用什么问题,您可以随时和我们联系。 vs2008注意事项:用如下文件代替CE5_DbgHlp.zip 内的文件 C:\Program Files\Common Files\Microsoft Shared\CoreCon\1.0\Target\wce400\x86 14
15
常用的GroupIndex 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++语言,其他高级语言已经封装成专有方法,不需直接调用。 15
Similar presentations