- 博客(38)
- 收藏
- 关注
原创 sqlite3源码理解-sqlite3_open
一、源码下载从网站下载sqlite-src-3330000.zip.https://www.sqlite.org/download.html二、sqlite3_open在linux系统下,当应用程序调用sqlite3_open时,最终会调用open函数创建或打开一个数据库文件。
2020-08-27 18:49:21
1380
原创 linux设置进程CPU亲和力函数sched_setaffinity()简介
在多CPU系统中,通过sched_setaffinity()可以设置进程的CPU亲和力,使进程绑定在某一个CPU上运行,避免在CPU之间来回切换,从而提高该进程的实时性能。一、CPU MASK...
2020-04-23 21:02:56
18224
原创 libmodbus的python接口pylibmodbus简介
一、安装libmodbus在ubuntu1404环境下安装libmodbus:#sudo apt-get install libmodbus-devlibmodbus源码下载地址为:https://libmodbus.org/download/二、下载pylibmodbuspylibmodbus下载地址为:https://pypi.org/project/pylibmodbus/#...
2020-02-27 20:06:53
1861
原创 Linux 进程间通信-消息队列
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...
2019-05-30 19:03:31
644
1
原创 Linux 设备树详解
本文基于天嵌E9V3开发板,详解设备树的语法结构和用法。一、设备树二、E9V3设备树总览E9V3设备树总览:三、设备树编写规则
2018-11-07 15:37:44
9892
原创 isolcpus在树莓派3上的使用
linux内核参数isolcpus的作用是隔离一定数量的CPU,使其独立于内核的平衡调度算法,也就是内核本身不会将进程分配到被隔离的CPU上运行。之后用户可将指定的进程绑定到被隔离的CPU上运行,让进程独占CPU,使其实时性可得到一定程度的提高。一、使用isolcpus隔离cpu...
2018-10-17 10:17:41
3901
原创 Etherlab源码解析--ecdev_offer()
一、预备知识net_device结构体二、预备知识sk_buff三、ecdev_offer
2018-09-14 16:11:13
1833
2
原创 EtherCAT FoE简介
FoE(File Access over EtherCAT)可实现EtherCAT节点之间的文件传输,本文介绍FoE的基本原理,以及FoE在开源EtherCAT主站Etherlab中的实现过程。一、软件更新方式在产品开发调试过程中,我们一般使用仿真器更新程序。当产品发布后,我们通常使用串口、CAN或者WiFi等端口更新程序。如果是EtherCAT从站设备,使用FoE在bootstrap...
2018-08-07 13:29:24
11097
6
原创 CANopen原理--PDO
本文介绍CanFestival中的PDO发送过程。一、PDO通信参数数据字典0x1400~0x15FF定义了RPDO的通信参数,0x1800~0x19FF定义了TXPDO的通信参数,例如1801定义了TPDO1的通信参数://TestSlave.c/* index 0x1800 : Transmit PDO 1 Parameter. */ ...
2018-08-02 13:42:42
13483
6
原创 CANopen原理--NMT状态机
本文介绍CANopen中的NMT状态机,及在CanFestival中的实现过程。一、NMT状态机CANopen中状态机包含4个状态:Initialisation、Pre-operational、Operational和Stopped。 相互之间的关系和跳转条件如下: 其中,从Initialisation到Pre-operational的跳转一般是从节点自动完成的,其它跳转一...
2018-08-01 13:16:02
9464
原创 CANopen原理--SDO(download)
本文介绍CANopen中的SDO(download)原理,以及在CanFestival中的实现过程。一、SDO download
2018-07-31 15:10:19
9960
7
原创 CANopen原理--SDO(upload)
本文介绍CANopen中的SDO(upload)原理,以及在CanFestival中的实现过程。一、SDO upload当需要读取一个CANopen中对象字典的值时,使用SDO upload协议,根据对象字典的数据类型,又分为SDO upload expedited和SDO upload normal 两种: (1)当数据字典的长度小于或等于4个字节时,使用SDO upload ex...
2018-07-30 14:07:24
17567
3
原创 CANopen原理--心跳
本文介绍CANopen中心跳信号的原理,以及在开源CANopen协议栈CanFestival中的实现过程。一、心跳的作用CANopen网络中,当一个节点需要知道另一个节点的状态时,除了发送远程帧查询节点状态外,被查询节点也可以周期性的发送心跳信号。 发送心跳的节点称为生产者,生产者既可以是主节点,也可以是从节点。 接收心跳的节点称为消费者,消费者既可以是主节点,也可以是从节点。 ...
2018-07-26 15:44:21
21333
4
原创 EtherCAT一致性测试简介
在EtherCAT从站开发过程中,使用ETG官方提供的一致性测试软件对产品进行一致性测试是非常有必要的。一、获取软件EtherCAT Conformance Test Tool,简称CTT,必须以ETG会员的身份进行购买,订货信息为ET9400,每次购买的有效期为一年,过期后续重新购买。 ETG官网上关于CTT的介绍: https://www.ethercat.org.cn/cn/...
2018-05-24 14:08:22
10381
1
原创 EtherCAT从站开发入门
EtherCAT从站开发中,除了常见的ESC(FPGA IP)+DSP方案外,TI、瑞萨、英飞凌等芯片厂家也纷纷推出了集成ESC功能的芯片,本文介绍英飞凌xmc4800芯片的入门使用过程,并在后续文章中,基于英飞凌提供的从站例程,介绍EtherCAT基本原理和具体的代码实现过程。一、软硬件环境...
2018-05-24 10:22:40
26015
17
原创 伺服驱动器-速度环设计
伺服驱动器的速度环为外环,电流环为内环。通常,电流环的带宽比速度环高很多,在设计速度控制器时,电流环可等效为一阶惯性环节,控制框图如下: 一、控制器设计速度环是一个典型的II型系统,其开环传递函数为: 对应的bode图如下: 其中,ωcωc\omega _{c}是速度环的截止频率,ωcωc\omega _{c}越大,速度环响应越快,抗干扰能力越弱,反之,ωcωc\om...
2018-04-20 14:11:24
8361
4
原创 伺服驱动器-电流环设计
一般伺服驱动器都具备位置、速度、和电流控制,框图如下图所示:伺服驱动的电流环通常采用矢量控制方法,在很多电机控制书籍中都有很详细的介绍,本文结合具体实例,简单介绍其设计步骤。一、电机状态方程以隐极永磁同步电机为例,其交直轴电感相等,其等效的状态方程为: 其中, 将右边第一个矩阵变换成对角矩阵:定义中间控制变量: 则(1)式可重新写成如下的状态方程: ...
2018-03-19 15:06:41
11873
3
原创 基于qwt和串口通信的软件示波器
在嵌入式开发过程中,经常需要查看DSP/MCU内部变量的值,通常的做法是使用仿真器,或者通过DAC输出用示波器观察,本文介绍一种基于qt/qwt的软件示波器,DSP/MCU将内部变量的值通过串口发出,软件示波器收到以后以波形的形式显示。1、安装QT5.8从下面地址下载qt-opensource-windows-x86-mingw530-5.8.0.exe并安装: http://
2018-01-10 13:42:23
2745
8
原创 Etherlab源码解析----FMMU配置
FMMU的全称是Fieldbus Memory Management Unit, 负责将从站本地物理存储地址映射到网段内逻辑地址。本地物理存储地址可以是ESC的寄存器区域,最典型的应用是邮箱通信中,将SM1的状态位(0x80D.3)映射到逻辑地址,主站周期性地读这一位的状态来判断邮箱的状态。本地物理存储地址也可以是SM所管理的过程数据所在的地址空间,本文将简述IGH Etherlab在何时,以及如何
2017-11-14 16:03:20
7651
2
原创 Etherlab源码解析----同步管理器SM配置(邮箱通信)
主站和从站间的邮箱通信通常使用SM0和SM1,IGH Etherlab在控制从站进入preop之前 需要配置从站的SM0和SM1寄存器。1、SM寄存器SM0配置寄存器的起始地址为0x800,SM1配置寄存器的起始地址为0x808,每个通道使用8个字节。 2、执行配置Etherlab在扫描从站时,或者激活master以后,都要控制从站从init切换到preop状态,执行状态切换之前 将执行Fsm
2017-11-02 17:03:29
5501
原创 Etherlab源码解析----同步管理器SM配置(过程数据)
在进行过程数据通信之前,EtherCAT主站需要配置从站的同步管理器,通常为SM2和SM3,本文介绍IGH Etherlab配置从站SM2和SM3的过程。1、SM寄存器SM配置寄存器从0x800开始,每个通道使用8个字节。 2、执行配置当应用程序调用ecrt_master_activate(master)激活master以后,Etherlab状态机就会执行Fsm_slave_config.c
2017-10-10 09:03:15
6308
原创 Etherlab在Ubuntu14.04上的移植
硬件: x86 + Intel82545网卡 软件: (1)Ubuntu14.04 (2)linux4.2.1源码 (3)Etherlab1.5.2源码1、 重命名e1000驱动文件在windows下,将linux4.2.1中的e1000驱动文件重命名,增加后缀“-4.2-ethercat”: \linux-4.2.1\linux-4.2.1\drivers\net\ethernet
2017-09-27 15:06:27
4321
1
原创 Etherlab源码解析----分布时钟DC
简单来说,使用DC的目的是为了使不同的从站在同一时刻产生sync0信号,为此,Etherlab及应用程序需要完成以下工作: (1) 计算从站之间的传输延时 (2) 计算从站本地时钟和系统时钟的初始偏移量 (3) 设置DC周期时间 (4) 设置sync0启动时间 (5) 使能DC (6) 时钟同步1、计算传输延时在检测到总线拓扑发生...
2017-09-08 09:02:30
10548
37
原创 Etherlab源码解析----slave_scan状态机
Etherlab在IDLE状态下,扫描从站状态机(fsm_scan_slave)作为master状态机的一个重要子状态机,主要完成以下工作: 1. 读取EEPROM中的内容, 包括Vendor ID、Productcode、邮箱通信的地址和长度, rxpdo和txpdo等; 2. 使从站进入preop; 3. 在preop状态下,通过邮箱读取pdo配置信息,若读取成功,将覆盖从EEPROM
2017-08-31 15:16:01
2470
原创 Etherlab源码解析----master状态机
Etherlab扫描和配置从站均由状态机相关代码完成,本文介绍其基本工作原理。1、ec_fsm_master 结构体ec_fsm_master是一个状态机实现过程中非常重要的结构体:struct ec_fsm_master { ec_master_t *master; /** ec_datagram_t *datagram; /** unsigned int
2017-08-30 14:41:23
3772
1
原创 使用ET2000和Wireshak分析Ethercat主站的实时性
在DC同步模式下,Ethercat主站能否在规定的时间内发送过程数据帧,是影响整个系统性能的关键因素,本文介绍如何使用Wireshark抓取总线上的Ethercat数据包,并将主站发过程数据帧的时间间隔以曲线的形式显示出来。1、连接ET2000将ET2000串接在网络中:2、启用ESL协议打开Wireshark -> 分析 ->启用的协议对话框,勾选esl_et...
2017-08-22 14:05:07
8519
11
原创 EtherCAT主站实时性分析
一、实时性的意义 在主从DC同步模式下,主站需要以非常精准的时间发送过程数据,如下图所示:二、实时性的关键 如下图所示,影响实时性的关键因素是操作系统和网卡驱动,前者需要将过程数据准时送出,后者需要优化网卡驱动,即"准时出发,路上不能耽误"。操作系统的实时性体现在需要非常准时地调用EtherCAT主站协议栈的发送函数,例如SOEM的发送函数是e
2017-01-04 13:36:50
15348
15
原创 EtherCAT---帧格式详解
以COE(CANopen over EtherCAT)的SDO服务为例,EtherCAT帧格式如下图所示:从图中可看出CANopen、EtherCAT和Ethernet这几个协议的大致关系。
2016-11-16 15:23:46
13548
4
原创 Ethercat开源主站Etherlab----收发帧过程(Generic 驱动)
Etherlab1.5.2 提供了Generic驱动,从而使Etherlab能通过任何网卡收发EtherCAT帧。数据帧收发时经过的大致路径如下图所示:
2016-11-15 14:47:35
7814
9
原创 EtherCAT主站SOEM源码解析----分布时钟DC
分布时钟(DC,Dsitributed Clock)可以使所有EtherCAT设备使用相同的系统时间,从而控制各设备任务的同步执行。 1、DC从站 支持分布式时钟的从站称为DC从站,同步原理如下所示: 其中,Tref: 参考时间,网络中第一个DC从站的时间Tsys_local(n): 第n各从站的本地系统时间副本(同步后等于Tref),这个时间用来产生同步信
2016-10-19 13:49:14
15951
6
原创 EtherCAT主站SOEM源码解析----Raw Socket
SOEM使用Raw Socket收发EtherCAT,即调用系统的bind、send和recv函数实现EtherCAT通信。1、创建Socket初始化函数ec_init(ifname)最终会调用/oshw/linux/nicdrv.c下的以下这个函数完成绑定网卡和创建1个Raw Socket。int ecx_setupnic(ecx_portt *port, const char *ifname
2016-10-18 12:34:34
7217
2
原创 EtherCAT主站SOEM源码解析----IOmap
SOEM通过函数ec_config_map(&IOmap)完成逻辑地址和物理地址的映射,应用程序需要定义一个数组IOmap,例如: char IOmap[4096]; 完成映射后,应用程序就可以通过读写数组IOmap[]来完成与从站的数据交换。1、映射关系SOEM首先将所有从站的输出映射到IOmap[]的开始位置,然后是输入,如下图所示: 2、具体实现函数ec_config_m
2016-10-17 13:06:02
11057
原创 EtherCAT主站SOEM源码解析----同步管理器SM配置
本文介绍SOEM(Simple Open Source Master)如何配置从站的SM(SyncManager)寄存器。1、SM寄存器SM配置寄存器从0x800开始,每个通道使用8个字节,如下图所示: 附:寄存器详情其中控制寄存器各位的含义如下: 状态寄存器各位的含义如下: 激活控制寄存器各位含义为: PDI控制寄存器各位含义为:
2016-10-14 16:27:19
9755
5
原创 EtherCAT主站SOEM源码解析----ecx_siiPDO()
1、从站EEPROM的PDO信息从站EEPROM存储的PDO信息如下如所示: TxPDO的类型名为50(0x0032),RxPDO的类型名为51(0x0033). 每个PDO占用的EEPROM字节数为8+8*er(er位Entry个数)。2、读取PDOx信息SOEM中函数ecx_siiPDO()读取EEPROM中PDO信息,返回值所有PDO中bit len的总和。int ecx_siiPDO(e
2016-10-13 10:16:48
7346
13
原创 EtherCAT主站SOEM源码解析----EEPROM访问
SOEM(Simple Open EtherCAT Master)是一个开源的EtherCAT主站。本文介绍其中读取从站EEPROM信息的步骤。1、ESC EEPROM访问控制寄存器从站控制芯片ESC EEPROM控制寄存器如下: 2、读EEPROM步骤 读的一般步骤为: (1) 读取EEPROM控制/状态寄存器0x0502:0x0503的内容,确认EEPROM没有处于Busy状态
2016-10-12 12:46:39
6408
10
原创 EtherCAT主站SOEM在Ubuntu上的移植
SOEM(Simple Open EtherCAT Master)是rt-lab提供的一个开源EtherCAT主站,使用裸套接字收发EtherCAT帧,可以很方便地移植到嵌入式设备上。1、软硬件环境 软件:VMware10+Ubuntu15.10, 在此虚拟机上运行SOEM,并连接EtherCAT从站。 硬件: (1)24V电源
2016-10-12 09:07:48
26182
30
原创 EtherCAT ET1100从站信息接口介绍
ESC使用EEPROM来存储所需要的设备相关信息,称为从站信息接口SII(Slave Information Interface)。以Beckhoff 两通道模拟量输入模块EL3102为例,简单介绍 EEPROM中存储的各种信息的位置和含义。一、EEPROM内容一览 根据ET1100的datasheet,EEPROM中的存储结构如下: 以EL3102为例,从T
2016-10-10 16:32:51
25501
13
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人