目录
概要
API分类
- 应用程序任务控制:应用程序启动/停止,应用程序之间的数据传输,单独控制,同步执行;
- 机器人控制:通过应用程序控制机器人运动;
- JOB控制:启停JOB(INFORM程序),JOB之间的变量传输,同步执行;
- CIO控制:控制I/O口输入输出,读写寄存器;
- 以太网通信控制:支持以太网通信,主要是Winsock函数库;
- 编程示教器通信:进行应用程序和编程示教器程序之间的通信;
- 事件:每个I/O控制周期和插补周期触发事件;
- RS232C串口通信控制;
- 传感器控制:与JOB进行通信并调整操作状态;
- 内存管理;
- 通用文件控制;
- 现存文件控制;
MotoPlus规定
编号 | 项目 | 规定 |
1 | 启动的应用程序数目 | 1个 |
2 | 最大可用内存 | 2Mbyte |
3 | 任务优先级及可用个数 | 共分四级 1:每个I/O控制周期(1个); 2:每个插补周期(1个); 3:高优先级(1个); 4:一般优先级(3个); |
4 | 堆栈大小 | 40Kbyte |
支持的数据类型
任务
任务是MotoPlus应用程序的可执行单元,可支持多任务同时运行。任务之间的时序同步可提供任务控制API实现。
任务状态
共有五种状态,相互之间的转换关系如同。
示例程序
1、显示Hello World
//mpMain.c
#include "motoPlus.h"
int SetApplicationInfo();
void mpTask();
//GLOBAL DATA DEFINITIONS
int nTaskID;
void mpUsrRoot(int arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, int arg8, int arg9, int arg10)
{
int rc;
//TODO: Add additional intialization routines.
//Creates and starts a new task in a seperate thread of execution.
//All arguments will be passed to the new task if the function
//prototype will accept them.
nTaskID = mpCreateTask(MP_PRI_TIME_NORMAL, MP_STACK_SIZE, (FUNCPTR)mpTask,
arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10);
//Set application information.
rc = SetApplicationInfo();
//Ends the initialization task.
mpExitUsrRoot;
}
//Set application information.
int SetApplicationInfo(void)
{
MP_APPINFO_SEND_DATA sData;
MP_STD_RSP_DATA rData;
int rc;
memset(&sData, 0x00, sizeof(sData));
memset(&rData, 0x00, sizeof(rData));
strncpy(sData.AppName, "Hello World Application", MP_MAX_APP_NAME);
strncpy(sData.Version, "0.00", MP_MAX_APP_VERSION);
strncpy(sData.Comment, "Display Hello World", MP_MAX_APP_COMMENT);
rc = mpApplicationInfoNotify(&sData, &rData);
return rc;
}
void mpTask(void)
{
//Display "Hello World every 2.5 seconds via telnet"
while(1)
{
puts("Hello World!");
mpTaskDelay(2500);
}
}
2.Task控制