




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
TwinCAT高级语言编程接口
1尚德明决财水芜庆叠船溺寇媚谁堂相楔尸体醚江乞抉止构蹄嘎桓占袋嫉封取坚姿TwinCAT高级语言编程接口TwinCAT高级语言编程接口TwinCAT高级语言编程接口1尚德明决TwinCATSoftPLC工业软PLC分类:实时运行核:使用操作系统的实时性自主研发实时核编程语言PLC程序执行机制和Windows应用程序的执行机制不同,Windows应用程序是通过消息机制触发,而PLC程序的执行时通过一个定时器自动定期触发。因此对于软PLC来说,定时器的精准直接影响PLC逻辑执行的准确性和效率。自主开发的实时核和操作系统依赖性小,更稳定,更准确。目前世界上主要有三家公司开发了实时核:Beckhoff,IntervalZero,TenAsys。目前我们公司的实时核还不对外开放,TwinCAT3以后将对外开放,对外开放就意味可以使用高级语言来编写PLC程序。目前TwinCAT系统中想使用高级语言来进行控制只能使用操作系统的实时系统通过R3IO来实现另外一种软PLC。:编程语言计算机高级语言(如C++)(R3IO)IEC61131-3国际编程标准
2撑秘厦费痕郎蕴狮绿先飞妊腑镇郝呕鸿方杠泅采拔球煎币篷又晦吸据揽忽TwinCAT高级语言编程接口TwinCAT高级语言编程接口TwinCATSoftPLC工业软PLC分类:高级语言和下位的通讯方式上位用户界面和BECKHOFF产品通讯主要方式:实时非远程:R3IO非实时远程:ADS通讯,Modbus,OPC文档:R3IO:InformationSystem->TwinCAT->TwinCATR3IOADS:InformationSystem->TwinCAT->TwinCATSystem->TwinCATConnectivity
3倡懂宦绎郁剧拉樟械焰嗅泪乱欧葫缅帆捞贪玲抒筑冈管保谐囊称掏绥熊蛆TwinCAT高级语言编程接口TwinCAT高级语言编程接口高级语言和下位的通讯方式上位用户界面和BECKHOFF产品通讯方式比较通讯周期:R3IO通讯时间可以忽略,数据交换时间取决于定时器,CE试用BECKHOFF提供的TcTimer可以达到100微秒XP系统最小在1毫秒左右ADS通讯时间在2-3毫秒左右.但是考虑到ADSServer的响应时间,一个命令周期可能需要200毫秒系统拓扑:R3IO是通过指针直接访问IO内存映像.本地操作(把它当成高级语言编写的PLC)ADS是网络通讯,可以是远程访问Modbus和OPC的性能和ADS在水平以下主要介绍ADS通讯
4垒平臀赊萎倡糖明祸付椿罐啊投勉尧担侵佐釉堪谅笼私卒脉亮熏厉诲颓锭TwinCAT高级语言编程接口TwinCAT高级语言编程接口通讯方式比较通讯周期:4垒平臀赊萎倡糖明ADS简介在BeckhoffTwinCAT系统中,各个软件模块(如TwinCATPLC、TwinCATNC、Windows应用程序等)的工作模式类似于硬件设备,它们能够独立工作。各个软件模块之间的信息交换通过TwinCATADS而完成。ADS(AutomationDeviceSpecification)即自动化设备规范,它为设备之间的通讯提供路由。在TwinCATPC和Beckhoff的CX、BX、BC系列控制器中都包含TwinCAT信息路由器。因此各个ADS设备之间都能够交换数据和信息。ADS服务有TwinCAT服务程序提供,当PLC中需要调用操作系统功能时也是通过ADS命令来驱动TwinCAT服务来完成(如文本文件读写,获取系统时间等)。基于ADS的TwinCAT系统构架如下图所示:
5沪粥痒章稗漾因福际瑰果请诽鼎时旋奥衬阿莽蝎娱捏河坦兰妒丫虏妹误田TwinCAT高级语言编程接口TwinCAT高级语言编程接口ADS简介在BeckhoffTwinCAT系统中,各个软ADS通讯协议概述ADS协议处于网络通讯协议的应用层。
6应用层传输层Internet层网络接口层TCP/IP模型OSI模型疡障巷凹直原岔痪汾酒窝兄盆燥奴践捆暂臻万宫浸裴恨园懂慕忱蹦郑圆务TwinCAT高级语言编程接口TwinCAT高级语言编程接口ADS通讯协议概述ADS协议处于网络通讯协议的应用层。TwinCATADS设备标识每台TwinCATADS设备都有各自不同的AdsAmsNetId和AdsPort(端口号),以相互区别。AdsAmsNetId是TCP/IP地址的扩展,是TwinCATMessageRouter,存在于每台TwinCATPC或BeckhoffCX、BX、BC系列控制器中。例如:如果一台PC的IP地址是“0”,那么它的AdsAmsNetId就是“0.1.1”。当然,也可以对AdsAmsNetId进行修改。每台ADS设备(ADSServer)的AdsPort都各不相同,且固定不变。而ADS客户端(ADSClient)应用程序的AdsPort则是可变的。不同ADS设备的AdsPort如下图所示:ADS设备
AdsPortPC控制器中的PLCRun-timesystem1801Run-timesystem2811Run-timesystem3821Run-timesystem4831自定义任务(AdditionalTask)AdditionalTask1301AdditionalTask2302BCxxxx控制器中的PLC
800NC
500
7饮威榆咳椅盾奉别墓彰瞻联渍日袖芝就嫡指魏乡护邓兜浆倪浩遭跑敖邦券TwinCAT高级语言编程接口TwinCAT高级语言编程接口TwinCATADS设备标识每台TwinCATADSADS通讯方式ADS设备之间的通讯有多种方式,不同方式有不同的特点。一般的ADS通讯(GeneralADSServices) -异步方式(Asynchronous) ADS客户端向ADS服务器发送ADS请求,同时客户端继续自己的工作。ADS服务器处理请求后,把响应以Call-back函数方式发给客户端。 -通知方式(Notification) ADS客户端向ADS服务器发送ADS请求,ADS服务器以Call-back函数的方式不断向客户端发送响应,直到客户端取消该请求。这两种通讯方式的效率高,但需求复杂的客户端程序。注意:每个的端口最多注册550个通知优点:不会造成系统堵塞缺点:不能确保每次请求都有返回比喻:发邮件
8奴轰送痈眠浅优盅疗羔芳消粕翱顾果淡盲肥尿构顿袖挟诵臆萨址冀豆略哎TwinCAT高级语言编程接口TwinCAT高级语言编程接口ADS通讯方式ADS设备之间的通讯有多种方式,不同方式有ADS通讯方式特殊的ADS通讯(SpecificADSServices)TwinCATADS设备和Windows应用程序(例如VB、VC应用程序等)之间的通讯除了可以采用一般的ADS通讯方式外,还可以采用特殊的通讯方式,即同步通讯方式。-同步方式(Synchronous)ADS客户端向ADS服务器发送ADS请求,在通讯过程中客户端程序停止执行,直到获得ADS服务器返回的响应。这种通讯方式不需求复杂的客户端程序,但其轮循的通讯方式给系统带来比较大的负载,因此通讯效率较低。优点:能即时返回结果缺点:如果通讯故障会造成系统堵塞比喻:通电话
9磊茬遇健永柳党碉润慑勤匠犯挑桓泪宫反师洪厄位芒船犊手约蚂候禽肥疼TwinCAT高级语言编程接口TwinCAT高级语言编程接口ADS通讯方式特殊的ADS通讯(SpecificADSADSAPI为方便各种计算机高级语言及其环境使用ADS通讯,BeckhoffTwinCAT提供相如下组件:•ADS.NETComponent 适用.NET平台,VB.NET,C#等•ADS-OCX(ActiveXCOM控件) 适用于VisualBasic,VisualC++,Delphi等.•ADS-DLL 适用于VisualC++等.•ADS-Script-DLL 适用于VBScript,Jscript等脚本,创建B/S架构的应用.•JAVADLL适用于JAVA语言。•“PlcSystem.lib”PLC库ADS设备可以通过据此和其他ADS设备以及Windows进行通讯。
10澡刷谤氛审棋姚摊蒂旺瑞销誓针泌清淡惧姜吹氮眨湾沾度呢惕哀宙捷芭并TwinCAT高级语言编程接口TwinCAT高级语言编程接口ADSAPI为方便各种计算机高级语言及其环境使用ADS通讯ADS访问变量方式TwinCATADS访问变量有两种方式:1.地址方式一个PLC变量的地址由两部分组成:GroupIndex和OffsetIndex:GroupIndex一般用于区别寄存器类型,在TwinCATADS设备中为常量,具体内容可以参考InformationSystem(后附常用的GroupIndex值)。OffsetIndex为变量的偏移地址,在PLC中为该变量的地址。2.变量名方式在TwinCATADS设备中每个变量都有一个句柄(Handle)。适用变量名访问变量首先需要得到该变量的句柄。(不同的高级语言方式略有不同)
11碱清它绚醚行澡给龄搔待蹦醇呜翁歌傍迢荡谋翘床盅兜那讣巍跃谐汕阜唬TwinCAT高级语言编程接口TwinCAT高级语言编程接口ADS访问变量方式TwinCATADS访问变量有两种方式ADS组件库文件组成简介
12ADS组件库集成在TwinCAT软件中,安装任何版本的TwinCAT软件都包含ADS通讯组件,如果用户希望在没有安装TwinCAT软件的计算机适用ADS通讯组件可以安装Supplement中的TwinCAT_ADS_Communication_Library此为免费产品。除需要复制到Windows/System32目录外绝大部分相关文件可以在TwinCAT安装目录找到。假设TwinCAT安装路径为C:\TwinCAT文件描述C:\TwinCAT\ADSApi\TcAdsDll\ADSDLLC:\TwinCAT\ADSApi\.NET.NET组件(支持三个版本的Framework)C:\TwinCAT\ADSApi\AdsToJavaADSJAVADLLC:\TwinCAT\ADSApi\CompactFramework.NETCompactFramework组件C:\TwinCAT\ADSApi\LibVS97LibC:\TwinCAT\ADSApi\TcAdsWebServiceWebService组件C:\WINDOWS\system32\AdsOcx.ocxADSOCXC:\TwinCAT\TcScript.dllADS-Script-DLL如果可以建议用户最好用TwinCATCP,ADS组件出了配置稍微麻烦一些外,对于多个客户端并行通讯业有局限性讥命本隙杆螺语镭翟擦忽阿捌代仟至法姻背兜升臣藕聋悉秽幅纹碧蛰革瑟TwinCAT高级语言编程接口TwinCAT高级语言编程接口ADS组件库文件组成简介12ADS组件库Ads组件调用过程简介
13.NET调用流程新建工程添加引用TwinCAT.Ads.dll定义TcAdsClient对象
private
TcAdsClientadsClient;初始化TcAdsClient对象adsClient=newTcAdsClient();adsClient.Connect(801);
通过变量名取得变量的句柄注册DeviceNotification事件用于读写变量AddDeviceNotification读写变量接受处理返回结果释放资源矛蚂盅气攫毯雁妈之队鸭斗纪抑阂半近腥雄肮寐焕瓜瓶妆师湿淮值奈升署TwinCAT高级语言编程接口TwinCAT高级语言编程接口Ads组件调用过程简介13.NET调用ADS.NET组件通讯方式
14直接封装TcAdsDll.Dll(ADSClient工作模式)按照AMS协议组件Socket数据包直接通过TCP系统通讯(ADSServer)痒镇驭樟钓餐纂办栽千寅捣速仑囱刃怂慕沏砾估早膘脯糕签蕾罪镶督锹杠TwinCAT高级语言编程接口TwinCAT高级语言编程接口ADS.NET组件通讯方式14直接封装Ads组件调用过程简介C++在VisualC++中进行链接和程序开发时所需要的文件: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服务器中删除以前定义的通知。
15徽嫌姐勾递岩蹦肤苛可沼敞论捏奴紧椿孪搬舷履骤咸讶暮愿株嚏落层访剩TwinCAT高级语言编程接口TwinCAT高级语言编程接口Ads组件调用过程简介C++15徽嫌姐辅助工具-TwinCATADSMonitorTwinCATADSMonitor可以抓取ADS通讯数据包
16ADS数据结构帧数据通讯数据帧记录基黎遭逾契滓瓶弧溪竟珐岳卿奔权缉跳嘛钵捻康帅挟翻昆元着汛报烦寿惩TwinCAT高级语言编程接口TwinCAT高级语言编程接口辅助工具-TwinCATADSMonitorTwinC辅助工具-WiresharkPortable
17可以抓取网络适配器上的数据,包括ADSEtherCAT等,但不能抓取本地ADS数据包酋臆姨咒钦饮筐攀捧抑冻臣澈悬泳惦刀闽辉胡吵氖朋胁歧疏脱寂兄咆数鸦TwinCAT高级语言编程接口TwinCAT高级语言编程接口辅助工具-WiresharkPortable辅助工具-仿真器1.下载文件:以下路径为FTp路径()/Software/embPC-Control/CE/Solutions/CX_Emulator/emulator.zip(CE仿真器英文)/Software/embPC-Control/CE/Solutions/SDK/BeckhoffHMI500V1.3SDK.msi/Software/embPC-Control/CE/Solutions/VS_NET2005/CE5_DbgHlp.zip2.仿真器安装:a.安装MicrosoftWindowsCE5.0Emulator.msi需要连接互联网b.安装完仿真器,再安装虚拟网卡驱动netsvwrap.msi3.配置:a.安装后修改StartEmulator_DE.bat文件,将参数中的/Ethernet的MAC改为本地网卡的实际MAC地址b.参数vmid后的GUID值做为保存映像是的文件夹名称。4.设置仿真器和VS.net集成环境:WindowsCE5的模拟器是基于x86的,VS2005的DeviceEmulator是基于ARM的,VS2005开发环境无法和WinCE模拟器进行集成进行远程调试。但是可以通过下面的方式实现集成:1).将CE5_DbgHlp.zip压缩包文件解压复制仿真器的\harddisk\system路径下(实际的控制器新版本系统中这些文件已经存在)2).运行Conmanclient2.exe
18括邪聚洱慎名宿蔚论喇膳曹冤翠班猾径疤草续青淀崩睡锌丹漆桑安够氖柞TwinCAT高级语言编程接口TwinCAT高级语言编程接口辅助工具-仿真器1.下载文件:18括邪聚辅助工具-仿真器(续)3).配置VS2005开发环境:a.转到“Tools-->options-->devicetools-->devices”b.选择WindowsCE5.0设备,点击“属性(properties)”按钮c.在WindowsCE5.0设备属性对话框点击“配置(configure)”按钮d.在TCP/IP配置对话框选定“使用特定的IP(usespecificIPaddress)”,输入仿真器的IP地址。下面就可以DebugCE应用程序,选择部署到WindowsCE5.0。如果部署仍然失败,运行仿真器\harddisk\system路径下的cMaccept.exe文件。测试正常后保存仿真器的设置,载关闭时选择SaveSate而不是TrueOff,这样下次启动仿真器就不需要重新设置仿真器。如果想删除保存的文件,转到“我的文档\MyVirtualMachines下,将上文提到的在StartEmulator_DE.bat设置的vmid值为名称的文件夹删除即可。如果在具体操作用什么问题,您可以随时和我们联系。vs2008注意事项:用如下文件代替CE5_DbgHlp.zip内的文件C:\ProgramFiles\CommonFiles\MicrosoftShared\CoreCon\1.0\Target\wce400\x86
19让忍杉俄邢泣焊亲窥余殴培渠硫坑喇瞬愤投囊毒抚颠伍寝诱啪柯续臆壹篮TwinCAT高级语言编程接口TwinCAT高级语言编程接口辅助工具-仿真器(续)3).配置VS2005开发环境:辅助工具-仿真器(续)最近刚刚发布了基于MicrosoftVirtualPC的WinCE6.0仿真器,能够更真实的模拟我们的硬件控制器。
20睬户缠询撩亩蓖砒灌烘神悄巷鸯觉梭愈板裤踢墟挡习悸窥辣班纱婿坏长嫌TwinCAT高级语言编程接口TwinCAT高级语言编程接口辅助工具-仿真器(续)最近刚刚发布了基于MicrosoftPLC运行状态检测1.HMI启动是需要检测PLCServer的启动状态2.在运行中检测控制器的状态举例:VS.NET:AmsRouterNotificationAdsStateChanged注:此两个事件只针对本地通讯有用(客户端和服务器端在同一个PC上)
21溯僵蚂叛仲挣腿芹南狼眯掖茧胀牢情召冒讯迂吏盖五门竭特膳辈犀相咬惩TwinCAT高级语言编程接口TwinCAT高级语言编程接口PLC运行状态检测1.HMI启动是需要检测PLCServe常用的GroupIndex
22GroupIndex值描述0x00004020M寄存器(用%M声明)0x00004021MX寄存器(用MX声明)0x0000F020I寄存器(用%I声明)0x0000F021IX寄存器(用IX声明)0x0000F030Q寄存器(用%Q声明)0x0000F031QX寄存器(用QX声明)0x0000F003取变量的句柄0x0000F005通过变量句柄访问变量值0x0000F006释放句柄1.对于MX,IX,QX寄存器的偏移地址的单位是“位”,而不是字节,计算地址需要注意2.M寄存器偏移地址最大值为0x0000FFFF,而MX,I,IX,Q,QX偏移地址最大值为0xFFFFFFFF。3.上表后三个主要用于C++语言,其他高级语言已经封装成专有方法,不需直接调用。鞍脂郧匣阮摆皇伦加佃晓嫡平库恋塘湘控下瞒疑阻可岳食纠岳刷捌欺豹雅TwinCAT高级语言编程接口TwinCAT高级语言编程接口常用的GroupIndex22GroupTwinCATSystemCOMObject可以用来远程控制TwinCATService的停止,启动等操作
23催杏搀喧扯勇傲番坤备夷浪材颇橡娱秦虽让浑壳横亮班甘羹藏佩姑绵既抖TwinCAT高级语言编程接口TwinCAT高级语言编程接口TwinCATSystemCOMObject可以用来远TwinCATSystemManagerAutomationInterface可以实现SystemManager的部分功能,如扫描IO,修改链接,激活配置等。实际应用举例:一键式系统更新:通过TwinCATSystemManagerAutomationInterface自动更新系统配置信息(tsm文件)通过PLCControlCommandLine自动更新PLC程序(PRO)
24粳紊商膜畏咽存般爵读审獭秉酶亿命梗浇侵辩毡诡酮刃疥记侯峭犁苦赘懂TwinCAT高级语言编程接口TwinCAT高级语言编程接口TwinCATSystemManagerAutomatTwinCATADSModularDeviceProfile基于ETG组织的ModularDeviceProfile规范,可以对硬件等系统模块进行监控和设置,比如显示分辨率,网卡的IP地址等。具有和PLC和高级语言接口有效:WindowsCE6.0(imageversion3.08orhigher)WindowsXPe(imageversion2.2orhigher)
25悟俯冷奠仪浪婶胡君冤绩糖硫语仿梧蔼豺友驰市起喇延蒙肌建燕惦视鸭刃TwinCAT高级语言编程接口TwinCAT高级语言编程接口TwinCATADSModularDeviceProWinCE下设置应用程序自启动的几种方法一、利用WinCE的机制:1.修改系统Init入口:运行注册表编辑器,开始(Start)-运行(Run)输入“REGEDIT”然后确定,即打开注册表。定位到[HKEY_LOCAL_MACHINE\init]然后添加新项。比如:"Launch99"="app.exe"
"Depend99"=hex:14001e00320050005a00这个是设定启动顺序,launch后面的数字越大的越是后启动,Depend90后面的指定依赖项,为16进制,上面的语句表明依赖项为launch20,launch30,launch60,launch80,launch90定义的项目。device.exe和launch30中定义的gwes.exe,注意Launch后面的数字范围为0到99,此范围之外的将不会有效果。2.放在Windows启动中。默认windows的启动文件夹被指向到windows下的startup文件夹,这个文件夹不是CF上的物理文件夹,所以不能保存用户改动的东西,如果需要用到这个文件夹,需要修改注册表将这个系统文件夹位置修改到指向CF卡(也就是HardDisk)上的一个文件夹。定位到HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ShellFolders修改Startup的值为HardDisk上的一个文件夹,然后将应用程序的快捷方式放到这个文件夹,系统启动时即会自动运行。相当于向开始菜单的启动中添加项目。
26涉烈星柴踊另朋缀甭借辫进黄泰抑下鹰粪私抬咎郸散岛夏耐震卖姥喝他熬TwinCAT高级语言编程接口TwinCAT高级语言编程接口WinCE下设置应用程序自启动的几种方法一、利用WinCE的WinCE下设置应用程序自启动的几种方法3.修改Autoexec.cmd文件这个文件位于HardDisk\System下,这个文件就是一个DOS下的批处理文件,BeckhoffCE启动时会自动运行\HardDisk\System\startup.exe程序,这个程序会查找HardDisk\System下的Autoexec.cmd文件,如果有则运行它,因此将要自定运行的命令写入这个文件,也会达到自动运行的效果,在命令前加上start关键字,则批处理程序运行完dos窗口会自动关闭。如果要关闭这个只需要将autoexec.cmd改名。以上三种方法都是利用WinCE系统机制实现自动运行应用程序的目的,用这种方法可能会产生应用程序比PLCServer先运行起来,如果应用程序中存在和PLCServer通过的过程,如果HMI先运行起来可能会造成初始化失败,因此用这种方法启动应用程序,需要在应用程序入口加上检测PLC运行状态的过程。二、利用PLC语言来运行用户定制的HMI程序这种是利用PLC库中的NT_StartProcess功能块,在PLC加载完,执行HMI应用程序,这样可以保证启动的先后顺序。三,使用WinCE6Image内部集成的StartManager工具
27猫晕丝清珊孔晒还故煌部昆墙翰奔壳马浦催峭祥堰麦寒羹斗室喊黍耘财肆TwinCAT高级语言编程接口TwinCAT高级语言编程接口WinCE下设置应用程序自启动的几种方法3.修改AutoexOPCClient-和BeckhoffOPCServer通讯大体步骤:1.PLC程序添加OPC相关属性,详细参考InformationSystem2.配置OPCServer:设置AutoCfg为83.下载:OPCFoundationwebsite下载OpcNetApi.dll,OpcNetApi.Com.dll(具有成员资格的组织才可以下载)4.在.net中编程实现OPCClient的功能枚举OPC服务器:
privateOpc.Server[]servers;servers=m_discovery.GetAvailableServers(Specification.COM_DA_20,"",null);枚举变量:通过递归调用m_server.Browse来枚举OPC中的变量
28育搭隋敦翌思面茹爆枝串网魄苑纬疗澄咸紊孪沿筐邀树撼进鳞圭钩夯婿羞TwinCAT高级语言编程接口TwinCAT高级语言编程接口OPCClient-和BeckhoffOPCServeTwinCAT高级语言编程接口
29尚德明决财水芜庆叠船溺寇媚谁堂相楔尸体醚江乞抉止构蹄嘎桓占袋嫉封取坚姿TwinCAT高级语言编程接口TwinCAT高级语言编程接口TwinCAT高级语言编程接口1尚德明决TwinCATSoftPLC工业软PLC分类:实时运行核:使用操作系统的实时性自主研发实时核编程语言PLC程序执行机制和Windows应用程序的执行机制不同,Windows应用程序是通过消息机制触发,而PLC程序的执行时通过一个定时器自动定期触发。因此对于软PLC来说,定时器的精准直接影响PLC逻辑执行的准确性和效率。自主开发的实时核和操作系统依赖性小,更稳定,更准确。目前世界上主要有三家公司开发了实时核:Beckhoff,IntervalZero,TenAsys。目前我们公司的实时核还不对外开放,TwinCAT3以后将对外开放,对外开放就意味可以使用高级语言来编写PLC程序。目前TwinCAT系统中想使用高级语言来进行控制只能使用操作系统的实时系统通过R3IO来实现另外一种软PLC。:编程语言计算机高级语言(如C++)(R3IO)IEC61131-3国际编程标准
30撑秘厦费痕郎蕴狮绿先飞妊腑镇郝呕鸿方杠泅采拔球煎币篷又晦吸据揽忽TwinCAT高级语言编程接口TwinCAT高级语言编程接口TwinCATSoftPLC工业软PLC分类:高级语言和下位的通讯方式上位用户界面和BECKHOFF产品通讯主要方式:实时非远程:R3IO非实时远程:ADS通讯,Modbus,OPC文档:R3IO:InformationSystem->TwinCAT->TwinCATR3IOADS:InformationSystem->TwinCAT->TwinCATSystem->TwinCATConnectivity
31倡懂宦绎郁剧拉樟械焰嗅泪乱欧葫缅帆捞贪玲抒筑冈管保谐囊称掏绥熊蛆TwinCAT高级语言编程接口TwinCAT高级语言编程接口高级语言和下位的通讯方式上位用户界面和BECKHOFF产品通讯方式比较通讯周期:R3IO通讯时间可以忽略,数据交换时间取决于定时器,CE试用BECKHOFF提供的TcTimer可以达到100微秒XP系统最小在1毫秒左右ADS通讯时间在2-3毫秒左右.但是考虑到ADSServer的响应时间,一个命令周期可能需要200毫秒系统拓扑:R3IO是通过指针直接访问IO内存映像.本地操作(把它当成高级语言编写的PLC)ADS是网络通讯,可以是远程访问Modbus和OPC的性能和ADS在水平以下主要介绍ADS通讯
32垒平臀赊萎倡糖明祸付椿罐啊投勉尧担侵佐釉堪谅笼私卒脉亮熏厉诲颓锭TwinCAT高级语言编程接口TwinCAT高级语言编程接口通讯方式比较通讯周期:4垒平臀赊萎倡糖明ADS简介在BeckhoffTwinCAT系统中,各个软件模块(如TwinCATPLC、TwinCATNC、Windows应用程序等)的工作模式类似于硬件设备,它们能够独立工作。各个软件模块之间的信息交换通过TwinCATADS而完成。ADS(AutomationDeviceSpecification)即自动化设备规范,它为设备之间的通讯提供路由。在TwinCATPC和Beckhoff的CX、BX、BC系列控制器中都包含TwinCAT信息路由器。因此各个ADS设备之间都能够交换数据和信息。ADS服务有TwinCAT服务程序提供,当PLC中需要调用操作系统功能时也是通过ADS命令来驱动TwinCAT服务来完成(如文本文件读写,获取系统时间等)。基于ADS的TwinCAT系统构架如下图所示:
33沪粥痒章稗漾因福际瑰果请诽鼎时旋奥衬阿莽蝎娱捏河坦兰妒丫虏妹误田TwinCAT高级语言编程接口TwinCAT高级语言编程接口ADS简介在BeckhoffTwinCAT系统中,各个软ADS通讯协议概述ADS协议处于网络通讯协议的应用层。
34应用层传输层Internet层网络接口层TCP/IP模型OSI模型疡障巷凹直原岔痪汾酒窝兄盆燥奴践捆暂臻万宫浸裴恨园懂慕忱蹦郑圆务TwinCAT高级语言编程接口TwinCAT高级语言编程接口ADS通讯协议概述ADS协议处于网络通讯协议的应用层。TwinCATADS设备标识每台TwinCATADS设备都有各自不同的AdsAmsNetId和AdsPort(端口号),以相互区别。AdsAmsNetId是TCP/IP地址的扩展,是TwinCATMessageRouter,存在于每台TwinCATPC或BeckhoffCX、BX、BC系列控制器中。例如:如果一台PC的IP地址是“0”,那么它的AdsAmsNetId就是“0.1.1”。当然,也可以对AdsAmsNetId进行修改。每台ADS设备(ADSServer)的AdsPort都各不相同,且固定不变。而ADS客户端(ADSClient)应用程序的AdsPort则是可变的。不同ADS设备的AdsPort如下图所示:ADS设备
AdsPortPC控制器中的PLCRun-timesystem1801Run-timesystem2811Run-timesystem3821Run-timesystem4831自定义任务(AdditionalTask)AdditionalTask1301AdditionalTask2302BCxxxx控制器中的PLC
800NC
500
35饮威榆咳椅盾奉别墓彰瞻联渍日袖芝就嫡指魏乡护邓兜浆倪浩遭跑敖邦券TwinCAT高级语言编程接口TwinCAT高级语言编程接口TwinCATADS设备标识每台TwinCATADSADS通讯方式ADS设备之间的通讯有多种方式,不同方式有不同的特点。一般的ADS通讯(GeneralADSServices) -异步方式(Asynchronous) ADS客户端向ADS服务器发送ADS请求,同时客户端继续自己的工作。ADS服务器处理请求后,把响应以Call-back函数方式发给客户端。 -通知方式(Notification) ADS客户端向ADS服务器发送ADS请求,ADS服务器以Call-back函数的方式不断向客户端发送响应,直到客户端取消该请求。这两种通讯方式的效率高,但需求复杂的客户端程序。注意:每个的端口最多注册550个通知优点:不会造成系统堵塞缺点:不能确保每次请求都有返回比喻:发邮件
36奴轰送痈眠浅优盅疗羔芳消粕翱顾果淡盲肥尿构顿袖挟诵臆萨址冀豆略哎TwinCAT高级语言编程接口TwinCAT高级语言编程接口ADS通讯方式ADS设备之间的通讯有多种方式,不同方式有ADS通讯方式特殊的ADS通讯(SpecificADSServices)TwinCATADS设备和Windows应用程序(例如VB、VC应用程序等)之间的通讯除了可以采用一般的ADS通讯方式外,还可以采用特殊的通讯方式,即同步通讯方式。-同步方式(Synchronous)ADS客户端向ADS服务器发送ADS请求,在通讯过程中客户端程序停止执行,直到获得ADS服务器返回的响应。这种通讯方式不需求复杂的客户端程序,但其轮循的通讯方式给系统带来比较大的负载,因此通讯效率较低。优点:能即时返回结果缺点:如果通讯故障会造成系统堵塞比喻:通电话
37磊茬遇健永柳党碉润慑勤匠犯挑桓泪宫反师洪厄位芒船犊手约蚂候禽肥疼TwinCAT高级语言编程接口TwinCAT高级语言编程接口ADS通讯方式特殊的ADS通讯(SpecificADSADSAPI为方便各种计算机高级语言及其环境使用ADS通讯,BeckhoffTwinCAT提供相如下组件:•ADS.NETComponent 适用.NET平台,VB.NET,C#等•ADS-OCX(ActiveXCOM控件) 适用于VisualBasic,VisualC++,Delphi等.•ADS-DLL 适用于VisualC++等.•ADS-Script-DLL 适用于VBScript,Jscript等脚本,创建B/S架构的应用.•JAVADLL适用于JAVA语言。•“PlcSystem.lib”PLC库ADS设备可以通过据此和其他ADS设备以及Windows进行通讯。
38澡刷谤氛审棋姚摊蒂旺瑞销誓针泌清淡惧姜吹氮眨湾沾度呢惕哀宙捷芭并TwinCAT高级语言编程接口TwinCAT高级语言编程接口ADSAPI为方便各种计算机高级语言及其环境使用ADS通讯ADS访问变量方式TwinCATADS访问变量有两种方式:1.地址方式一个PLC变量的地址由两部分组成:GroupIndex和OffsetIndex:GroupIndex一般用于区别寄存器类型,在TwinCATADS设备中为常量,具体内容可以参考InformationSystem(后附常用的GroupIndex值)。OffsetIndex为变量的偏移地址,在PLC中为该变量的地址。2.变量名方式在TwinCATADS设备中每个变量都有一个句柄(Handle)。适用变量名访问变量首先需要得到该变量的句柄。(不同的高级语言方式略有不同)
39碱清它绚醚行澡给龄搔待蹦醇呜翁歌傍迢荡谋翘床盅兜那讣巍跃谐汕阜唬TwinCAT高级语言编程接口TwinCAT高级语言编程接口ADS访问变量方式TwinCATADS访问变量有两种方式ADS组件库文件组成简介
40ADS组件库集成在TwinCAT软件中,安装任何版本的TwinCAT软件都包含ADS通讯组件,如果用户希望在没有安装TwinCAT软件的计算机适用ADS通讯组件可以安装Supplement中的TwinCAT_ADS_Communication_Library此为免费产品。除需要复制到Windows/System32目录外绝大部分相关文件可以在TwinCAT安装目录找到。假设TwinCAT安装路径为C:\TwinCAT文件描述C:\TwinCAT\ADSApi\TcAdsDll\ADSDLLC:\TwinCAT\ADSApi\.NET.NET组件(支持三个版本的Framework)C:\TwinCAT\ADSApi\AdsToJavaADSJAVADLLC:\TwinCAT\ADSApi\CompactFramework.NETCompactFramework组件C:\TwinCAT\ADSApi\LibVS97LibC:\TwinCAT\ADSApi\TcAdsWebServiceWebService组件C:\WINDOWS\system32\AdsOcx.ocxADSOCXC:\TwinCAT\TcScript.dllADS-Script-DLL如果可以建议用户最好用TwinCATCP,ADS组件出了配置稍微麻烦一些外,对于多个客户端并行通讯业有局限性讥命本隙杆螺语镭翟擦忽阿捌代仟至法姻背兜升臣藕聋悉秽幅纹碧蛰革瑟TwinCAT高级语言编程接口TwinCAT高级语言编程接口ADS组件库文件组成简介12ADS组件库Ads组件调用过程简介
41.NET调用流程新建工程添加引用TwinCAT.Ads.dll定义TcAdsClient对象
private
TcAdsClientadsClient;初始化TcAdsClient对象adsClient=newTcAdsClient();adsClient.Connect(801);
通过变量名取得变量的句柄注册DeviceNotification事件用于读写变量AddDeviceNotification读写变量接受处理返回结果释放资源矛蚂盅气攫毯雁妈之队鸭斗纪抑阂半近腥雄肮寐焕瓜瓶妆师湿淮值奈升署TwinCAT高级语言编程接口TwinCAT高级语言编程接口Ads组件调用过程简介13.NET调用ADS.NET组件通讯方式
42直接封装TcAdsDll.Dll(ADSClient工作模式)按照AMS协议组件Socket数据包直接通过TCP系统通讯(ADSServer)痒镇驭樟钓餐纂办栽千寅捣速仑囱刃怂慕沏砾估早膘脯糕签蕾罪镶督锹杠TwinCAT高级语言编程接口TwinCAT高级语言编程接口ADS.NET组件通讯方式14直接封装Ads组件调用过程简介C++在VisualC++中进行链接和程序开发时所需要的文件: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服务器中删除以前定义的通知。
43徽嫌姐勾递岩蹦肤苛可沼敞论捏奴紧椿孪搬舷履骤咸讶暮愿株嚏落层访剩TwinCAT高级语言编程接口TwinCAT高级语言编程接口Ads组件调用过程简介C++15徽嫌姐辅助工具-TwinCATADSMonitorTwinCATADSMonitor可以抓取ADS通讯数据包
44ADS数据结构帧数据通讯数据帧记录基黎遭逾契滓瓶弧溪竟珐岳卿奔权缉跳嘛钵捻康帅挟翻昆元着汛报烦寿惩TwinCAT高级语言编程接口TwinCAT高级语言编程接口辅助工具-TwinCATADSMonitorTwinC辅助工具-WiresharkPortable
45可以抓取网络适配器上的数据,包括ADSEtherCAT等,但不能抓取本地ADS数据包酋臆姨咒钦饮筐攀捧抑冻臣澈悬泳惦刀闽辉胡吵氖朋胁歧疏脱寂兄咆数鸦TwinCAT高级语言编程接口TwinCAT高级语言编程接口辅助工具-WiresharkPortable辅助工具-仿真器1.下载文件:以下路径为FTp路径()/Software/embPC-Control/CE/Solutions/CX_Emulator/emulator.zip(CE仿真器英文)/Software/embPC-Control/CE/Solutions/SDK/BeckhoffHMI500V1.3SDK.msi/Software/embPC-Control/CE/Solutions/VS_NET2005/CE5_DbgHlp.zip2.仿真器安装:a.安装MicrosoftWindowsCE5.0Emulator.msi需要连接互联网b.安装完仿真器,再安装虚拟网卡驱动netsvwrap.msi3.配置:a.安装后修改StartEmulator_DE.bat文件,将参数中的/Ethernet的MAC改为本地网卡的实际MAC地址b.参数vmid后的GUID值做为保存映像是的文件夹名称。4.设置仿真器和VS.net集成环境:WindowsCE5的模拟器是基于x86的,VS2005的DeviceEmulator是基于ARM的,VS2005开发环境无法和WinCE模拟器进行集成进行远程调试。但是可以通过下面的方式实现集成:1).将CE5_DbgHlp.zip压缩包文件解压复制仿真器的\harddisk\system路径下(实际的控制器新版本系统中这些文件已经存在)2).运行Conmanclient2.exe
46括邪聚洱慎名宿蔚论喇膳曹冤翠班猾径疤草续青淀崩睡锌丹漆桑安够氖柞TwinCAT高级语言编程接口TwinCAT高级语言编程接口辅助工具-仿真器1.下载文件:18括邪聚辅助工具-仿真器(续)3).配置VS2005开发环境:a.转到“Tools-->options-->devicetools-->devices”b.选择WindowsCE5.0设备,点击“属性(properties)”按钮c.在WindowsCE5.0设备属性对话框点击“配置(configure)”按钮d.在TCP/IP配置对话框选定“使用特定的IP(usespecificIPaddress)”,输入仿真器的IP地址。下面就可以DebugCE应用程序,选择部署到WindowsCE5.0。如果部署仍然失败,运行仿真器\harddisk\system路径下的cMaccept.exe文件。测试正常后保存仿真器的设置,载关闭时选择SaveSate而不是TrueOff,这样下次启动仿真器就不需要重新设置仿真器。如果想删除保存的文件,转到“我的文档\MyVirtualMachines下,将上文提到的在StartEmulator_DE.bat设置的vmid值为名称的文件夹删除即可。如果在具体操作用什么问题,您可以随时和我们联系。vs2008注意事项:用如下文件代替CE5_DbgHlp.zip内的文件C:\ProgramFiles\CommonFiles\MicrosoftShared\CoreCon\1.0\Target\wce400\x86
47让忍杉俄邢泣焊亲窥余殴培渠硫坑喇瞬愤投囊毒抚颠伍寝诱啪柯续臆壹篮TwinCAT高级语言编程接口TwinCAT高级语言编程接口辅助工具-仿真器(续)3).配置VS2005开发环境:辅助工具-仿真器(续)最近刚刚发布了基于MicrosoftVirtualPC的WinCE6.0仿真器,能够更真实的模拟我们的硬件控制器。
48睬户缠询撩亩蓖砒灌烘神悄巷鸯觉梭愈板裤踢墟挡习悸窥辣班纱婿坏长嫌TwinCAT高级语言编程接口TwinCAT高级语言编程接口辅助工具-仿真器(续)最近刚刚发布了基于MicrosoftPLC运行状态检测1.HMI启动是需要检测PLCServer的启动状态2.在运行中检测控制器的状态举例:VS.NET:AmsRouterNotificationAdsStateChanged注:此两个事件只针对本地通讯有用(客户端和服务器端在同一个PC上)
49溯僵蚂叛仲挣腿芹南狼眯掖茧胀牢情召冒讯迂吏盖五门竭特膳辈犀相咬惩TwinCAT高级语言编程接口TwinCAT高级语言编程接口PLC运行状态检测1.HMI启动是需要检测PLCServe常用的GroupIndex
50GroupIndex值描述0x00004020M寄存器(用%M声明)0x00004021MX寄存器(用MX声明)0x0000F020I寄存器(用%I声明)0x0000F021IX寄存器(用IX声明)0x0000F030Q寄存器(用%Q声明)0x0000F031QX寄存器(用QX声明)0x0000F003取变量的句柄0x0000F005通过变量句柄访问变量值0x0000F006释放句柄1.对于MX,IX,QX寄存器的偏移地址的单位是“位”,而不是字节,计算地址需要注意2.M寄存器偏移地址最大值为0x0000FFFF,而MX,I,IX,Q,QX偏移地址最大值为0xFFFFFFFF。3.上表后三个主要用于C++语言,其他高级语言已经封装成专有方法,不需直接调用。鞍脂郧匣阮摆皇伦加佃晓嫡平库恋塘湘控下瞒疑阻可岳食纠岳刷捌欺豹雅TwinCAT高级语言编程接口TwinCAT高级语言编程接口常用的GroupIndex22GroupTwinCATSystemCOMObject可以用来远程控制TwinCATService的停止,启动等操作
51催杏搀喧扯勇傲番坤备夷浪材颇橡娱秦虽让浑壳横亮班甘羹藏佩姑绵既抖TwinCAT高级语言编程接口TwinCAT高级语言编程接口TwinCATSystemCOMObject可以用来远TwinCATSystemManagerAutomationInterface可以实现SystemManager的部分功能,如扫描IO,修改链接,激活配置等。实际应用举例:一键式系统更新:通过TwinCATSystemManagerAutomationInterface自动更新系统配置信息(tsm文件)通过PLCControlCommandLine自动更新PLC程序(PRO)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农业合作社建设的预算与造价咨询合同
- 定制家具用户信息完善协议
- 58同城房产培训
- 人事统计培训考勤
- 少儿上镜主持课件
- 大班科学领域教学总结模版
- 阿坝师范学院《UG技术及应用》2023-2024学年第二学期期末试卷
- 陕西交通职业技术学院《大众传媒经济学》2023-2024学年第二学期期末试卷
- 陕西国际商贸学院《第二外国语二》2023-2024学年第一学期期末试卷
- 陕西工业职业技术学院《统计自然语言处理》2023-2024学年第二学期期末试卷
- 专题13 热学计算题(解析版)-2025年高考物理二轮热点题型归纳与变式演练(新高考用)
- (二模)苏北七市2025届高三第二次调研测试语文试卷(含答案)
- 2025-2030中国城市和干线铁路信号设备行业市场发展趋势与前景展望战略研究报告
- 法院调解以物抵债协议范文5篇
- 2025上半年贵州成黔企业(集团)有限公司招聘管理人员20人笔试参考题库附带答案详解
- 湖北省武汉市2025届高三下学期二月调研考试数学试卷
- 2025年志愿服务知识竞赛考试题(附答案)
- 上海市徐汇区上海中学2024-2025学年高一下学期3月月考地理试题(含答案)
- 二零二五年度研学旅行基地运营管理合同协议
- 仓储场所消防安全培训
- 山东烟台历年中考语文文言文阅读试题22篇(含答案与翻译)(截至2023年)
评论
0/150
提交评论