API 手册
ec_master_init
创建并初始化一个主站
1 int ec_master_init(ec_master_t *master, uint8_t master_index);
parameter |
description |
|---|---|
master |
主站对象指针 |
master_index |
主站索引号,从 0 开始 |
ec_master_deinit
销毁主站对象,暂不支持
1 void ec_master_deinit(ec_master_t *master);
ec_master_start
启动主站周期任务,所有slave 进入 op 模式,开始周期性执行 PDO 通信。 此函数需要等待 slave 扫描完成后才能调用,函数内部会检查是否扫描完成,如果没有则死等(会进行任务切换)。
1 int ec_master_start(ec_master_t *master);
parameter |
description |
|---|---|
master |
主站对象指针 |
ec_master_stop
停止主站周期任务,所有 slave 退回到 preop 模式。
1 int ec_master_stop(ec_master_t *master);
parameter |
description |
|---|---|
master |
主站对象指针 |
ec_master_get_slave_domain
获取指定 slave 的 PDO domain 的起始地址,起始地址为 output domain。 对应 slave rxpdo + txpdo 内容。 需要搭配 ec_master_get_slave_domain_size 一起使用,用于获取指定 slave 总的 PDO domain。
1 uint8_t *ec_master_get_slave_domain(ec_master_t *master, uint32_t slave_index);
parameter |
description |
|---|---|
master |
主站对象指针 |
slave_index |
从站索引号,从 0 开始 |
return |
指向指定 slave PDO domain的指针,起始地址为 output domain |
ec_master_get_slave_domain_size
获取指定 slave 的 PDO domain 的大小,包含 input domain 和 output domain。
1 uint32_t ec_master_get_slave_domain_size(ec_master_t *master, uint32_t slave_index);
parameter |
description |
|---|---|
master |
主站对象指针 |
slave_index |
从站索引号,从 0 开始 |
return |
指定 slave PDO domain 的大小,单位字节 |
ec_master_get_slave_domain_output
获取指定 slave 的 PDO output domain 起始地址。 对应 slave rxpdo 内容。 需要搭配 ec_master_get_slave_domain_osize 一起使用。
1 uint8_t *ec_master_get_slave_domain_output(ec_master_t *master, uint32_t slave_index);
parameter |
description |
|---|---|
master |
主站对象指针 |
slave_index |
从站索引号,从 0 开始 |
return |
指向指定 slave PDO output domain 的起始地址 |
ec_master_get_slave_domain_osize
获取指定 slave 的 PDO output domain 的大小。
1 uint32_t ec_master_get_slave_domain_size(ec_master_t *master, uint32_t slave_index);
parameter |
description |
|---|---|
master |
主站对象指针 |
slave_index |
从站索引号,从 0 开始 |
return |
指定 slave PDO domain 的大小,单位字节 |
ec_master_get_slave_domain_input
获取指定 slave 的 PDO input domain 的起始地址。 对应 slave txpdo 内容。 需要搭配 ec_master_get_slave_domain_isize 一起使用,用于获取指定 slave 总的 PDO domain。
1 uint8_t *ec_master_get_slave_domain_input(ec_master_t *master, uint32_t slave_index);
parameter |
description |
|---|---|
master |
主站对象指针 |
slave_index |
从站索引号,从 0 开始 |
return |
指向指定 slave PDO domain的指针,起始地址为 output domain |
ec_master_get_slave_domain_isize
获取指定 slave 的 PDO input domain 的大小。
1 uint32_t ec_master_get_slave_domain_isize(ec_master_t *master, uint32_t slave_index);
parameter |
description |
|---|---|
master |
主站对象指针 |
slave_index |
从站索引号,从 0 开始 |
return |
指定 slave PDO input domain 的大小,单位字节 |
ec_coe_download
使用 SDO 下载数据到从站对象字典。
1 int ec_coe_download(ec_master_t *master,
2 uint16_t slave_index,
3 ec_datagram_t *datagram,
4 uint16_t index,
5 uint8_t subindex,
6 const void *buf,
7 uint32_t size,
8 bool complete_access);
parameter |
description |
|---|---|
master |
主站对象指针 |
slave_index |
从站索引号,从 0 开始 |
datagram |
数据报文对象指针, 需要使用 ec_datagram_init 初始化后传入 |
index |
从站对象字典索引号 |
subindex |
从站对象字典子索引号 |
buf |
指向数据缓冲区的指针 |
size |
缓冲区大小,单位字节 |
complete_access |
是否使用完整访问方式 |
return |
函数执行结果,0 表示成功,非 0 表示失败 |
ec_coe_upload
使用 SDO 上传从站对象字典的数据。
1 int ec_coe_upload(ec_master_t *master,
2 uint16_t slave_index,
3 ec_datagram_t *datagram,
4 uint16_t index,
5 uint8_t subindex,
6 const void *buf,
7 uint32_t maxsize,
8 uint32_t *size,
9 bool complete_access);
parameter |
description |
|---|---|
master |
主站对象指针 |
slave_index |
从站索引号,从 0 开始 |
datagram |
数据报文对象指针, 需要使用 ec_datagram_init 初始化后传入 |
index |
从站对象字典索引号 |
subindex |
从站对象字典子索引号 |
buf |
指向数据缓冲区的指针 |
maxsize |
缓冲区最大大小,单位字节 |
size |
实际上传数据的大小指针,单位字节 |
complete_access |
是否使用完整访问方式 |
return |
函数执行结果,0 表示成功,非 0 表示失败 |
ec_foe_write
使用 FOE 写文件到从站。
1 int ec_foe_write(ec_master_t *master,
2 uint16_t slave_index,
3 ec_datagram_t *datagram,
4 const char *filename,
5 uint32_t password,
6 const void *buf,
7 uint32_t size);
parameter |
description |
|---|---|
master |
主站对象指针 |
slave_index |
从站索引号,从 0 开始 |
datagram |
数据报文对象指针, 需要使用 ec_datagram_init 初始化后传入 |
filename |
文件名字符串指针 |
password |
文件访问密码 |
buf |
指向数据缓冲区的指针 |
size |
缓冲区大小,单位字节 |
return |
函数执行结果,0 表示成功,非 0 表示失败 |
ec_foe_read
使用 FOE 从从站读文件。
1 int ec_foe_read(ec_master_t *master,
2 uint16_t slave_index,
3 ec_datagram_t *datagram,
4 const char *filename,
5 uint32_t password,
6 void *buf,
7 uint32_t maxsize,
8 uint32_t *size);
parameter |
description |
|---|---|
master |
主站对象指针 |
slave_index |
从站索引号,从 0 开始 |
datagram |
数据报文对象指针, 需要使用 ec_datagram_init 初始化后传入 |
filename |
文件名字符串指针 |
password |
文件访问密码 |
buf |
指向数据缓冲区的指针 |
maxsize |
缓冲区最大大小,单位字节 |
size |
实际读取数据的大小指针,单位字节 |
return |
函数执行结果,0 表示成功,非 0 表示失败 |
ec_eoe_start
配置主从站 IPv4 并启动 EoE 通信。
1 int ec_eoe_start(ec_eoe_t *eoe,
2 ec_master_t *master,
3 uint16_t slave_index,
4 struct ec_eoe_ip_param *master_ip_param,
5 struct ec_eoe_ip_param *slave_ip_param);
parameter |
description |
|---|---|
ec_eoe_t |
EoE 对象指针 |
master |
主站对象指针 |
slave_index |
从站索引号,从 0 开始 |
master_ip_param |
主站 IP 参数指针 |
slave_ip_param |
从站 IP 参数指针 |
return |
函数执行结果,0 表示成功,非 0 表示失败 |
备注
主站和从站需要在同一个网关下才能通信成功,并且 mac 地址需要不同。
ec_datagram_init
初始化数据报文对象,datagram 内存采用动态初始化。
1 void ec_datagram_init(ec_datagram_t *datagram, size_t mem_size);
parameter |
description |
|---|---|
datagram |
数据报文对象指针 |
mem_size |
数据报文内存大小,单位字节 |
ec_datagram_init_static
初始化数据报文对象,datagram 内存采用静态初始化。
1 void ec_datagram_init_static(ec_datagram_t *datagram, uint8_t *data, size_t mem_size);
parameter |
description |
|---|---|
datagram |
数据报文对象指针 |
data |
指向数据缓冲区的指针 |
mem_size |
数据报文内存大小,单位字节 |
ec_datagram_clear
清理数据报文对象,释放动态分配的内存。
1 void ec_datagram_clear(ec_datagram_t *datagram);
parameter |
description |
|---|---|
datagram |
数据报文对象指针 |