第6章_TwinCAT库文件

第6章_TwinCAT库文件
第6章_TwinCAT库文件

6. TwinCAT库文件 (172)

6.1. 温控库 (172)

6.1.1. 简介 (172)

6.2. 控制工具箱TcPlcControllerToolbox.lib (172)

6.2.1. 滤波 (172)

6.2.2. PID (174)

6.2.3. PWM输出 (175)

6.2.4. 设定点发生器SetpointGeneration (176)

6.3. 调用Windows和TwinCA T功能的库TcUtility.lib (177)

6.3.1. 调用Windows的功能 (177)

6.3.2. 读取IP地址和修改注册表 (178)

6.3.3. 启动和停止应用程序 (179)

6.3.4. 内存操作 (180)

6.3.5. 调用TwinCAT System Manager的功能 (181)

6.3.6. BCD码转换 (181)

6.4. EtherCAT主站和从站的控制TcEtherCAT.lib (182)

6.4.1. EtherCAT状态切换 (182)

6.4.2. EtherCAT从站的参数设置 (186)

6.4.3. EtherCAT数据包统计 (190)

6.4.4. EtherCAT诊断 (190)

6.5. 其它有用的库 (190)

第171页共1001 页2013-10-25

6.TwinCAT库文件

6.1. 温控库

例程及文档:

“\配套文档\第6章_TwinCA T库文件\1 温控库\\温度库例子V1.1\说明”

作者是倍福广州分公司的Swen Chen。

1,使用DEMO程序之前,请观看视频“\温度库例子V1.1\说明\温度库说明_Swen.exe”。2,温控所需要的库文件在“\温度库例子V1.1\Lib\TcTempCtrl.lib”。

3,详细的温控库说明:“\温度库例子V1.1\说明\TcPlcLibTempControl.CHM”。

4,BECKHOFF的温控解决方案:“\配套文档\第6章_TwinCA T库文件\1 温控库\基于PC的温度控制解决方案.pdf”。

6.1.1.简介

6.2. 控制工具箱TcPlcControllerToolbox.lib

库文件:“\配套文档\第6章_TwinCAT库文件\2 控制工具箱\Lib”。

DEMO程序:“\配套文档\第6章_TwinCA T库文件\2 控制工具箱\Demo”

帮助文件及说明文档:“\配套文档\第6章_TwinCAT库文件\2 控制工具箱\说明”

6.2.1.滤波

比较常用的是移动平均滤波“FB_CTRL_MOVING_A VERAGE”

数字平均滤波“FB_CTRL_ARITHMETIC_MEAN”

第172页共1001 页2013-10-25

其它滤波方式请参考帮助文档。

第173页共1001 页2013-10-25

6.2.2.PID

最基础的PID不需要Controller Toolbox,只需要免费的TcUtinity.lib中的“FB_BasicPID”。

帮助信息参考:“\配套文档\第6章_TwinCA T库文件\4 TcUtility库\Lib”

TcPlcControllerToolbox.lib中提供的多种PID控制,分别对应最简单的ON/OFF输出或者模拟量输出。在帮助文件中在详细描述各FB的用法。

第174页共1001 页2013-10-25

帮助信息和库文件:“\配套文档\第6章_TwinCA T库文件\4 TcUtility库\Lib”

6.2.3.PWM输出

第175页共1001 页2013-10-25

帮助信息和库文件:“\配套文档\第6章_TwinCA T库文件\4 TcUtility库\Lib”

6.2.4.设定点发生器SetpointGeneration

第176页共1001 页2013-10-25

帮助信息和库文件:“\配套文档\第6章_TwinCA T库文件\4 TcUtility库\Lib”

6.3. 调用Windows和TwinCAT

功能的库TcUtility.lib

6.3.1.调用Windows的功能

关机:NT_Shutdown

退出关机:NT_AbortShutdown

重启:NT_Reboot

读取系统时间:NT_GetTime,

设置系统时间:NT_SetLocalTime

以上操作都是上升沿触发,NetID为空,表示操作控制器本身的Windows。

如果要操作其它PC,对方应安装有TwinCAT并且处于Config Mode或者Runing Mode,并且互相已添加路由“Add Router”。此时只要在“NetID”处输入对方PC的Ams NetID。

在下图中,“1”处确认是目标控制器后,依次点击“2”到“4”处,可以验证对方PC是否在控制器的路由表中。

第177页共1001 页2013-10-25

第 178页 共 1001 页 2013-10-25

如果不在,可以点击“5”处的按钮,为目标控制器添加路由。

6.3.2. 读取IP 地址和修改注册表

读取IP 地址的功能块:FB_GetAdaptersInfo

