信捷PLC XD/XL系列C语言函数的应用

前言

本篇文章主要提及信捷PLC在编写,调用C语言功能块时的一些问题:

现在开始接触国产PLC发现对比起他的’摸板‘三菱的PLC,信捷较为人性化的一点是他加入了C语言功能块的支持,其实现在PLC开始支持浮点运算,他的浮点运算能力不是那么容易发挥出来(当然我的个人能力不足是很大的一个原因)。所以这次接触到信捷觉的功能块确实是个好东西,而且使用的也是较为基础的C语言。


一、信捷的C语言功能块

XD/XL 系列支持用户在信捷 PLC 编辑工具软件中利用 C 语言编写功能块,在需要的地方进行调用,
其最大的优点是支持几乎所有的 C 语言函数(相对于 XC 系列,XD/XL 系列还支持全局变量 ),增强了程序的保密性,同时由于可进行多处调用和不同文件的调用,大大提高了编程人员的效率。

其中让C语言功能块真正变得简单的部分是XD/XL 系列还支持全局变量,之前的XC系列不支持全局变量,数据调用起来其实不是很方便,特别是HD与D寄存器之间的数据调用。

二、C语言功能块的新建,编写

1.新建C语言功能块

在信捷PLC编程工具软件中左边工程栏中找到函数功能库,可以在默认库中直接新建源文件也可以自己新建一个库接着再新建源文件;

新建过程中要注意:用户自定义函数名称,由数字,英文,下划线组成,首字符不能为数字,名称长度需<=9个字符。用拼音起名字要注意一下


图二中的映射参数对应的梯形图中的软原件,一般我都会只将其映射成D和M,后面会解释原因。

2.C语言函数的编写


在这个界面我们就是正式功能块的编写,首先默认只会将图中所示的HD,D,HM,M映射,如果还想调用X,Y这类寄存器,可以通过修改宏定义完成,具体参考XD/XL系列可编程控制器用户手册[基本指令篇] 280页。

下面我们主要来提一下怎么调用PLC中寄存器的数据。

一般我们用功能块都是做运算时候才用(反正我就是,逻辑类的东西一般都在梯形图中完成,数据一般交由功能块处理)。映射的D或HD可以直接用形参中的W来使用,可以看到图二中的参数类型为有符号数的16位整数型指针,所以我们通过数组的方式调用。

W[0] = 1;
W[10] = W[11] + W[12];DW[10] = DW[12] +DW[14];

需要注意,在W前直接加上D为调用双字;W前加F为浮点运算;但是不建议这样用。

记得我们开头说过,XD/XL 系列还支持全局变量,我个人更倾向于通过手动给每一种类型数据定义指针,统一后编程过程流畅很多。

3.指针的定义

通过在函数前定义指针

INT8U; //8位无符号整数
INT8S; //8位有符号整数
INT16U //16位无符号整数
INT16S //16位有符号整数
INT32U //32位无符号整数
INT32S //32位有符号整数
FP32; //单精度浮点
FP64; //双精度浮点
 #define  FD_H*(FP32*)&HD        //将FD_H定义为HD的浮点指针#define  FD_D*(FP32*)&D        //将FD_D定义为D的浮点指针

然后在函数块中调用对应的数据。

例:

WD[814] = DW[808] / 21.220677 - FD_D[810];      WD[816] = DW[806] / 100 - FD_D[812];

统一每个功能块中的指针定义,实现不同的C语言功能块之间的数据调用近似无感。

三、C语言功能块调用



在梯形图中,调用要与之前在新建源文件时候软原件的类型要一致。

当我们自定义指之后,我建议都将其映射为D0与M0,写起来方便。

以上仅为个人使用习惯,有空闲时间写下来,如有高见欢迎提出

