【EtherCAT实践篇】十、SSC工具使用说明

news/2025/2/12 17:00:39/

      EtherCAT Slave Stack Code(SSC)是倍福提供的EtherCAT从站源代码生成工具,基于SSC工具,可以大大降低EtherCAT数据通讯程序及xml设计难度。

   本操作参考SSC软件包中的EtherCAT Slave Design Quick Guide.pdf文档。

1、创建一个SSC工程

打开SSC后,File->New,打开新建项目的对话框,这里让我们选择一个项目模板,可以使用默认选项创建,该选项提示我们All settings are available。这里我们不选默认模板,而是在点中Custom单选按钮中,下拉出一个EL9800 | 8Bit Digital I/O, 16Bit Analog Input。

2、SSC工程配置

设置设备名称为“MyApplication”

由于不在倍福EL9800开发板上运行,故“APPLICATION”置0;

应用程序文件增加自定义头文件

保存项目配置文件(.esp)。

3、创建应用程序描述文件

Tool-> Application->Create new

添加对象描述搭到Excel文件中:

保存Excel文件并关闭“import application”

4、从站应用程序生成

Start开始自动生成代码,Start开始自动生成代码。

5、代码移植

其中生成的代码中MyApplicationObjects.h非常重要,它定义了通讯传输的数据类型,并与SSC生成的MyApplication.xml一一对应。

将MyApplicationObjects.h内容替换至el9800appl.h中,并在头部文件中增加头文件#include "ecatappl.h"。

(1)宏定义 :在el9800appl.c中,增加_MY_APPLICATION_

(2)APPL_StopOutputHandler :注释原有程序,或根据需求修改。

(3)APPL_InputMapping:修改输入映射:

(4)APPL_APPL_OutputMapping:修改输出映射:

(5)APPL_Application:修改应用程序,传给主站的变量与主站传过来的变量相同。

6、验证测试

将修改后的程序编译后烧录至STM32中,同时将SSC生成的MyApplication.xml放到TwinCAT所在目录下,并对ESC芯片进行EEPROM更新。

设备扫描后 ,显示的传输变量如下,与预期相同。

同时设备进入了OP状态,对Value 1,Value 2进行不同的赋值,可以发现Result 1,Result 2会进行相应的变化。

 对应EtherCAT开发学习板:https://shop461235811.taobao.com


http://www.ppmy.cn/news/1378325.html

相关文章

Yolov8-pose关键点检测:特征融合涨点篇 | 广义高效层聚合网络(GELAN) | YOLOv9

💡💡💡本文独家改进:即结合用梯度路径规划(CSPNet)和(ELAN)设计了一种广义的高效层聚合网络(GELAN),高效结合YOLOv8-pose,实现涨点。 将GELAN添加在backbone和head处,提供多个yaml改进方法 Yolov8-Pose关键点检测专栏介绍:https://blog.csdn.net/m0_6377421…

mockjs学习

1.前言 最近面试发现之前团队协同合作的项目没有mock数据难以向面试官直接展示,所以迟到得来速学一下mockjs。 参考视频:mockJs 妈妈再也不用担心我没有后端接口啦_哔哩哔哩_bilibili 一开始查阅了一些资料,先是看了下EasyMock&#xff0c…

力扣hot100题解(python版63-68题)

63、搜索插入位置 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输…

Go语言中,如何调用C++的dll文件

我将给出一个完整的示例来说明如何调用C DLL文件。首先&#xff0c;我们将创建一个简单的C DLL&#xff0c;然后编写Go代码来调用该DLL。 创建C DLL文件&#xff08;example.cpp&#xff09;&#xff1a; #include <iostream>extern "C" {__declspec(dllexpo…

为什么main方法在Java中代表主线程?

main 方法在 Java 等编程语言中确实代表着程序的入口点&#xff0c;也就是程序开始执行的地方。当我们启动一个 Java 应用程序时&#xff0c;JVM&#xff08;Java 虚拟机&#xff09;会首先查找 main 方法&#xff0c;并从那里开始执行程序。 关于为什么 main 方法代表主线程&a…

c++之迭代器与反向迭代器

&#xff09; 正向迭代器迭代器的变量与typedef与模版operator()operator--()operator*()operator->() 反向迭代器模版与typedef与变量operator()operator--()operator*()operator->() 正向迭代器 以链表的迭代器为例 具体的代码以及可以看上一篇链表的文章:链表 迭代器的…

02 数据结构之链表

阅读引言&#xff1a; 本文只提供关于我在复习过程中实现的关于链表的代码 /* link_list.h */ #ifndef _LINK_LIST_H_ #define _LINK_LIST_H_/***********************************************Author: Hewei*Date: 2024-3-3*Brife: link list some operator method***arithmet…

Python错题集-8:AttributeError(找不到对应的对象的属性)

1问题描述 AttributeError: AxesSubplot object has no attribute arc 2代码详情 import matplotlib.pyplot as plt# 创建一个新的图形和坐标轴 fig, ax plt.subplots()# 定义弧线的参数 center (0.5, 0.5) # 圆心坐标 (x, y) width 1.0 # 半径 height 0.5 # 半径 ang…