Soem配置汇川SV660N

这篇具有很好参考价值的文章主要介绍了Soem配置汇川SV660N。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文已参与「开源摘星计划」,欢迎正在阅读的你加入。活动链接:https://github.com/weopenprojects/WeOpen-Star​​​​​​​

目录

1. ETherCAT 状态机

2. SOEM配置过程

2.1 IP初始态转预运行

2.2 预运行转安全运行

2.3 安全运行转运行

2.4 运行状态


1. ETherCAT 状态机

Soem配置汇川SV660N

EtherCAT 设备必须支持4 种状态,负责协调主站和从站应用程序在初始化和运行时的状态
关系。
● Init:初始化,简写为 I;
● Pre‑Operational:预运行,简写为 P;
● Safe‑ Operational:安全运行,简写为 S;
● Operational:运行,简写为 O。
从初始化状态向运行状态转化时,必须按照“初始化→预运行→安全运行→运行”的顺序
转化,不可以越级。 从运行状态返回时可以越级转化。

状态的转化操作和初始化过程如下表:

Soem配置汇川SV660NSoem配置汇川SV660N

2. SOEM配置过程

2.1 IP初始态转预运行

调用ec_config_init(0),配置地址、SM等。函数结束后,应该已经进入预运行状态

2.2 预运行转安全运行

自定义PDO映射

/*
● SV660N 的 PDO 配置遵循流程:
PDO 的映射配置遵循特定的流程,具体按如下步骤执行:
1. PDO配置映射组。1C12h(或1C13h)的00h子索引写入0;
a. 清除原有的映射组。对1C12h(或1C13h)的00h子索引写入“0”即可清除该PDO配
置组;
b. 写入PDO映射组。按场景需求写入映射配置组,1C12h中预写入1600h/
1701h~1705h的值;1C13h中预写入1A00h/1B01h~1B04h的值。注意:只有
1600h和1A00h是可配置映射组,其他是固定映射配置;
c. 写入该PDO映射组总个数到1C12h(或0x1C13h)对象子索引0;
2. 配置PDO映射对象。1600h(或1A00h)的00h子索引写入0。
a. 清除原有的映射对象。对1600h(或1A00h)的00h子索引写入“0”即可清除该PDO
映射配置;
b. 写入PDO映射内容。按XML文件中的对象参数定义,分别写入到映射参数子索引
1~10中;只有支持映射的对象才能配置为PDO映射内容。
c. 写入PDO映射对象总个数,将步骤b中写入的映射个数写入到子索引0中。
说明
● PDO配置仅可以在EtherCAT通讯状态机处于预运行(Pro‑Operation,面板显示2)的时候
进行设置,否则报错。
● PDO配置参数不可存储在e2prom中,因此,每次上电后,请务必重新配置映射对象,
否则,映射对象为伺服驱动器默认参数。
*/
void process_data_config()
{
	int size = 2;
	u8_t     b;
	uint16_t w,ind;
	uint32_t dw;
	
	for(int slave = 1; slave <= *ecx_context.slavecount; slave++)
	{
		//rpdo------------
		//1c12.0
		b = 0;
		ec_SDOwrite(slave, 0x1c12, 0x00, FALSE, sizeof(b), &b, EC_TIMEOUTRXM);
		w = htoes(0x1600);
		ec_SDOwrite(slave, 0x1c12, 0x01, FALSE, sizeof(w), &w, EC_TIMEOUTRXM);
		
		//1600
		ind = 0;
		b = 0;
		ec_SDOwrite(slave, 0x1600, 0, FALSE, sizeof(b), &b, EC_TIMEOUTRXM);
		dw = htoel(0x60400010);//6040h(控制字)
		ec_SDOwrite(slave, 0x1600, ++ind, FALSE, sizeof(dw), &dw, EC_TIMEOUTRXM);
		dw = htoel(0x607a0020);//607Ah(目标位置)
		ec_SDOwrite(slave, 0x1600, ++ind, FALSE, sizeof(dw), &dw, EC_TIMEOUTRXM);
		dw = htoel(0x607c0020);//607Ch(原点偏移量)
		ec_SDOwrite(slave, 0x1600, ++ind, FALSE, sizeof(dw), &dw, EC_TIMEOUTRXM);
		b = ind;
		ec_SDOwrite(slave, 0x1600, 0, FALSE, sizeof(b), &b, EC_TIMEOUTRXM);

		//1c12.0
		b = 1;
		ec_SDOwrite(slave, 0x1c12, 0x00, FALSE, sizeof(b), &b, EC_TIMEOUTRXM);
		
		//tpdo-------------
		//1c13.0
		b = 0;
		ec_SDOwrite(slave, 0x1c13, 0x00, FALSE, sizeof(b), &b, EC_TIMEOUTRXM);
		w = htoes(0x1a00);
		ec_SDOwrite(slave, 0x1c13, 0x01, FALSE, sizeof(w), &w, EC_TIMEOUTRXM);
		
		//1a00
		ind = 0;
		b = 0;
		ec_SDOwrite(slave, 0x1a00, 0, FALSE, sizeof(b), &b, EC_TIMEOUTRXM);
		dw = htoel(0x603F0010);//603Fh(错误码)
		ec_SDOwrite(slave, 0x1a00, ++ind, FALSE, sizeof(dw), &dw, EC_TIMEOUTRXM);
		dw = htoel(0x60410010);//6041h(状态字)
		ec_SDOwrite(slave, 0x1a00, ++ind, FALSE, sizeof(dw), &dw, EC_TIMEOUTRXM);
		dw = htoel(0x60640020);//6064h(位置反馈)
		ec_SDOwrite(slave, 0x1a00, ++ind, FALSE, sizeof(dw), &dw, EC_TIMEOUTRXM);
		b = ind;
		ec_SDOwrite(slave, 0x1a00, 0, FALSE, sizeof(b), &b, EC_TIMEOUTRXM);

		//1c13.0
		b = 1;
		ec_SDOwrite(slave, 0x1c13, 0x00, FALSE, sizeof(b), &b, EC_TIMEOUTRXM);
	}
}

