登录
首页 运动控制 运动控制
回帖 发帖
正文

主题:【正运动技术】在RTSys中使用C语言编程

点击:12 回复:1

如何使用C语言与BASIC语言进行配合
附件 2.jpg
基本使用方法
(1)固件版本要求:控制器使用C函数需要使用支持C接口函数的固件版本;固件版本名称里带有“cfunc”的即为支持C函数接口。
(2)函数调用限制:同一个C文件内的某一个C函数只能在某一个Basic文件内被声明调用,不可被在多个basic文件内都进行声明调用。
(3)多函数声明规则:同一个C文件内的不同C函数可以分别在不同的Basic文件内被声明调用,但再次被声明后的函数名不可一致。
DEFINE_CFUNC -- 关键字
附件 3.jpg
支持的数据类型定义:int、float、double、TYPE_TABLE。如果与TABLE数组交互,建议使用TYPE_TABLE类型。在4系列以上的控制器,TYPE_TABLE是double类型。
举例一
(1)C语言编程部分:
int userc_init(void)
{
   int* p=(int *)malloc(sizeof(int));
   p[0]=88;
   printf("p[0]=%d\n",p[0]);
   free(p);
   return 0;
}
float divf(float a,float b)
{
   return (a/b);
}
TYPE_TABLE divd(TYPE_TABLE a,TYPE_TABLE b)
{
   return (a/b);
}
(2)BASIC编程部分:
define_cfunc userc_init int userc_init(void)
define_cfunc userc_divf float divf(float a,float b)
define_cfunc userc_divd double divd(double a,double b)
?userc_init()
?userc_divf(23.1,1)
?userc_divd(23.3,1)
附件 4.jpg
注意事项:
(1)定义的无参数函数,可以在INT_CYCLE中直接使用。
(2)BASIC调用的C函数的参数个数最多支持8个。
(3)C函数注意安全性,注意代码规范性,否则可能导致死机。
(4)C函数要注意实时性,处理必须够快,否则会影响BASIC的实时性。
注:建议调试时都下载RAM运行!
C函数使用步骤
1.在RTSys软件中单击菜单栏“文件”,在下拉窗口中选择“新建项目”。选择项目文件存入的路径并且自定义命名项目名称。
附件 7.jpg
2.新建项目成功后,在新建的项目下新建新的Basic文件,并且自定义相关Basic文件名。点击确定Basic文件创建成功。
附件 8.jpg
3.新建.C文件。步骤可参照第二步,新建文件类型时需选择“C”。
附件 9.jpg
4.右键单击“文件视图”中空白区域,点击弹出窗口中“设置”一栏,进行编译平台设置操作。
附件 10.jpg
5.在弹出窗口“编译平台”一栏中点击下拉列表,在下拉列表中选择相应的编译平台后单击“确定”,即可完成编译平台设置操作,编译平台的选择可参照评论区内容“编译平台选择参考”。
附件 11.jpg
6.编写C函数。编写C程序时需先进行头文件声明步骤,然后再按照C语言编码规范编写C函数。
头文件声明语法:#include “xxxxx.h”。“xxxx.h”为引用内置函数的头文件。如下图所示,“.h”头文件的文件路径需与项目文件路径一致。“zmcbuildin.h”文件可联系正运动工程师获取。
附件 12.jpg
附件 13.jpg
7.在BASIC程序中使用C函数时需要使用关键字“DEFINE_CFUNC”对被使用C函数进行引用定义,定义后在Basic文件中使用重新赋予的函数名即可调用该C函数。
附件 14.jpg
注:C函数代码在RTSys中直接编辑即可,在其他软件中编辑复制到RTSys中时可能会导致乱码或格式错误等问题。
25-12-17 10:41
编译平台选择参照
不同型号控制器编译平台有所不同,具体参照下表。目前仅以下型号控制器支持C语言。
附件 5.jpg
右键单击“文件视图”中空白区域,点击弹出窗口中“设置”一栏,进行编译平台设置操作。在弹出窗口“编译平台”一栏中点击下拉列表,在下拉列表中选择相应的编译平台后单击“确定”,即可完成编译平台设置操作。
附件 6.jpg
25-12-17 11:12

工控新闻

更多新闻资讯