此功能块可以读出目标控制器上所有以太网卡的信息,IP 地址只是其中一个子项。

修改注册表的功能块:

FB_RegSetValue

用这个功能块,可以操作任何一个注册表项。

例程:“\配套文档\第6章_TwinCAT库文件\4 TcUtility库\设置IP地址”

“Test_NETID_OK.pro”演示如何修改NetID,“Test_IP_OK.pro”演示如何修改IP地址。

6.3.3.启动和停止应用程序

启动应用程序:

Dirname中填写EXE文件所在的路径,PathStr中填写路径和EXE文件名。Start上升沿触发操作。

停止应用程序:使用同一个功能块,但接口变量PathStr的值为:

'C:\Windows\System32\taskkill /im HMI_name/t ';(*其中HMI_name是应用程序名称*)

例程:“\配套文档\第6章_TwinCAT库文件\4 TcUtility库\启用和中止应用程序”。

第179页共1001 页2013-10-25

6.3.4.内存操作

内存比较、复制、移动,在TcSystem.lib中。

内存比较:MEMCMP

内存复制:MEMCPY

内存移动:MEMMOVE

内存设置:MEMSET,把指定地址开始的N个字节,全部设置为一个固定值。

注意:

1,内存操作是非常底层的数据访问,它忽略了变量的类型,所以移动和复制时必须小心。2,内存操作是函数Function,不是功能块Function Block,所以使用时不用声明实例变量。3,直接针对数据地址的访问,所以经常配合ADR(变量名) 函数或者指针变量来操作。关于指针的用法,参考第3章。

(“\配套文档\第3章_TwinCAT开发环境的深入介绍\1_PLC Control\3.1.7 数组和指针”)

第180页共1001 页2013-10-25

6.3.5.调用TwinCAT System Manager的功能

TwinCAT重启:TC_Restart

读TwinCAT占用CPU的百分比:TC_CpuUsage

PLC复位、停止、启用:PLC_Reset、PLC_Stop、PLC_Start。

通常只针对其它PLC操作,否自己自己停止后不能启动,

6.3.6.BCD码转换

当使用Modbus通讯,经ASCII码传输变量值的时候,会需要在BCD码和DEC值之间转换。

第181页共1001 页2013-10-25

6.4. EtherCAT主站和从站的控制TcEtherCAT.lib

TcEtherCAT.lib是TwinCA T自带的库文件,位于“\TwinCAT\PLC\Lib\”路径下。

调用TcEtherCAT.lib,几乎System Manager中所有的EtherCA T诊断、配置、调试动作,都可以从PLC程序经过FB功能块来实现。

6.4.1.EtherCAT状态切换

设备的EtherCAT状态,是指主站或者从站的EtherCA T通讯接口状态,而不是设备本身的工作状态。比如一个简单的DI模块EL1014,如果信号是高电平,模块上的指示灯亮,说明模块本身的工作状态是正常的,但是如果它的EtherCAT通讯通讯状态不正常,信号就进不了PLC。

在下图的界面中可以看到主从站的EtherCAT状态:

1:确认目标控制器正确,确认IO Device与实际一致。

2:在I/O Device选中EtherCA T

3:选中Online页面。

4:此处显示EtherCA T主站的状态

5:此处显示各EtherCA T从站的状态

设备的EtherCAT状态,依次为Init、PreOP、SafeOP和OP状态。

Init:初始化状态,这个阶段主要是验证设备是否存在,以及型号是否正确。

PreOP:准备运行状态,Mailbox通讯启用,可以对从站的COE或者SOE参数进行配置。SafeOP:安全运行状态,刷新Input变量但Output变量被禁止。

第182页共1001 页2013-10-25

OP :正常工作状态。按任务周期刷新Process Data(Input变量但Output变量)

每当TwinCAT启动时,EtherCAT主站和从站设备的状态按以下顺序自动切换:先初始化EtherCAT主站,初始化成功后主站切换到PreOP状态。

然后初始化每个从站,成功后也切换到PreOP状态。

等待任务启动,触发EtherCAT通讯。只要启动的PLC任务下有一个变量链接到一个EtherCAT设备的Process Data,那么每个PLC周期都会触发一次EtherCA T通讯。

主站切换到Safe OP状态

从站切换到Safe OP状态

主站切换到OP状态

从站切换到OP状态

注意,从站的状态不能高于主站。比如,主站还在PreOP状态,从站不可能进到OP状态。

通常情况下,不需要PLC程序干预EtherCAT状态切换。但在某些特殊情况,比如要修改从站的参数,而某些参数禁止在OP状态下修改,这时就必须切换设备的EtherCA T状态了。

