1.基本信息
版本信息 |
修改内容 |
修改人 |
V1.00 |
创建 |
林繁伟、王鹏飞、刘柏严 |
2.应用简介
本文档介绍了在Acopos中如何通过EtherPowerLink实现采集BC0083站点中的数据。
•AS版本AS2.7 SP03
•ACOPOS 操作系统:Acp10sys V2.282
•硬件是伺服Demo箱 + BC0083,如下图:
更多信息,请参照贝加莱AS3.090.18帮助中Location ID :5.4.3.6.2.2的文档。
IF789.9中IF2的EPL接口属性设置如下图:循环时间为400us。
EPL站点号为04的BC0083的X2X总线设置如下图:循环时间为400us,根据模块数量来设置总线循环时间。
3.程序编写案例
需要powerlink库函数,通过plAction函数获取所需要的数据在powerlink通讯中的偏移量。
需要定义
DeviceName 例如'IF3.ST15.IF1.ST3'
ChannelName 例如'DigitalInput01'
(1)变量定义
_LOCAL STRING DeviceName[50];
_LOCAL STRING ChannelName[50];
_LOCAL PLACTION_GET_CROSSLINK_INFO_typ GetPLOffset;
_LOCAL UINT plstatus;
_LOCAL UINT offset,bits_to_shift;
(2)循环任务
GetPLOffset.DeviceName = &DeviceName[0];
GetPLOffset.ChannelName = &ChannelName[0];
plstatus = plAction(0,plACTION_GET_CROSSLINK_INFO,&GetPLOffset,sizeof(GetPLOffset));
if(plstatus == 0)
{
offset = (GetPLOffset.Offset/32)*32;
bits_to_shift = GetPLOffset.Offset %32;
}
Offset 表示偏移量 添到ID922中。
bits_to_shift 表示在读到数据中的偏移量,此数据可以通过bit功能块,经过偏移得到1位数据。
需要注意如果bits_to_shift=10,那么实际数据在第11位,因为内部是从0开始的,所以bit功能块也许要偏移10位才能得到需要的数据。(不是9位)
4. 参数表配置
驱动器的参数表设置参照帮助中的设置。
其中ID922 表示偏移量,使用AC114的时候需要是16的整数倍。
ID923表示数据类型,通常设置为7,即按照uint32数据读取。(4表示INT32,64表示REAL)
这两个参数定义说明不可以在任意位置读取数据,每次读取数据都是32位。例如通过程序得到偏移量50,那么你可以设定ID922=32,从32位数据到64位数据都会被读取,偏移量50在这里变成50-32=18位数据,通过其他功能块可以将偏移量18的数据提取出来。你也可以设定ID922=48,那么从48到80位数据会被读取。
ID595用来设置循环读取通道3读取哪一个节点数据,如果BC0083波码为4,这里就设定4,922。
读取到的参数放在ID548中。
ACP10PAR_CONFIG_MA3_CYCLIC_POS 595
ACP10PAR_MA3_CYCLIC_POS 548
ID595与ID 548对应。
ACP10PAR_CONFIG_MA2_CYCLIC_POS 594
ACP10PAR_MA2_CYCLIC_POS 543
ID594与ID 543对应。
ACP10PAR_CONFIG_MA1_CYCLIC_POS 593
ACP10PAR_MA1_CYCLIC_POS 542
ID593与ID 542对应。
对应关系和设置同步是一样的。
通过BIT功能块来使用4个字节中的某些位
模式10 :yi = (xi >> bi) & ai 移位后再与
例1:
上图标示,将id548(接收到的数据)移位24位后于1与,结果放在id13016 BITVALUE1+0中。将id548(接收到的数据)移位25位后于1与,结果放在id13024 BITVALUE2+0中。限位id修改为13016 BITVALUE1+0,13024 BITVALUE2+0.
例2:
上图标示,将id543(接收到的数据)移位24位后于1与,结果放在id13016中。将id543(接收到的数据)移位25位后于1与,结果放在id13024中。将id543(接收到的数据)移位26位后于1与,结果放在id13032中。然后将寻参id,限位id修改为13016,13024,13032。
例3:
5. 应用测试案例
5.1 输入输出的设定
DO9322的2个输出程序设置如下:主要是为了产生2路的脉冲,高电平0.4ms,低电平0.4ms。分别接到DI9371的第2个输入点和第10个输入点。便于观察和分析。
5.2 EPL总线的数据包分析
下载程序后,使用wireshark抓包软件就能够抓取EPL总线的数据包。
5.2.1 选择个人电脑的以太网接口
5.2.2 选择接到EPL总线的以太网接口,打钩后,即可按Start进行数据采集。
5.2.3 抓包就开始工作,直到点击Stop。
5.2.4 抓包就开始工作,直到点击Stop。
可以看到主站每0.4ms都会发送SoC数据,
5.2.5 从数据包里面有变化值的位就对应ID9371对应的第2个和第10个点。
00/02: 0000 00X0
00/02: 0000 00X0
5.3 驱动器参数表的设置
5.3.1 驱动器的参数表设置参照帮助中的设置。
数据帧位的偏置ID922设置是16的倍数(驱动器Acopos是使用AC114),当使用AC112时候,应该是8的倍数。要留意高低位的排布。
ID922设置为 0时候:16#00F5 00F5
ID922设置为16时候:16#F500 00F5
读回来是32位的UINT32的,因为Acopos驱动器处理芯片是32位机器字长。
5.3.2 Trace到ID548
MA3_CYCLIC_POS如下图:从图中可以分析到,数据是0.4ms跳变的。
5.3 驱动器参数表的设置
5.3.1 通过BIT功能块来使用4个字节中的某些位
模式10 :yi = (xi >> bi) & ai 移位后再与
5.3.2 数据中某位的使用:
例如映射为正限位或负限位。
6.结论
•ACOPOS可以按设置的POWERLINK循环时间获取到POWERLINK网络上的数据(可以是其它站点的IO数据或其它ACOPOS上的数据)。
•展望:
▪另外还可以和EPL站点中模拟量输入和编码器输入进行耦合。
▪EPL站点是把自己的数据广播出去的,而EPL的其他站点可以直接采集EPL总线上的数据,这样能够得到高速数据同步,可应用于某些方案和应用上。
▪另外是可用于缺少输入端子的ACOPOSmicro和ACOPOSmulti。