定义FMMU

ec_config_map(IOmap)该函数会请求进入安全运行状态

2.3 安全运行转运行

 驱动器必须按照标准 402 协议规定的流程引导伺服驱动器,伺服驱动器才可运行于指定的状态。下图为CiA402 状态机切换图:

Soem配置汇川SV660N

 Soem配置汇川SV660N

 Soem配置汇川SV660N

Soem配置汇川SV660N

启动的流程为:向6040PDO中依次写入0x6, 0x7, 0xF。如果有故障,向 6040PDO中写入0x80。

然后通过下列代码发送命令进入运行状态。需要注意的是,如果RPDO中映射了6040,对应的IOMAP中必须写入正确的配置命令(0xf)。

         ec_slave[0].state = EC_STATE_OPERATIONAL;
         /* send one valid process data to make outputs in slaves happy*/
         ec_send_processdata();
         ec_receive_processdata(EC_TIMEOUTRET);
         /* request OP state for all slaves */
         ec_writestate(0);
         chk = 200;
         /* wait for all slaves to reach OP state */
         do
         {
            ec_send_processdata();
            ec_receive_processdata(EC_TIMEOUTRET);
            ec_statecheck(0, EC_STATE_OPERATIONAL, 50000);
         }
         while (chk-- && (ec_slave[0].state != EC_STATE_OPERATIONAL));

2.4 运行状态

进行运行态后就是通过

ec_send_processdata();
ec_receive_processdata(EC_TIMEOUTRET);

循环收发过程数据了。文章来源地址https://www.toymoban.com/news/detail-445305.html