切换设备的EtherCA T状态有两种方法,一种是调试人员在System Manager中点击按钮,第二种是用PLC程序调用FB功能块来实现。

上图中“4”处的按钮“Init”“PreOP”“SafeOP”“OP”就可以切换主站的EtherCA T状态。而下图中的“3”处就可以切换从站的EtherCA T状态。

而在PLC程序中实现EtherCAT设备的状态切换就需要调用TcEtherCAT.lib中的以下功能块:

第183页共1001 页2013-10-25

获取EtherCAT主站的状态:FB_EcReqMasterState

设置EtherCAT主站的状态:FB_EcSetMasterState

获取EtherCAT从站的状态:FB_EcReqSlaveState

设置EtherCAT从站的状态:FB_EcSetSlaveState

在这些功能块中,共同的接口变量是sNetID。此处应该输入EtherCAT主站的NetID,类型为String。如图:

那么,sNetID就等于’192.168.1.152.2.1’,注意是半角单引号。

如果程序要通用,也可以把下图中的数组链接到PLC变量,

第184页共1001 页2013-10-25

上图中的“C0 A8 01 98 02 01”转换成十进制显示就是“192-168-1-152-2-1”。这是个6Byte的数组,需要在程序中运算出sNetID字符串。

FB_EcReqSlaveState和FB_EcSetSlaveState还需要输入从站地址nSlaveAddress。默认的从站地址是System Manager配置时自动生成的,如图所示:

依次点击1、2、3处,从站地址就在“4”的位置。

从站地址默认从1001开始排序,第1个从站地址是1001,第2个是1002,图中的1007就是第7个从站。注意此处显示的地址是十进制。

接口变量ReqState和CurrentState,就对应主站和从站的Online页面上的Current State和Request State,类型为

第185页共1001 页2013-10-25

6.4.2.EtherCAT从站的参数设置

EtherCAT的从站参数有两种组织方式:COE(CanOpen Over EtherCAT)和SOE(Sercos Over EtherCAT)。所有的EL模块和绝大部分第三方设备都采用COE方式,而Beckhoff的伺服驱动器AX5000系列则采用SOE的方式。

CoE从站的参数化使用下图中“COE”项下的功能块:

这些功能块,除了要输入主站NetID,从站地址nSlaveAddr之外,还要求输入参数号。

COE的参数由nIndex和nSubIndex组成。可以从下图查看一个参数的nIndex和nSubIndex:

以图中的“4061:01 Enable user scale”为例,该参数的Index为16#4061;SubIndex为16#01。如果“4”处显示的是“Online Data”字样,表示列表“Value”中是当前值。

第186页共1001 页2013-10-25

第 187页 共 1001 页

2013-10-25

有的第三方COE 伺服驱动器,初时并不显示COE 列表。这时需要点击按钮“Advanced ”:

选择正确的EDS 文件,然后才能在CoE Online 列表中显示全部参数。

实际上,SoE 从站参数化,多半是AX5000伺服驱动器。此时推荐使用TcMc2Drive.Lib 中的功能块:

上图可见,这些功能块的接口变量,都是Axis ,不需要输入主站NetID (为空白),也不需要从站地址。并且,除了FB_SoeRead 和FB_SoeWrite 可以用于读写所有SOE 参数之外,还针对常用功能做了专门的功能块,比如FB_SoeReset (驱动器重启)

FB_SoEReadMotorTemperature(读电机温度)等。

TcMc2Drive.Lib中的FB_SoeRead和FB_SoeWrite和TcEtherCA T.Lib中的FB_EcSoeRead和FB_EcSoeWrtie功能类似,都可以访问任意P参数或者S参数。

这些功能块都要求输入参数号(nIdn)和参数项(nElement)。读写参数的值,nElement都为16#40,而nIdn的值可以从下图查看:

以“S-0-0032 Primary operation mode”为例,它的nIdn:=S_0_IDN +32;(十进制)。

第188页共1001 页2013-10-25

以P-0-0201 Norminal main V oltage为例,它的nIdn:=P_0_IDN +201;(10进制)。

而P_0_IDN和S_0_IDN,是库文件“TcDrive.Lib”中定义的常数。

第189页共1001 页2013-10-25

6.4.3.EtherCAT数据包统计

6.4.4.EtherCAT诊断

下图中“1”处的功能块,可以实现“4”处的功能:读出所有从站的地址、EtherCA T状态、CRC校验信息等。

利用上述功能块做成的EtherCA T诊断程序的例程:

“\配套文档\第6章_TwinCA T库文件\3 EtherCA T库\Demo”

6.5. 其它有用的库

第190页共1001 页2013-10-25

相关主题
相关文档
最新文档