倍福TwinCAT(贝福Beckhoff)基础教程4.1 TwinCAT如何读写TXT文件
TwinCAT提供了FB_FileRead等一系列读写文件的方法,本小程序演示的是多个贝福自带的FBD功能块连起来用的方法,跟前面讲的一样,建议在初始化的时候把所有FBD都复位,准备使用

真正的读取文件流程是打开-读取-关闭,任何一个环节都有可能出错(比如打开文件找不到这个文件,读取文件读到的数据和要放入的变量不匹配,关闭的时候由于文件在使用出错),在写PLC程序的时候,一个状态(比如CurrentJob定义了一个状态1叫做Open-puts,就实现一个功能,把一个double或者string类型数据写入一个文件),具体实现的时候,还是分步实施,而且中间要加必要的等待和延时(因为是执行系统命令,一个PLC的扫描周期就完成打开或者读写文件很可能会报错),中间任何一步失败了都要跳转到失败的状态,且对外报错告知情况,调试的时候可以去对应的FBD功能块找ErrorID分析原因。

虽然FileWrite和FilePut都能实现写入文件的功能,但是却不太一样,可能FilePuts和FileGets更加适合于读写一个数据(从功能块的输入和输出来看,sLine表示了一个STRING,不管是数字的字符串还是文本的字符串都一样,而且打开是可读的)

而FileRead和FileWrite更适合读写批量数据(比如一个数组),从功能块的输入输出来看,他需要的是数据的地址和数据的长度,我们就可以给一个double数组,但是写出来的东西也不是可以直接浏览的格式了

总结:
本小程序主要演示了使用贝福功能块读写文件的功能,相比于执行系统命令有更大的实用价值,例如读写文件的功能可以用来设置极限,伺服参数或者驱动器参数的读写
这里我们把多个FBD功能块串起来用,并且任何一个环节出错都会跳转到错误状态,个人认为这种写法更加合理,方便调试,如果需要移植,也只需要把一个文件夹中的相关FBD都移植过去,然后把MAIN程序的对应状态稍微修改一下即可(本质上这还不是类似于高级语言纯粹面向对象,可以直接一个函数完成一个事情,跟当前项目剥离的很干净,但是这样做已经比较容易理解了,由于TwinCAT每个FBD功能块的引脚输入输出都有变量,你很难做到真正写一个FB或者PRG实现完美的函数封装)
更多教学视频和资料下载,欢迎关注以下信息:
我的优酷空间:
http://i.youku.com/acetaohai123

我的在线论坛:
http://csrobot.gz01.bdysite.com/

