倍福CX5120嵌入式控制器使用教程】的更多相关文章

1.新建工程 新建TwinCAT XAE Project 2.连接设备 点击SYSTEM,再点击"Change Target..." 在弹出的"choose Targt System"界面,点击"Search(Ethernet)". 点击"Boradcast Search". 选择连接plc的网口. 当出现扫描到的plc为cx开头,点击"Add Route". 在弹出的"Add Remote Ro…
在前面一节,我们简单介绍了通过PLC+HMI实现完整控制松下伺服的上使能-运动,采集位置,速度等功能,这里我们会大量简化用到的贝福功能块(为了更加实用).首先依然是对单个轴的封装,我们之前的做法,例如伺服上使能,使用了MC_Power模块,这个模块的输入和输出引脚都是自己定义的变量,比如是否上电成功我们是靠AxisPowerReady的信号来判断的,如果有两个甚至多个伺服的时候,这样做就很不方便管理了,所有的同类型变量都应该用数组统一管理.   改变之后的上使能,就变成了调用一个模块(我们把Ax…
倍福TwinCAT3上位机与PLC通信测试(ADS通信) 包含C#和C++代码 本次测试需要环境: VS2013,TwinCAT3(本人版本TC31-Full-Setup.3.1.4018.16) 代码:C#代码,PLC程序代码,C++代码(官方提供)  测试部分:  测试包含:bool类型,int类型,long类型,real类型,lreal类型,string类型,数组,以及结构体 部分测试(这里没有结构体嵌套) PLC程序Main程序 基本类型部分 代码: PROGRAM MAIN VAR B…
本文将使用库技术来读写倍福PLC数据,使用的是基于以太网的ADS实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能读写操作 github地址:https://github.com/dathlin/HslCommunication 如果喜欢可以star或是fork,还可以打赏支持,打赏请认准源代码项目. 联系作者及加群方式:http://www.hslcommunication.cn/Cooperation 在Visual Studio 中的NuGet管理器…
嵌入式LINUX基础教程  第2版 目录 第1章 入门 11.1 为什么选择Linux 11.2 嵌入式Linux现状 21.3 开源和GPL 21.4 标准及相关组织 31.4.1 Linux标准基础 31.4.2 Linux基金会 41.4.3 电信级Linux 41.4.4 移动Linux计划:Moblin 41.4.5 服务可用性论坛 51.5 小结 5第2章 综述 62.1 嵌入与非嵌入 62.2 剖析嵌入式系统 72.2.1 典型的嵌入式Linux开发环境 82.2.2 启动目标板…
使用Keil语言的嵌入式C编程教程(下) 用8051单片机进行定时器/计数器的计算与编程 延迟是应用软件开发中的重要因素之一.然而,在实现定时延迟的过程中,正常的延迟并不能给出克服这一问题的宝贵结果.定时器和计数器是微控制器的硬件组成部分,在许多应用中使用它来提供具有计数的宝贵时间延迟脉冲两个任务都是通过软件技术实现的. 定时器延迟 WAP使用T1M2(timer1和mode2)生成500us延时? #include<reg51.h> void main() { unsigned char i…
使用Keil语言的嵌入式C编程教程(上) Embedded C Programming Tutorial with Keil Language Embedded System 嵌入式系统是指以单片机为核心的嵌入式C编程软硬件的结合,旨在完成特定的任务.这些类型的嵌入式系统正在我们的日常生活中使用,如洗衣机.录像机.冰箱等.嵌入式系统首先由8051单片机介绍. 8051单片机简介 8051微控制器是一个基本的微控制器,它是由英特尔公司自1970年首次推出.它是由8086处理器体系结构开发的.805…
摘要:这是对周立功编著的<嵌入式Linux开发教程>的第7期连载.本期刊载内容有关LinuxLinux常见命令中的导航命令.目录命令和文件命令.下一期将连载网络操作命令.安装卸载文件系统等内容. 3.2 Linux常见命令 本节对进行嵌入式Linux开发经常会用到的一些操作和相关命令,进一步加深对Linux的了解.命令是Linux最重要的人机交互界面之一,学习和掌握Linux命令是学习Linux不可逾越的阶段.在Shell下,一些命令加上一些参数,或者几个简单命令进行组合,可以完成在图形界面下…
本节附件中有很多PPT介绍贝福TwinCAT和EtherCAT的相关技术,在此只做简单说明. 简单总结:EtherCAT就是一种总线技术,具有速度快,稳定性高,布线简单等优点,详细可以参考下面这个PPT(不是说其他总线就不行,只是说这个很优秀)   简单总结:TwinCAT就是贝福推出的基于PC的软PLC软件,软PLC可以摆脱传统PLC的编程复杂(比如懂西门子的不懂三菱,台达甚至国产的PLC,而且软PLC支持多种语言混合使用,支持类似于高级语言一样的面向对象的开发方法,调试也会变得比较简单),价…
这是TwinCAT教程的最后一节,简单讲述了以C#为上位,通过ADS控制TwinCAT下位,实现完整控制两轴模组的功能.可以发现,在上位层已经没有了运动控制的代码,不管是要执行哪种运动,无非是把目标参数写入到绑定的对应变量,然后修改下位的任务号CurrentJob   在C#中一方面需要定时采集机器人的位置,速度还有状态等信息,另一方面需要显示这些信息(或者说利用这些信息).采集需要足够快(比如判断一条命令是否执行完毕,应该是越快越好,可以立即执行下一条命令),而显示则可以慢一点(可想如果需要大…
本节主要演示了使用自定义函数实现电机的运动(梯形曲线和S曲线都有实现),这里的JOG+和JOG-,针对单个关节实现了PTP的运动(跟贝福的MoveAbsolute功能块实现效果一致),在此没有介绍运动控制算法的具体原理,不理解的可以网上搜索梯形曲线和S曲线的文章,并不只是非标自动化需要用到控制电机的PTP运动,比如升降机,电梯,或者凡是需要匀滑启停的电机控制,都逃不过要用到这方面的知识,读者也可以自己测试5次或者7次等其他自定义加速曲线,每一种运动给出的位置,速度,加速度都会有不同的效果.  …
在前面我们已经学会了使用贝福自带的调试软件完成试运行,接下来是使用TWINCAT PLC实现这个功能,右击PLC添加一个PLC项目   在VISUs上右击添加一个HMI人机界面   目前PLC程序和人机界面都是空的,我们要通过这两个实现我们自定义的点动.首先右击Reference添加TC2_MC2的类库(这个类库是Motion Control的类库)   右击GLVs,添加两个全局变量,注意类型为AXIS_REF(比较特殊的类型,是跟NC轴交互的变量),在TWINCAT2中不太一样,一个AXIS…
首先是用松下伺服自带的软件可以测试运行(驱动器,电机都连接好,然后用USB线连接到松下伺服驱动器的X1口),打开调试软件会自动提示连接到伺服   一般需要对驱动器清除绝对值编码器数据(驱动器可能报错40错误),写入驱动器参数值等等,这里不再详细说明如何改参数之类的(可以参考我对松下伺服驱动器的文档),我把对应的参数文件放到了项目中,这里只演示了传入参数文件   然后就可以使用松下自带的软件测试运行,能够正常运行说明驱动器参数,接线都没有问题.相反如果用伺服自带的软件走不起来,就没有必要用TWIN…
常见的模拟量模块(还有更高端和更低端的,使用方法都一样) EL3054和EL4024(4路模拟量输入和输出模块)   常见的数字量模块(还有更高端和更低端的,使用方法都一样) EL1809和EL2809(16路数字输入和输出模块)   贝福模块的一个优点就是模块化结构(你可以选择要多少个数字输入输出,模拟量输入输出,也可以不要,所以扩展IO会非常方便,只需要多加一片就可以了,一片还可以分为2个,4个,8个,16个点的)   右击项目的IO-Devices,然后Scan(如果Scan不可用,请先把…
TC2的程序是在TC3的基础上稍作调整,只说明不同点,请先看TC3的. TC2中的一个原本是AXIS_REF类型变量被拆成了两个(PLCTONC_AXLESTRUCT和NCTOPLC_AXLESTRUCT结构体类型),并且都需要分别跟NC配置中的轴的FromPlc和ToPlc绑定   TC2中插入一个FB功能块是先添加一个Box,然后在方框中输入FB的函数名   接着插入输出引脚是右击之后Assign   除此之外还有一些别的区别例如一个功能块,输入输出引脚都不完全一样(TC3可以认为在TC2的…
这一节我们介绍简单的NC运动(前面所讲的所有内容都是PLC编程和HMI的界面,算是基础知识),这里NC就是控制伺服电机的部分(当然还不是实际的NC轴,是虚拟轴,但是用到的函数都是一样,可以为后面的实际应用做准备),既然用到了贝福的NC功能,就要添加对应的库   首先添加一个让轴上使能的PRG(注意是FBD格式)   在第一个空行后面插入空运算块,然后在中间的???里面输入运算块的名称(NC的函数名,NC的函数就是控制轴运动的函数,无非是上使能,下使能,位置,速度等等运动,跟运动控制卡提供的函数类…
因为使用TwinCAT的人用途不同,重视点就不同.如果用来代替传统PLC+HMI做项目的,很少会需要用到跟高级语言通讯,但是如果是用来做运动控制平台如做机器人运动控制器的,就肯定会用到.不管是否用得上,读者都应该知道贝福能够实现跟大部分高级语言如C++,C#,JAVA等等的通讯,并且非常简单(具体介绍可以自己看PPT,本节演示TwinCAT与C#的几个典型范例)   本质上,ADS通讯就是一种TCP/IP通讯,是没有实时性的,不能作为运动控制的通讯方式从上位直接丢数据.   在官方范例程序的第三…
TwinCAT提供了一系列的执行Windows系统命令的方法 Name 描述 NT_Shutdown 关机操作系统 NT_AbortShutdown 取消关机操作系统命令 NT_Reboot 重启操作系统 NT_GetTime 获取本机系统时间 NT_SetLocalTime 设置本机系统时间 NT_StartProcess 启动一个Windows的应用程序 NT_SetTimeToRTCTime 同步本地系统时钟和PC实时时钟 FB_RegQueryValue 读系统注册表 FB_RegSet…
读写注册表和读写文件一样,里面涉及的输入类型比较复杂,需要参考官方范例 sSubKey是指注册表的路径 sValName是指注册表要写入的名值对的名称 eValType是一个枚举类型(而且不是什么常规的枚举类型,你可以输入eValType.XXX来查看所有的类型,但是实际上只要照抄就行了) cbData就是要写入的数据(LEN(XXX)其中XXX就是字符串类型,我们必须按照一样的格式用LEN方法返回长度,为什么要+1就要问贝福了) pData是要写入数据的指针地址(要跟他一样ADR(XXX),X…
本程序只是在官方范例程序上稍作修改,在官方原有的范例中,演示了多种模式的读写(可以认为CSV文件是比TXT文件需要更多数据量的时候使用,比如记录一个小型的数据库集合)   但是写的比较混乱,甚至没有HMI的界面,读者需要学会快速在程序中找到输入输出,例如TextModeWrite(以文本方式写CSV文件),至少需要定位到触发的BOOL变量,要写入的文件地址和文件夹,要写入的数据这几个变量(其中要写入的数据是字符串类型的数组,且用逗号隔开),你直接打开官方的程序,运行之后也可以在顶部的变量表里直接…
TwinCAT提供了FB_FileRead等一系列读写文件的方法,本小程序演示的是多个贝福自带的FBD功能块连起来用的方法,跟前面讲的一样,建议在初始化的时候把所有FBD都复位,准备使用   真正的读取文件流程是打开-读取-关闭,任何一个环节都有可能出错(比如打开文件找不到这个文件,读取文件读到的数据和要放入的变量不匹配,关闭的时候由于文件在使用出错),在写PLC程序的时候,一个状态(比如CurrentJob定义了一个状态1叫做Open-puts,就实现一个功能,把一个double或者strin…
一般声明字符串都会加一个长度的限制,比如A:STRING(80);至于真实的字符串长度不要超过这个限制即可   在测试中,我演示了两个字符串的方法,CONCAT字符串拼接和REPLACE字符串替换.拼接不用说,替换比较特殊,第一个参数是输入的字符串(要被替换的字符串),第二个参数是要替换成的新字符串,第四个参数是输入字符串的起始替换下标,第三个是替换字符个数.比如'Hello '从第2个字符开始替换,替换1个字符,替换成X,因此变成了'HXllo ',World!从第1个字符开始替换,替换3个字…
由于TC2和TC3都有可能用到,个人推荐都安装,但是注意必须是先安装的TwinCAT2,然后安装TwinCAT3,如果反了可能两个都没法用(打开TcSwitchRuntime提示Both TwinCAT are activated,这样你一个也无法禁用),如果是这种情况请先把两个都卸载了,如果已经安装了TwinCAT2,则在安装TwinCAT3的时候,会自动检测是否存在TwinCAT2,如果有就自动禁用,可以发现桌面右下角图标变成灰色(此外需要注意,TC2有64位的版本,但是不能运行runtim…
编码器通讯断线异常保护,一般就是通讯线松动或者受干扰(最难以排查的情况是,我接了六套驱动器和伺服,比如J0的线是随便做的,其他五套都是西门子的合格网线,我运行程序的时候,J0如果单关节运动没任何问题,接着加入J1,J2也没问题,但是当再加入多余三个电机之后,J0就会随时报错21.0,在贝福中扫描得到的结果是18000错误),为了确认是编码器线受干扰而不是程序的问题,你可以把J0和J1的所有线对调,这样一样调试如果J1报错而J0不报错这说明编码器线不一样确实受干扰了.     更多教学视频和资料下…
对于MOVEJ的关节运动来说,我们只关心每个电机的角度(只需要考虑多个电机协同开始运动和结束运动,关键是对每个电机加速度均一化,从而一起跑一起停,这部分内容可以参考机器人学导论以获取更加详细的说明),我们要注意整个的流程是更新关节位置(MOVEJ)=>更新TCP(正解)=>更新关节速度和TCP速度 且由于正解是唯一的,在主程序的每个周期都要执行(当然你也可以不在主程序每个周期都执行,放在MoveUpdate里面也可以,不管执行何种运动都刷新一次正解)   对于MOVEL的TCP运动来说,我们只…
虚拟仿真上,要注意仿真只是为了可视化,可以看到数据的变动是否和实际一致,所以Robot2D才是主要因素,虚拟仿真采集机器人的关节位置或者TCP位置来显示而已,为了测试一些别的算法,我们还可以在虚拟仿真的环境中放入临时的点位,然后显示一个球体或者一个坐标系,以此来判断是否算的准确(OPENGL无非rotate和translate到目标位置,然后draw即可)   仿真上还要注意,坐标系方向是自己定义的,比如我认为底座的正中心就是世界坐标系的原点.每加载一个模块,可以认为坐标系会产生一次平移和旋转,…
EL1002,EL1004,EL1008都是数字输入模块(2个点,4个点,8个点),输入高的范围是15V到30V,低的范围是-3V到5V         EL2002,EL2004,EL2008都是数字输出模块(2个点,4个点,8个点),输出24V       更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123   我的在线论坛: http://csrobot.gz01.bdysite.com/   问题交流: QQ:910…
使用命令FB_GetHostName来获取本机名称,返回的是一个字符串   使用命令FB_GetAdaptersInfo获取网卡信息(注意采集到的是一个非常复杂的类型,本身是一个数组,数组的每个元素又包含了网卡的物理地址,名称,IP地址等等)   为了显示方便,只显示了有效网卡数量和第一块网卡的名称(在HMI输入的时候,可以利用TwinCAT的自动提示,XXX变量名.就会自动提示所有的对象属性了)     更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.…
个人认为这条命令做的参数比较混乱,PATHSTR是指可执行文件路径+最终文件名,DIRNAME是指可执行文件路径,最后COMNDLINE可有可无,是指带参数运行启动的文件   测试可以正常运行      …
使用功能块NT_GetTime,NETID填写两个单引号表示本机,START就是一个触发信号,一般的功能块都需要一个上升沿触发执行,最后的输出类型都是让系统自己决定,然后统一把这些变量放到全局变量中(个人认为比较好的编程习惯),以方便查看   采集到的时间是一个比较特殊的类型,我们可以右击查看这个结构体包含的东西,也可以在运行起来之后,看执行完成之后,这个变量中的每个元素数据是否跟本机时间对应   在理解了读取时间之后,写入时间就比较简单了,我们首先需要得到一个跟读取一样类型的变量(注意结构体中…