admin 发表于 2019-8-2 00:11:15

CodeSys组件编写

CodeSys(Controller Development System) 是一种功能强大的PLC软件编程工具,它支持IEC61131-3标准IL 、ST、 FBD 、LD、 CFC、 SFC 六种PLC编程语言,用户可以在同一项目中选择不同的语言编辑子程序,功能模块等。目前,CodeSys在全世界范围内应用广泛,例如ABB、bachmann、Heesn、ifm、EPEC、Intercontrol等供应商都在使用该平台开发的编程软件。本篇文章简单的介绍Codesys的组件编写,具体内容如下:

CodeSys lib库的编写
a).打开CodeSys软件,新建lib库工程;
b).新建add函数接口 a+b=c的功能;
c).定义输入变量;


d).双击“工程信息”,编辑lib的属性;
e).编译检查add函数的正确性;
f).鼠标右键点击“cmpAdd(FUN)”,在出现的下拉菜单中选择“属性”选项,在弹出的对话框中将勾选“外部实现”,将cmpadd实现更改为外部C“cmpAdd(FUN)(EXT)”;

g).菜单栏点击“编译”选项,在出现的下拉菜单中选择“生成运行时系统文件...”,在弹出的对话框中勾选中“M4接口文件”和“C根文件”,生成外部C函数;


结果显示:


外部 C函数的编写
a).复制“CmpTemplateEmpty”,将目录名称修改为“cmpAdd”,修改目录中的文件名,修改之后结果如下;

b).“cmpAddDep_m4.bat”和“cmpAddItf_m4.bat”文件中的“CmpTemplateEmpty”全部替换成“cmpAdd”;打开建立lib库时生成的C文件,将函数(如图所示):

复制到 “CmpTemplateEmpty” 目录中的 “cmpAdd.c” 文件的末尾;使用建立lib库时生成的m4文件替换掉 “CmpTemplateEmpty” 目录中的 “cmpAddItf.m4” 文件;将 “cmpAddDep.m4” 文件中的 “CmpTemplateEmpty” 全部替换成“cmpAdd”,将文件中的设备地址 “COMPONENT_VENDORID('0x0001')” ,修改为自己的设备('0x16b0');
c).使用鼠标左键双击 “cmpAddDep_m4.bat” 和 “cmpAddItf_m4.bat” 文件自动生成 “cmpAddDep.h” 和 “cmpAddItf.h” 文件;

d).在Source Insight 3软件中编写“cmpAdd”函数,最终结果如下图;


CodeSys测试lib库的工程
a).打开CodeSys软件,新建测试工程;
b).在lib工程中点击(),将lib库装入;
c).在新建的测试工程中双击(),点击(),在()中找到新建的lib,点击确定;

d).新建POU程序,调用lib里的cmpadd函数;


组件编译
a).将“cmpAdd”组件复制到Linux中;
b).打开组件中的“Makefile”文件,修改名称、路径以及GCC编译环境,结果如下图所示;




Make编译之后生成(
);

组件测试
a).将Linux上的“nfsroot”目录挂载到ARM开发板上的“/nfsdir”目录;

注意:Linux和ARM开发板需要在同一网段。   
b).将“libcmpAdd.so”文件复制到“/usr/lib”目录下;

c).进入“/Platforms/Linux/Bin”目录;

在“CODESYSControl.cfg”文件中添加“cmpAdd”库;

d).运行“codesyscontrol”;

查看打印的信息,确定组件已经添加;
e).运行测试例程,查看运行。





jsz873455667 发表于 2020-4-28 13:15:41

CmpTemplateEmpty在哪能找到?除了linx系统,可能对window系统的情况也说明一下。

寒江雪 发表于 2020-8-10 07:26:11

学习了谢谢

woodrow_wang 发表于 2020-8-12 04:35:23

同问,CmpTemplateEmpty 哪里有

nuanda 发表于 2020-9-7 11:22:38

woodrow_wang 发表于 2020-8-12 04:35
同问,CmpTemplateEmpty 哪里有

Codesys给的开发包里面就有。

lty 发表于 2021-8-30 11:31:22

学到了学到了

Scott_Lee 发表于 2022-1-11 16:13:09

能不能发一下CmpTemplateEmpty ,邮箱:Duankay_Lee@163.com,不胜感激。
页: [1]
查看完整版本: CodeSys组件编写