问题交流:
QQ:910358960
倍福TwinCAT(贝福Beckhoff)基础教程4.1 TwinCAT如何读写TXT文件的更多相关文章
- 倍福TwinCAT(贝福Beckhoff)基础教程4.2 TwinCAT如何读写CSV文件
本程序只是在官方范例程序上稍作修改,在官方原有的范例中,演示了多种模式的读写(可以认为CSV文件是比TXT文件需要更多数据量的时候使用,比如记录一个小型的数据库集合) 但是写的比较混乱,甚至没有H ...
- 倍福TwinCAT(贝福Beckhoff)基础教程1.2 TwinCAT安装配置
由于TC2和TC3都有可能用到,个人推荐都安装,但是注意必须是先安装的TwinCAT2,然后安装TwinCAT3,如果反了可能两个都没法用(打开TcSwitchRuntime提示Both TwinCA ...
- 倍福TwinCAT(贝福Beckhoff)基础教程1.1 TwinCAT背景知识
本节附件中有很多PPT介绍贝福TwinCAT和EtherCAT的相关技术,在此只做简单说明. 简单总结:EtherCAT就是一种总线技术,具有速度快,稳定性高,布线简单等优点,详细可以参考下面这个PP ...
- 倍福TwinCAT(贝福Beckhoff)基础教程7.1 TwinCAT 如何简单执行NC功能块 TC3
这一节我们介绍简单的NC运动(前面所讲的所有内容都是PLC编程和HMI的界面,算是基础知识),这里NC就是控制伺服电机的部分(当然还不是实际的NC轴,是虚拟轴,但是用到的函数都是一样,可以为后面的实际 ...
- 倍福TwinCAT(贝福Beckhoff)基础教程6.1 TwinCAT如何与高级语言通讯
因为使用TwinCAT的人用途不同,重视点就不同.如果用来代替传统PLC+HMI做项目的,很少会需要用到跟高级语言通讯,但是如果是用来做运动控制平台如做机器人运动控制器的,就肯定会用到.不管是否用得上 ...
- 倍福TwinCAT(贝福Beckhoff)基础教程5.1 TwinCAT如何执行系统命令
TwinCAT提供了一系列的执行Windows系统命令的方法 Name 描述 NT_Shutdown 关机操作系统 NT_AbortShutdown 取消关机操作系统命令 NT_Reboot 重启操作 ...
- 倍福TwinCAT(贝福Beckhoff)基础教程2.2 TwinCAT常见类型使用和转换_字符串
一般声明字符串都会加一个长度的限制,比如A:STRING(80);至于真实的字符串长度不要超过这个限制即可 在测试中,我演示了两个字符串的方法,CONCAT字符串拼接和REPLACE字符串替换.拼 ...
- 倍福TwinCAT(贝福Beckhoff)基础教程7.1 TwinCAT如何简单执行NC功能块 TC2
TC2的程序是在TC3的基础上稍作调整,只说明不同点,请先看TC3的. TC2中的一个原本是AXIS_REF类型变量被拆成了两个(PLCTONC_AXLESTRUCT和NCTOPLC_AXLESTRU ...
- 倍福TwinCAT(贝福Beckhoff)基础教程3.1 TwinCAT如何编写简单的计算器
把编写简单计算器作为入门的第一个范例程序,主要是因为比较简单,而且综合了HMI,数据类型,数据转换,PRG和FBD等功能块的混合等知识,个人认为还是比较适合用来快速上手的.由于是第一个范例,所以视频教 ...
随机推荐
- WebSocket贪吃蛇例子学习
在Tomcat7.0.64下的examples文件夹内,有多人贪吃蛇的例子. Multiplayer snake 这是一个多人在线小游戏,客户端通过操作上下左右键指挥自己的蛇,如果碰到别的蛇就死掉.还 ...
- JAVA中GC时finalize()方法是不是一定会被执行?
在回答上面问题之前,我们一定要了解JVM在进行垃圾回收时的机制,首先: 一.可达性算法 要知道对象什么时候死亡,我们需要先知道JVM的GC是如何判断对象是可以回收的.JAVA是通过可达性算法来来判断 ...
- 百度之星初赛(A)——T1
小C的倍数问题 Problem Description 根据小学数学的知识,我们知道一个正整数x是3的倍数的条件是x每一位加起来的和是3的倍数.反之,如果一个数每一位加起来是3的倍数,则这个数肯定是3 ...
- GitHub上README写法暨markdown语法解读
原文: GitHub上README写法暨markdown语法解读 自从开始玩GitHub以来,就 越来越 感觉它有爱.最近对它的 README.md 文件颇为感兴趣.便写下这贴,帮助更多的还不会编写R ...
- [LA_3938]最大连续动态和
Sample Input 3 1 1 2 3 1 1 Sample Output Case 1: 1 1 线段树 L,R表示该区间的左右端点,sum表示该区间值的总和 l,r表示该区间连续的最大和的左 ...
- .h 和 .cpp 切换快捷键设置(转)
原文转自 https://blog.csdn.net/t163361/article/details/51859274 打开VS后依次选择如下 工具-> 选项-> 环境-> 键盘-& ...
- Netty源码学习(三)NioEventLoop
0. NioEventLoop简介 NioEventLoop如同它的名字,它是一个无限循环(Loop),在循环中不断处理接收到的事件(Event) 在Reactor模型中,NioEventLoop就是 ...
- 牛客网 牛客小白月赛5 I.区间 (interval)-线段树 or 差分数组?
牛客小白月赛5 I.区间 (interval) 休闲的时候写的,但是写的心情有点挫,都是完全版线段树,我的一个队友直接就水过去了,为啥我的就超内存呢??? 试了一晚上,找出来了,多初始化了add标记数 ...
- Educational Codeforces Round 31 A. Book Reading【暴力】
A. Book Reading time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...
- springMVC笔记:@ResponseBody
使用@ResponseBody的方式,将Map形返回值转为json,用作POST请求的返回值.为了解决406 Not Acceptable错误,需要检查以下几项: 1. 依赖包中包含jackson-m ...