codesys【CAN总线】

1下载设备描述文件:

必须下载设备描述文件,要不然编程软件无法正确组态。

        根据实际设备【品牌】去官网搜索下载。

以  DMA882-CAN  为例

CAN的设备描述文件是【.eds】的扩展名

安装设备描述文件。

2添加CAN总线:

1添加【CAN总线】:设置通讯速率 1Mbps

2添加【CAN主站】:设置站号【默认127】。(有SoftMotion的是有轴功能)

3在线》扫描设备

                                》复制所有设备到工程

3组态设备:

跟ECAT总线有区别,伺服下面不需要再挂载402轴。

1必须离线状态下,才能编辑

2组态PDO和SDO

PDO:周期性的刷新【寄存器表】的值。如0x606C电机速度,

                                                                你不加进去,功能块就无法知道电机速度。

SDO:相当于初始化寄存器一次。参考【0x2000】段寄存器

4使用:

FB块:Power实际操作的是0x6040和0x6041的值。

这个雷赛0x6041的默认值有故障,需要程序修改0x6041的值0x250

这里我使用了【禾川CAN库】用轴组批量控制轴。

不使用库也可以,参考0x6040的赋值操作 0x00》0x06》0x07》0x0F   ,动作0x1F

FUNCTION_BLOCK FB轴CANVAR_IN_OUTcan轴输入: _3SCOS.CANRemoteDevice;//【CAN驱动器】//ecat实轴输入:SM3_Drive_ETC_DS402_CyclicSync.AXIS_REF_ETC_DS402_CS;//【ECAT】//axis: _3SCOS.CANRemoteDevice;//【CAN驱动器】//编码器轴:SM3_Basic.FREE_ENCODER_REF;//【ENCODE】
END_VARVAR_INPUTf齿轮比:REAL:=10000;// 齿轮比【圈脉冲】u1电源:BOOL:=FALSE;// h6040u1复位:BOOL:=FALSE;u1急停:BOOL:=FALSE;u1点正:BOOL:=FALSE;// 先按急停,再按点动u1点反:BOOL:=FALSE;u1回零:BOOL:=FALSE;lf零点偏置:LREAL:=1234;u1速度模式:BOOL:=FALSE;u1绝对模式:BOOL:=FALSE;u1相对模式:BOOL:=FALSE;u1力矩模式:BOOL:=FALSE;f速度:REAL:=10;//		h6081f加速度:REAL:=10;//	h6083f减速度:REAL:=10;//	h6084f目标速度:REAL:=10;//  h60FFf绝对坐标:REAL:=5;// h607Af相对坐标:REAL:=5;// h607Ai16力矩值:INT:=5;// h6071
END_VARVAR_OUTPUTb轴使能状态			:BOOL;b伺服通信状态		:BOOL;f轴当前位置			:LREAL;f轴当前速度			:lREAL;f轴当前力矩			:REAL;e轴运行状态			:SMC_AXIS_STATE;e轴故障代码			:MC_ERROR_CO;END_VARVAR//【输入5x】x6041:UINT;// 状态字x6061:SINT;// 模式x6064:DINT;// 电机位置x606C:DINT;// 电机速度x6077:INT;//  电机力矩//【输出9y】y6040:UINT;//控制字y6060:SINT;//模式y6081:UDINT;//【u32file】速度y6083:UDINT;//【u32file】加速y6084:UDINT;//【u32file】减速y607A:DINT;//【i32Targe】定位坐标y60FF:DINT;//【i32Targe】模式:速度y6071:INT;// 【i16Targe】模式:力矩y607C:DINT;//原点【刀具偏置】
//=====================================//AXIS: _3SCOS.CANRemoteDevice;//		:=ADR(DMA882_CAN);	Axis1: AXIS_REF_CO  ; // 新建局部变量
//==============================================MC_Power_CO			:MC_Power_CO;MC_Home_CO			:MC_Home_CO;MC_Reset_CO			:MC_Reset_CO;MC_Stop_CO			:MC_Stop_CO;MC_MoveVelocity_CO	:MC_MoveVelocity_CO;//【速度模式】MC_MoveAbsolute_CO	:MC_MoveAbsolute_CO;//【绝对定位】MC_MoveRelative_CO	:MC_MoveRelative_CO;//【相对定位】MC_Jog_CO			:MC_Jog_CO;//【点动】先按stop再按点动TON_0: ton;//【刷新定位】u16线程count: UINT;
END_VAR
u16线程count:=u16线程count+1;axis1.pDevice:= ADR(can轴输入);	//axis1.pDevice:= ADR(axis);
//【输入5x】
axis1.In.wStatusWord:=x6041; // 状态字
axis1.In.sActMode:=x6061;	 // 模式
axis1.In.dActPosition:=x6064;// 电机位置
axis1.In.dActVelocity:=x606C;// 电机速度
axis1.In.dActTorque:=x6077;  // 电机力矩// 修改0x6041默认值0x0250
// IF gvl.h6041 = 16#0200
// OR  gvl.h6041 = 16#8270
// OR  gvl.h6041 = 16#0270//axis1.In.wStatusWordIF Axis1.In.wStatusWord =16#200 		    //【雷赛】默认0x0200,要改成 0x0250
OR (Axis1.In.wStatusWord AND 16#0F) =16#00 	// 8670,【xxx0】
THENAxis1.In.wStatusWord := 16#250;// 准备
END_IF
//【程序处理】A00_功能块调用();
//【输出9y】y6040:=axis1.Out.wControlWord;//控制字y6060:=axis1.Out.sSetMode;//模式y6081:=axis1.Out.dProfileVel;//速度   '6082冲击速度'y6083:=axis1.Out.dProfileAcc;//加速y6084:=axis1.Out.dProfileDec;//减速y607A:=axis1.Out.dTargetPos;//【模式定位】'追踪定位'y60ff:=axis1.Out.dTargetVel;//【模式速度】y6071:=axis1.Out.dTargetTor;//【模式力矩】y607C:=axis1.Out.dHomeOffset;// 原点偏置//【显示结果】
b轴使能状态				:=axis1.bRegulatorRealState;//---轴使能状态
b伺服通信状态           :=Axis1.bCommunication;		//---读取从站通信状态f轴当前位置				:=Axis1.fActPosition;		//---读取伺服 反馈位置
f轴当前速度				:=Axis1.fActVelocity;		//---读取伺服 反馈速度
f轴当前力矩				:=Axis1.fActTorque;			//---读取伺服 反馈转矩e轴运行状态				:=Axis1.nAxisState;			//---读取轴运行状态
e轴故障代码				:=Axis1.eErrorID[0];		//---读取当前的轴故障代码

5其他参考资料:

DMA882-CAN【驱动器】站127_dummyusage-CSDN博客

canopen协议详解【C#二次开发】_canopen通讯协议-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/851126.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

同盾中文点选验证码识别方法

中文验证码一直是识别的难题,首先他分类的种类很多,常见中文都有3500个,而且一般中文验证码都会有变形,导致每一个文字都需要大量训练样本。假设每一个汉字样本需要100个,100350035万个样本,所以标记的样本…

excel拖拽怎么使单元格序号不递增

拖拽下来不仅不递增,而且右下角没有倒三角可以设置改变,(即没有下图这个) 则,可以采用以下方法 excel数值拖拽不递增还有一个更快更快捷的方法,这就运用到了excel快捷键,我们把鼠标放到单元格的…

C/C++|Pimpl Idiom(Pointer to IMPLementation) 指针实现模式浅析

Pimpl Idiom(Pointer to IMPLementation),也称为 “Opaque Pointer”(不透明指针)或 “Cheshire Cat”(柴郡猫)模式或者"指针实现模式"和"实现隐藏模式"。这种模式通过将类…

模板字符串

模板字符串(Template Literals)是在ES6(ECMAScript 2015)中引入的一种新的字符串表示法,它提供了构建字符串的更加强大和灵活的方式。模板字符串可以通过反引号()(而不是普通的单引号…

04-4.2.4 KMP 算法的进一步优化

👋 Hi, I’m Beast Cheng👀 I’m interested in photography, hiking, landscape…🌱 I’m currently learning python, javascript, kotlin…📫 How to reach me --> 458290771qq.com 喜欢《数据结构》部分笔记的小伙伴可以订…

IP分片的隐患,以及TCP分片

好的,我们来用一个生活中的例子更详细地解释 MTU、MSS,以及 IP 和 TCP 分片。 MTU 和 MSS 的概念 MTU(Maximum Transmission Unit,最大传输单元): 假设你搬家,需要用卡车搬运家具。 卡车的最…

什么是动态联编、静态联编?

动态联编(Dynamic Binding)和静态联编(Static Binding)是面向对象编程中的两个重要概念,它们描述了程序在运行时如何确定调用哪个方法或属性。 静态联编(Static Binding) 静态联编&#xff0c…

Hadoop 2.0:主流开源云架构(一)

目录 一、引例(一)问题概述(二)常规解决方案(三)分布式下的解决方案(四)小结 自从云计算的概念被提出,不断地有IT厂商推出自己的云计算平台,但它们都是商业性…

Suno小技巧大揭秘,不会这些技巧别说你懂AI音乐

Suno是一个强大的AI音乐生成工具,它不仅可以帮你快速生成音乐,还能精确地根据你的需求进行调整。无论你是音乐小白还是专业音乐人,这篇文章将揭示一些鲜为人知的Suno技巧,帮助你最大化利用这个工具的潜力。 技巧一:精准…

解读下/etc/network/interfaces配置文件

/etc/network/interfaces 是一个常见的网络配置文件,通常在 Debian 及其衍生版本的 Linux 发行版中使用。该文件用于配置网络接口和网络连接参数,允许用户手动设置网络连接的属性,包括 IP 地址、子网掩码、网关、DNS 服务器等。 以下是一个可…

时间相关格式的转化

时间转秒越界 时间不加 L 就会越界 long l 90L * 24 * 60 * 60 * 1000;System.out.println(l);固定时间格式化 Date curTime new Date();SimpleDateFormat simpleDateFormat new SimpleDateFormat("HH:mm");// 19:30System.out.println(simpleDateFormat.format(…

POJ 2887:Big String ← 块状链表

【题目来源】http://poj.org/problem?id2887【题目描述】 You are given a string and supposed to do some string manipulations.【输入格式】 The first line of the input contains the initial string. You can assume that it is non-empty and its length does not exc…

基于JSP的班级同学录网站

你好呀,我是计算机学长猫哥!如果有相关需求,文末可以找到我的联系方式。 开发语言:Java 数据库:MySQL 技术:JSP技术 工具:IDEA/Eclipse、Navicat、Maven 系统展示 首页 个人中心 同学录管…

Qt for android :解决requestperssion后无法马上访问设备的问题

描述 当需要访问到设备硬件时, 涉及到Android权限,所以需要进行权限申请, 申请完之后访问常常发现权限不足, 为什么呢? 1. 从Qt库角度看问题: 无论是 QCoreApplication::requestPermission [since 6.5] te…

确保数据一致性的技术

禁止其他人同时使用数据 互联网提供的服务是可以供大量用户同时访问的。此时,就要求即使多人同时引用同一数据,或者同时更新数据,也不会产生冲突并且可以顺利执行处理。这种处理方式被称为并发控制。 但是,如果多人同时操作同一数…

51单片机独立按键控制LED灯,按键按一次亮,再按一次灭

1、功能描述 独立按键控制LED灯,按键按一次亮,再按一次灭 2、实验原理 轻触按键:相当于是一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动米实现接通和断开;…

网络网络层之(6)ICMPv6协议

网络网络层之(6)ICMPv6协议 Author: Once Day Date: 2024年6月2日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文章可参考专栏: 通信网络技术_Once-Day的博客-CS…

WPF-UI布局

WPF布局元素有如下几个: Grid:网格。可以自定义行和列并通过行列的数量、行高和列宽来调整控件的布局。StackPanel:栈式面板。可将包含的元素在竖直或水平方向上排成一条直线,当移除一个元素后,后面的元素会自动向前移…

怎么使用useLayoutEffect

useLayoutEffect 是 React 中的一个 Hook,与 useEffect 类似,但它在浏览器绘制任何内容之前同步触发。这意味着,如果你需要在 DOM 更新后执行某些操作,并且这些操作可能会影响到组件的布局或渲染,那么使用 useLayoutEffect 会更合适。 以下是如何使用 useLayoutEffect 的…

SpringAI(二)

大模型:具有大规模参数和复杂计算结构的机器学习模型.通常由深度神经网络构建而成,拥有数十亿甚至数千亿个参数.其设计目的在于提高模型的表达能力和预测性能,应对复杂的任务和数据. SpringAI是一个AI工程领域的应用程序框架 大概推出时间是2023年7月份(不确定) 目的是将S…