16
2020
01

信捷plc的C函数用法

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

  可以说这个功能非常方便,很多运算或者传送数据的时候用这个在好不过了。下面简单介绍一下使用方法


1、打开 PLC 编辑软件,在左侧的“工程”工具栏内选择“函数功能块”,右击选择“添加新函数功能
块”。 

image.png


2、出现如下对话框,填写所要编辑函数的信息。 

image.png

功能块名称即为梯形图中调用函数块时使用的名称,例如上图为:FUNC1 则在梯形图中调用时应写
成如下格式: 

image.png

3、在新建完成后,会出现下面的编辑画面。 

image.png

参数传递方式:在梯形图调用时,传入的DHD)和MHM),即为WB的起始地址。如上图,当
指令FUNC1 D0 M0中的为D0M0开始,则W[0]D0W[10]D10B[0]M0B[10]M10;当指
FUNC1 HD0 HM0中的为HD0HM0开始,则W[0]HD0W[10]HD10B[0]HM0B[10]
HM10;如梯形图中使用的参数为D100M100,则W[0]D100B[0]M100;如果梯形图中使用的
参数为HD0HM0,则W[0]=HD0B[0]=HM0;如果梯形图中使用的参数为HD0M0,则W[0]=HD0
B[0]=M0;如果梯形图中使用的参数为D100HM100,则W[0]=D100B[0]=HM100。因此,字与位
元件的首地址和是否使用掉电保持型数据寄存器和线圈由用户在PLC程序中设定。
注意:
1)在同一个C语言功能块里线圈和数据类型只能是一种。即要么整个C语言功能块里的所有线圈是
掉电保持型,要么全是非掉电保持型;数据寄存器也是一样。
2C函数数组的长度不要超过100个(PLC固件版本V3.4.5)或500个(PLC固件版本V3.4.4a)。
3C函数内部定义的局部变量不能多于100bit
参数W:表示字软元件,使用时按数组使用,如W[0]=1W[1]=W[2]+W[3];在程序中可按照标准C
规范使用。
参数B:表示位软元件,使用时也按数组使用,支持位置1和位清零,如B[0]=1B[1]=0;以及赋值,
B[0]=B[1]
双字运算:在W前加个D,如DW[10]=100000,表示给W[10]W[11]合成的双字赋值。
浮点运算:支持在函数中定义浮点变量,以及进行浮点运算(例如:浮点数寄存器D0(双字)可表示
FW[0]FW[0]=123.456)。
其它相关软元件在C语言里面的定义:
PLCC语言中,如果需要使用输入(X)以及输出(Y),则需要在里面加入宏定义“#define
SysRegAddr_X_Y”,例如:将输入X0的状态给定线圈M0,则为:B[0]=X[0];将输Y0的状态给定线圈
M10,则为:B[10]=Y[0];(注意:对应的XYC语言中都为十进制表示,而非八进制)。
注意:宏定义“#define SysRegAddr_X_Y”必须放在定义变量的后面,否则会出错。例如:
int a,b,c;
#define SysRegAddr_Y
{}’之间为 C
言程序编辑区域
主函数名称(为函数功能块名
称.该名称不能随意修改,必
须在编辑窗口进行修改)
WORD W 对应为软元件D
BIT B 对应为软元件M8 C 语言功能块 XD/XL 系列可编程控制器用户手册[基本指令篇]
258
b=3000;
c=W[1030];
a=b+c;
if(B[a]==1)
Y[3]=0;
同理,如果是非掉电保持的流程S、计数器C、定时器T、计数器寄存器CD、定时器寄存器TD、存储
D HD ) 以 及 内 部 线 圈 M HM ) 等 在 C 语 言 中 的 应 用 都 相 类 似 , 宏 定 义 “ #define
SysRegAddr_S_C_T_CD_TD-D –M”;如果是掉电保持的流程HS、计数器HC、定时器HT、计数器寄存
HCD 、定时器寄存器 HTD 等 在 C 语 言 中 的 应 用 都 相 类 似 , 宏定义 “ #define
SysRegAddr_HS_HC_HT_HCD_HTD-HD-HM”。
样例程序:W[0]=CD[0];W[1]=TD[0];B[1]=C[0];B[2]=T[0];
函数库:用户功能块可以直接使用函数库中定义的函数和常量,函数库中包含的函数和常量见8-8节部
分。
支持的其他数据类型: BOOL;
//布尔量
INT8U;
//8位无符号整数
INT8S;
//8位有符号整数
INT16U
//16位无符号整数
INT16S
//16位有符号整数
INT32U
//32位无符号整数
INT32S
//32位有符号整数
FP32; //单精度浮点
FP64;
//双精度浮点
预定义的宏: #define true
1
#define
false 0
#define
TRUE 1
#define
FALSE 0XD/XL 系列可编程控制器用户手册[基本指令篇]


« 上一篇

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。