网站首页 > 技术文章 正文
前言
写PLC程序,越来越觉得结构化文本编程语言(ST)给PC编程带来的便利,在处理一些数据上,可以写的更加灵活。所以,在项目PLC选型上,我都会优先选择支持结构化文本的PLC。
国内有些厂商推出了一些较为高端一些的PLC,开发环境集成在Codesys平台(例如禾川、信捷);也有的PLC的开发环境集成在Visual Studio平台中(例如倍福)。
像依赖于博图的西门子、三菱、欧姆龙PLC,都可以在独家的IDE中进行ST编程开发。
今天,我们来说一下ST语言编程的“另类”——信捷的C函数编程。
如果大家关注我的公众号文章,最近就会收到比较多的信捷C函数编程的推送,大家想要学习的话,记得关注微信公众号【工业技术互联】
下一篇讲解如何使用信捷PLC的C函数编程,本篇文章先说一下这种编程方式。
创建功能块
打开信捷PLC的编程软件“XDPPro”,就会看到在左侧目录树下,有“函数功能块”这一栏。
通过在上面单击右键,就可以添加功能块
image01
第一个函数功能块的默认名字为“FUNC1”,如下图所示,可以自定义源文件名称、版本、描述、作者、日期。设定好源文件信息后,点击确认就可以创建文件。
image02
在此,我将函数功能块命名为“FUNC3”。打开创建好的文件,如下图所示。
使用过程中存在的问题
但是使用过程中,就会存在一些问题。给我最大的不便之处在于它的不灵活性——BOOL数据处理和WORD数据处理的不灵活性。
【第一点】文件长度问题
如图image03所示,我给文件取名为“FUNC3”,没问题,长度满足要求,但是如果你要给它取名为“ZIDONGSHANGLIAO”(自动上料),那不好意思,它不支持这么多长度的文件名命名,当输入到“ZIDONGSHA”时候,剩下的就输入不进去了。
【第二点】文件大小写问题及格式
文件名只能支持字母、数字、下划线,并且第一个字符不能是数字,很符合命名规范,但是它的字母只能是大写,无法输入小写。所以,当你想输入“ShouDong”(手动)时候,它会自动变成“SHOUDONG”,看起来总感觉不舒服。如果你用过西门子的FC和FB,就会发现,它的这些块是可以支持中文的。
好吧, 上面我都可以接受,不影响我在掉发的路上越走越远。
【第三点】函数传递的形参固定
如图三所示,void FUNC3(WORD W , BIT B )这里面的形参(WORD W,BIT B称为形参)无法改变。比如你想将函数写成void FUNC3(WORD W , WORD D)那不行,这是不允许的。像写成void FUNC3(BIT B , BIT D)这样的也不允许。因为根本不允许修改,当你要修改时侯,IDE就弹出函数属性页面——改也改不了。
那是否可以在此函数中创建一个新的函数用来调用?实践表明,这样也是不行的。
就是有很多的局限性,用起来特别不灵活。
当然,也有好的一方面,如果你是要用来计算CRC校验,用这个函数就可以很好的实现。官方也有相关的例子,直接拿来使用即可。
如果你要把信捷的C函数编程当作ST编程来使用,有很多和你预想的不一样的地方。
比如赋值符号:
在ST中,将15传递给int类型的a,表达式可以为a :=15;
在信捷的C函数编程中,则是 a=15;
信捷的编程方式就是C语言。而ST的编程方式不是C语言,是PASCAL。
信捷PLC之C函数编程(一)
http://bbs.plcjs.com/forum.php?mod=viewthread&tid=487089&fromuid=42656
(出处: PLC论坛-全力打造可编程控制器专业技术论坛)
- 上一篇: PLC编程中常用的编程语言有哪些
- 下一篇: PLC编程语言有哪几种?每种编程语言你都了解吗?
猜你喜欢
- 2025-06-29 PLC中的梯形图(LAD)与结构化编程语言(SCL)的对比?
- 2025-06-29 PLC编程语言有哪几种?每种编程语言你都了解吗?
- 2025-06-29 PLC编程中常用的编程语言有哪些
- 2025-06-29 你要的西门子博途SCL指令,终于找齐了
- 2025-06-29 如何同时学会两门编程语言?
- 2025-06-29 软网推荐:请个多功能纯文本管理助手
- 2025-06-29 25种著名编程语言编写你的第一个程序Hello World
- 2025-06-29 PLC中ST语言的几种程序流程控制语句,温故而知新吧
- 2025-06-29 结构化程序设计方法
- 2025-06-29 [西门子PLC] TIA Portal GRAPH (SFC) 语言编写停车场道闸的控制系统
- 最近发表
-
- Qt编程进阶(63):Qt Quick高级控件的使用
- Qt编程进阶(47):QML鼠标事件处理(qt编程难不难)
- 使用Xamarin和Visual Studio开发Android可穿戴设备应用
- Qt使用教程:创建Qt Quick应用程序(三)
- QML性能优化 | 常见界面元素优化(qml布局自适应大小)
- Qt使用教程:创建移动应用程序(二)
- Qt Quick 多媒体开发播放音乐和视频
- Qt使用教程:创建Qt Quick UI表单(三)
- 如何将 Qt 3D 渲染与 Qt Quick 2D 元素结合创建太阳系行星元素?
- QML控件:TextInput, TextField, TextEdit, TextArea用法及自定义
- 标签列表
-
- axure 注册码 (25)
- exploit db (21)
- mutex_lock (30)
- oracleclient (27)
- nfs (25)
- springbatch (28)
- oracle数据库备份 (25)
- dir (26)
- connectionstring属性尚未初始化 (23)
- output (32)
- panel滚动条 (28)
- centos 5 4 (23)
- sql学习 (33)
- c 数组 (33)
- pascal语言教程 (23)
- ppt 教程 (35)
- java7 (24)
- 自适应网站制作 (32)
- server服务自动停止 (25)
- 超链接去掉下划线 (34)
- 什么是堆栈 (22)
- map entry (25)
- ubuntu装qq (25)
- outputstreamwriter (26)
- fill_parent (22)