到了这里,关于Soem配置汇川SV660N的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 开源软件中参与的角色说明

    项目经理:负责项目的整体规划、组织、协调和监督。他们通常是项目的领导者,负责制定项目的目标和计划,并确保项目按时、按质量要求完成。 开发者:负责编写代码和实现项目功能。他们通常是项目的核心成员,负责实现项目的技术方案和设计,并参与项目的测试和维

    2024年02月09日
    浏览(54)
  • 龙蜥社区「人人都可以参与开源」- 共筑开源,共创未来!

    开源不仅仅是代码的开放,更是一种共享与合作的精神。通过开源,我们可以汇集全球的智慧和力量,共同解决技术难题,推动科技创新。开源项目的蓬勃发展,已经成为推动人类社会进步的一大动力,无论是在人工智能、区块链、云计算还是物联网等领域,都有着无数开源

    2024年04月17日
    浏览(30)
  • 汇川Inoproshop软件CIA402轴基本配置

    添加伺服从站后,双击“轴”会出现轴配置界面,下面按照由上至下的顺序依次对轴配置界面选项卡功能进行介绍。 一、轴基本设置 轴基本设置中包括虚轴/实轴模式两种工作模式,其定义如下表所述: 虚轴模式和实轴模式设置: 线性模式和旋转模式设置: 图中的主要选项

    2024年02月08日
    浏览(140)
  • 龙蜥社区「人人都可以参与开源」—— 走进“龙蜥社区”感受开源魅力

    🎬 鸽芷咕 :个人主页  🔥 个人专栏 : 《linux深造日志》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活!    开源这个我相信各位开发者们或多或少都听说过,简单来讲开源就是源码开放,但是不意味着使用没有限制,具体规定要根据软件的开源协议来决定。

    2024年04月11日
    浏览(49)
  • 龙蜥社区「人人都可以参与开源」——实现开源无界限,共筑创新生态

    目录 前言 龙蜥社区「人人都可以参与开源」 关于AtomGit平台 降低参与门槛,普及开源知识 开放透明的协作环境与流程 建设活跃的社区文化与网络 赋能企业与高校,培育开源新生力量 体验心得 结语 在当今数字化浪潮中,开源软件以其开放性、协作生与的新力,已经成为全

    2024年04月13日
    浏览(35)
  • 龙蜥社区「人人都可以参与开源」----自由代码盛会

    目录 一、活动平台 1、赛题-开放原子开源大赛 2、OpenAnolis Community Activity - OpenAnolis龙蜥操作系统开源社区 3、anolis-activity · AtomGit_开放原子开源基金会代码托管平台 二、完成龙蜥任务的学习心得及建议 1、学习心得 2、平台评测  3、优化建议 开发原子开源大赛,就是这个平台

    2024年04月16日
    浏览(41)
  • 龙蜥社区「人人都可以参与开源」——基于开源赛深析AtomGit平台特点

    作为一名参与者,我对于这次任务的体验深感充实而有成就感。整个过程需要进行多个步骤,从报名到最终提交作品,每一步都需要细心操作和确保准确性。 在完成这项任务的过程中,我深刻领悟到了团队协作的重要性。尽管这是一个个人完成的任务,但在整个过程中,我需

    2024年04月14日
    浏览(83)
  • 合作、参与、让开源更易用 | 亚马逊的开源文化

    JAX 是一种越来越流行的库,它支持原生 Python 或 NumPy 函数的可组合函数转换,可用于高性能数值计算和机器学习研究。JAX 提供了编写 NumPy 程序的能力,这些程序可以使用 GPU/TPU 自动差分和加速,从而形成了更灵活的框架来支持现代深度学习架构。在这两篇文章中我们讨论了

    2024年02月13日
    浏览(29)
  • 参与开源之夏 x OpenTiny 跨端跨框架 UI 组件库贡献,可以赢取奖金?!这份《OpenTiny 开源贡献指南》请收好?!

    大家好,我是 Kagol。 近期有几位朋友在 OpenTiny 技术交流群里询问我们在开源之夏(OSPP)的项目,希望能提前做一些准备工作。 这里给大家简单介绍下开源之夏。 开源之夏是由中科院软件所“开源软件供应链点亮计划”发起并长期支持的一项暑期开源活动,旨在鼓励在校学生积

    2023年04月16日
    浏览(31)
  • 汇川PLC学习Day3:轴控代码编写、用户程序结构说明与任务配置示例、用户变量空间与编址

    1. 新建轴 (1)新建一个轴 (2)将轴名字更新为实际名字 可以后面实例化后再更改,汇川可以在更新名字时同步更新其他编写的代码名字,汇川一大优点。 新增轴名为“Axis_1”的伺服,此名在后面代码只需引用指向即可 最后确定 2. 新建轴控代码文件 3. 轴功能块(轴FB)实例

    2024年02月09日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包