信捷PLC XD/XL系列C语言功能块的应用相关推荐

  1. 信捷PLC中Y0用C语言怎么表示,信捷PLC

    信捷PLC 我们这边按住按钮,那边电机启动,这一切,是如何实现的呢?首先,我们来看实现这个功能的梯形图:零基础,十分钟入门PLC(可编程控制器),掌握它的工作原理这就是PLC中的梯形图.信捷PLC 用 ...

  2. 信捷PLC以太网通讯数据采集解决方案

    描述: 信捷XC/XD等系列PLC及一体机, 以太网通讯数据采集解决方案. 桥接器采用三通设计,不占用PLC通讯口,不对原系统做任何硬件和软件修改,即可通过模块的网口对PLC进行数据监控和操作,同时触 ...

  3. 威纶通触摸屏与mysql_威纶通 与 信捷XC\XD系列PLC 通讯

    第一次使用信捷XD系列PLC正式做个项目,用的触摸屏为威纶通的 MT6071iP (注意:下面内容同样适用于 信捷XC系列PLC ,除信捷XC与XD系列编程软件不一样,其余接线设置实测均一样 ) 目前 ...

  4. 信捷pLC C语言错误格式,信捷PLC常见问题及解决方法经验分享

    目前国产PLC以信捷为主,主要总结下信捷PLC常见问题及解决方法如下: 一.为什么PLC与外围设备无法通讯上? 通讯失败一般归纳为以下几个问题: 1. 通讯线:连接可能不正确,或接触不良,用户可更换通 ...

  5. 信捷PLC C语言功能块与正规C语言用法的不同

    信捷PLC的C语言功能块与正规C语言有一些区别,比如用malloc编译不报错,但是下载到PLC会报错(可能是担心malloc空间大了影响别的寄存器).用结构体时相同类型结构体不能直接用等于号(=)进行 ...

  6. 信捷PLC的C语言程序写法例子

    有些同学用信捷PLC的C函数功能块,不想受函数参数的约束,想随便用寄存器是数值来做计算.可以把需要参与计算的数据放在一个结构体里面,把结构体声明在头文件里面,然后结构体里面再嵌套结构体指针来指向另外的 ...

  7. 信捷PLC XD5系列运动控制(10轴)编程应用篇

    项目PLC采用XD5-60T10-E,36DI 24DO 晶体管输出,支持10路脉冲输出功能.这篇文章主要整理信捷PLC的项目开发,学习笔记,如果是第一次使用信捷PLC的话,相信对你的帮助会很大,感谢 ...

  8. 工业读写器对接信捷 PLC通信示例

    1简介 FR系列阅读器是一种高稳定性的非接触式工业级读写设备.其工作频率为13.56MHz,支持Modbus通信协议,支持ISO/IEC 15693标准和ISO 18000-3M1标准,支持RS232 ...

  9. 信捷PLC如何使用c函数

    简介: 使用信捷plc运用c计算使用的过程. 工具原料: 1.信捷PLC ,XD,XLl,XK,XG等系列都可以. 2.程序下载线或有网口的可以用网线. 3.信捷编程软件本案例采用XDPPro3.53 ...

  10. 信捷PLC使用TCP/IP协议通讯

    文章目录 前言 一.TCP/IP通讯的优势的优/劣 二.PLC的TCP/IP通讯配置 1.首先确定PLC的IP 2.程序建立连接 三.实例说明 附上文提到的标志寄存器功能表 前言 信捷PLC的以太网机 ...

最新文章

  1. 怎么通过打工,在一线城市购买10套房?Snapchat程序员亲身分享经历!
  2. mysql profiling表_Mysql-性能分析(profiling 工具)
  3. R语言β分布函数(dbeta、pbeta、qbeta、rbeta)实战
  4. php strtotime 和 date 日期操作
  5. Hlg 1407 【最小点权覆盖】.cpp
  6. 非凸函数上,随机梯度下降能否收敛?能,但有条件,且比凸函数收敛更难
  7. DB_NAME、DB_UNIQUE_NAME、SERVICE_NAME和INSTANCE_NAME等的区别
  8. kali怎么成为管理员_网站死链是什么、是怎么引起的以及死链对SEO优化的影响?...
  9. linux内核I2C子系统学习(一)
  10. hbase hdfs外部表_硬核干货长文!Hbase来了解一下不?
  11. github代码管理总结
  12. MOQL—筛选器(Selector)(一)
  13. Daily Scrum 10.23
  14. Intellij中Maven项目html页面乱码解决方案
  15. 互动快报:从读报刊看性格
  16. 给你一个字符串,删除其中的不是英文字母的符号,也就是说除了英文字母之外的字符都应该删除,请你输出删除后的字符串。
  17. 全国气象预报业务产品grib2数据格式解析
  18. 流媒体与实时计算,Netflix公司Druid应用实践
  19. 用Python编程语言来实现阿姆斯特朗数的检查
  20. H5实现3D圣诞树效果

热门文章

  1. Java基础学习总结
  2. 【霜雪千年】MMD动作镜头下载
  3. 目前国内汉语自动分词系统的研究现状
  4. 【微信小程序使用阿里巴巴矢量图标库】
  5. 翻译:web制作、开发人员需知的Web缓存知识
  6. vue3使用echarts
  7. 通讯录管理系统mysql,EML企业通讯录管理系统 v5.4.15
  8. 安利个数据库工具dbeaver
  9. 专注创新勇突破 宏杉科技七策定纲存储之道
  10. 【完美解决】ds1302外置时钟模块重复初始化时间问题(单片机掉电,模块电池供电)