Val3 机器人编程语言 中文版V7

更新时间:2023-04-29 04:27:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

VAL3参考手册

第7版

D2*******A –23/08/2010

说明书原本的翻译版

VAL 3 ? St?ubli 2010

您可在与控制箱一起交货的CDROM的"readme.pdf"文档中找到附录和勘误表

2 / 192

? St?ubli 2010 – D2*******A VAL 3

目录

目录

1-引言 (13)

2-VAL3语言基础知识 (17)

2.1软件应用 (19)

2.1.1定义 (19)

2.1.2默认内容 (19)

2.1.3程序启动和终止 (19)

2.1.4软件应用参数 (19)

2.1.4.1长度单位 (20)

2.1.4.2栈内存的数量 (20)

2.2程序 (21)

2.2.1定义 (21)

2.2.2重入程序 (21)

2.2.3Start()程序 (21)

2.2.4Stop()程序 (21)

2.2.5程序控制指令 (22)

注释 // (22)

call程序 (22)

return (22)

if控制指令 (23)

while控制指令 (24)

do ... until控制指令 (24)

for控制指令 (25)

switch控制指令 (26)

2.3数据 (28)

2.3.1定义 (28)

2.3.2简单类型 (28)

2.3.3结构类型 (28)

2.3.4数据容器 (29)

2.4数据初始化 (29)

2.4.1简单类型数据 (29)

2.4.2结构类数据 (29)

2.5变量 (30)

2.5.1定义 (30)

2.5.2变量的作用范围 (30)

2.5.3访问一个变量值 (30)

2.5.4适用于所有变量的指令 (31)

num size(*) (31)

bool isDefined(*) (31)

bool insert(*) (32)

bool delete(*) (33)

num getData(string sDataName, *) (34)

VAL 3? St?ubli 2010 – D2*******A 3 / 192

2.5.5数组变量的特殊指令 (35)

void append(*) (35)

num size(*, num nDimension) (35)

void resize(*, num nDimension, num nSize) (35)

2.5.6集合变量的特殊指令 (36)

string first(*) (36)

string next(*) (36)

string last(*) (36)

string prev(*) (36)

2.6程序参数 (37)

2.6.1按元素值的参数 (38)

2.6.2按元素引用的参数 (38)

2.6.3按数组或集合引用的参数 (39)

3-简单类型 (41)

3.1BOOL类型 (43)

3.1.1定义 (43)

3.1.2运算符 (43)

3.2NUM类型 (44)

3.2.1定义 (44)

3.2.2运算符 (45)

3.2.3指令 (46)

num sin(num nAngle) (46)

num asin(num nValue) (46)

num cos(num nAngle) (46)

num acos(num nValue) (46)

num tan(num nAngle) (46)

num atan(num nValue) (47)

num abs(num nValue) (47)

num sqrt(num nValue) (47)

num exp(num nValue) (47)

num power(num nX, num nY) (47)

num ln(num nValue) (48)

num log(num nValue) (48)

num roundUp(num nValue) (48)

num roundDown(num nValue) (48)

num round(num nValue) (48)

num min(num nX, num nY) (49)

num max(num nX, num nY) (49)

num limit(num nValue, num nMin, num nMax) (49)

num sel(bool bCondition, num nValue1, num nValue2) (49)

3.3位字段类型 (50)

3.3.1定义 (50)

3.3.2运算符 (50)

3.3.3指令 (50)

num bNot(num nBitField) (50)

num bAnd(num nBitField1, num nBitField2) (50)

num bOr(num nBitField1, num nBitField2) (51)

num bXor(num nBitField1, num nBitField2) (51)

num toBinary(num nValue[], num nValueSize, string sDataFormat, num& nDataByte[]) (52)

num fromBinary(num nDataByte[], num nDataSize, string sDataFormat, num&nValue[]) (52)

4 / 192

? St?ubli 2010 – D2*******A VAL 3

目录

3.4STRING类型 (54)

3.4.1定义 (54)

3.4.2运算符 (54)

3.4.3指令 (54)

string toString(string sFormat, num nValue) (54)

string toNum(string sString, num& nValue, bool& bReport) (55)

string chr(num nCodePoint) (56)

num asc(string sText, num nPosition) (57)

string left(string sText, num nSize) (57)

string right(string sText, num nSize) (57)

string mid(string sText, num nSize, num nPosition) (57)

string insert(string sText, string sInsertion, num nPosition) (58)

string delete(string sText, num nSize, num nPosition) (58)

string replace(string sText, string sReplacement, num nSize, num nPosition) (58)

num find(string sText1, string sText2) (58)

num len(string sText) (58)

3.5DIO类型 (59)

3.5.1定义 (59)

3.5.2运算符 (59)

3.5.3指令 (60)

void dioLink(dio& diVariable, dio diSource) (60)

num dioGet(dio diArray[]) (60)

num dioSet(dio diArray[], num nValue) (61)

num ioStatus(dio diInputOutput) (61)

num ioStatus(dio diInputOutput, string& sDescription, string& sPhysicalPath) (62)

3.6AIO类型 (63)

3.6.1定义 (63)

3.6.2指令 (63)

void aioLink(aio& aiVariable, aio aiSource) (63)

num aioGet(aio aiInput) (63)

num aioSet(aio aiOutput, num nValue) (63)

num ioStatus(aio aiInputOutput) (64)

num ioStatus(aio diInputOutput, string& sDescription, string& sPhysicalPath) (64)

3.7SIO类型 (65)

3.7.1定义 (65)

3.7.2运算符 (65)

3.7.3指令 (66)

void sioLink(sio& siVariable, sio siSource) (66)

num clearBuffer(sio siVariable) (66)

num sioGet(sio siInput, num& nData[]) (66)

num sioSet(sio siOutput, num& nData[]) (66)

num sioCtrl(sio siChannel, string nParameter, *value) (67)

4-用户界面 (69)

4.1用户页面 (71)

4.2屏幕类型 (71)

4.2.1用户屏幕的选择 (71)

4.2.2用户屏幕上的写入 (71)

4.2.3从用户屏幕读入 (71)

VAL 3? St?ubli 2010 – D2*******A 5 / 192

4.3指令 (72)

void userPage(), void userPage(screen scPage),void userPage(bool bFixed) (72)

void gotoxy(num nX, num nY), void gotoxy(screen scPage, num nX, num nY) (72)

void cls(), void cls(screen scPage) (72)

void setTextMode(num nMode),

void setTextMode(screen scPage, num nMode) (72)

num getDisplayLen(string sText) (73)

void put(string sText), void put(screen scPage, string sText)

void put(num nValue), void put(screen scPage, num nValue),

void putln(string sText), void putln(screen scPage, string sText),

void putln(num nValue), void putln(screen scPage, num nValue), (74)

void title(string sText), void title(screen scPage, string sText) (74)

num get(string& sText),num get(screen scPage, string& sText),

num get(num& nValue),num get(screen scPage, num& nValue),

num get(),num get(screen scPage) (74)

num getKey(), num getKey(screen scPage) (76)

bool isKeyPressed(num nCode),

bool isKeyPressed(screen scPage, num nCode) (76)

void popUpMsg(string sText) (76)

bool logMsg(string sText) (77)

string getProfile() (77)

num setProfile(string sUserLogin, string sUserPassword) (77)

string getLanguage() (78)

bool setLanguage(string sLanguage) (79)

string getDate(string sFormat) (79)

5-任务 (81)

5.1定义 (83)

5.2运行时错误后的重启 (83)

5.3可见性 (83)

5.4时序 (84)

5.5同步任务 (85)

5.6超时运行 (85)

5.7输入/输出刷新 (85)

5.8同步 (86)

5.9资源分配 (87)

5.10指令 (88)

void taskSuspend(string sName) (88)

void taskResume(string sName, num nSkip) (88)

void taskKill(string sName) (89)

void setMutex(bool& bMutex) (89)

string help(num nErrorCode) (89)

num taskStatus(string sName) (90)

void taskCreate string sName, num nPriority, program(...) . (91)

void taskCreateSync string sName, num nPeriod, bool& bOverrun, program(...) .. (92)

void wait(bool bCondition) (93)

void delay(num nSeconds) (93)

num clock() (94)

bool watch(bool bCondition, num nSeconds) (94)

6 / 192

? St?ubli 2010 – D2*******A VAL 3

目录

6-库 (95)

6.1定义 (97)

6.2接口 (97)

6.3接口标识符 (97)

6.4内容 (97)

6.5加密 (98)

6.6加载和卸载 (99)

6.7指令 (101)

num identifier:libLoad(string sPath) (101)

num identifier:libLoad(string sPath, string sPassword) (101)

num identifier:libSave(), num libSave() (101)

num libDelete(string sPath) (101)

string identifier:libPath(), string libPath() (102)

bool libList(string sPath, string& sContents[]) (102)

bool identifier:libExist(string sSymbolName) (102)

7-用户类型 (103)

7.1定义 (105)

7.2创建 (105)

7.3使用 (105)

8-机器人控制 (107)

8.1指令 (109)

void disablePower() (109)

void enablePower() (109)

bool isPowered() (109)

bool isCalibrated() (110)

num workingMode(), num workingMode(num& nStatus) (110)

num esStatus() (111)

bool safetyFault(string& sSignalName) (111)

num ioBusStatus(string& sErrorDescription[]) (111)

num getMonitorSpeed() (112)

num setMonitorSpeed(num nSpeed) (112)

string getVersion(string sComponent) (113)

9-机器人手臂位置 (115)

9.1引言 (117)

9.2JOINT类型 (117)

9.2.1定义 (117)

9.2.2运算符 (118)

9.2.3指令 (118)

joint abs(joint jPosition) (118)

joint herej() (119)

bool isInRange(joint jPosition) (119)

void setLatch(dio diInput) (CS8C only) (120)

bool getLatch(joint& jPosition) (CS8C only) (120)

VAL 3? St?ubli 2010 – D2*******A7 / 192

9.3TRSF类型 (121)

9.3.1定义 (121)

9.3.2方向 (122)

9.3.3运算符 (124)

9.3.4指令 (124)

num distance(trsf trPosition1, trsf trPosition2) (124)

trsf interpolateL(trsf trStart, trsf trEnd, num nPosition) (125)

trsf interpolateC(trsf trStart, trsf trIntermediate, trsf trEnd, num nPosition) (126)

trsf align(trsf trPosition, trsf Reference) (126)

9.4FRAME类型 (127)

9.4.1定义 (127)

9.4.2使用 (127)

9.4.3运算符 (128)

9.4.4指令 (128)

num setFrame(point pOrigin, point pAxisOx, point pPlaneOxy, frame& fResult) (128)

trsf position(frame fFrame, frame fReference) (128)

void link(frame fFrame, frame fReference) (128)

9.5TOOL类型 (129)

9.5.1定义 (129)

9.5.2使用 (129)

9.5.3运算符 (130)

9.5.4指令 (130)

void open(tool tTool) (130)

void close(tool tTool) (131)

trsf position(tool tTool, tool tReference) (131)

void link(tool tTool, tool tReference) (131)

9.6POINT类型 (132)

9.6.1定义 (132)

9.6.2运算符 (132)

9.6.3指令 (133)

num distance(point pPosition1, point pPosition2) (133)

point compose(point pPosition, frame fReference, trsf trTransformation) (133)

point appro(point pPosition, trsf trTransformation) (134)

point here(tool tTool, frame fReference) (134)

point jointToPoint(tool tTool, frame fReference, joint jPosition) (134)

bool pointToJoint(tool tTool, joint jInitial, point pPosition, joint& jResult) (135)

trsf position(point pPosition, frame fReference) (135)

void link(point pPoint, frame fReference) (135)

9.7CONFIG类型 (136)

9.7.1引言 (136)

9.7.2定义 (136)

9.7.3运算符 (137)

9.7.4姿态(RX/TX机器人手臂) (138)

9.7.4.1肩部姿态 (138)

9.7.4.2肘部姿态 (139)

9.7.4.3腕部姿态 (139)

9.7.5姿态(RS/TS机器人手臂) (140)

9.7.6指令 (140)

config config(joint jPosition) (140)

8 / 192

? St?ubli 2010 – D2*******A VAL 3

目录

10 - 运动控制 (141)

10.1轨迹控制 (143)

10.1.1运动类型: 点到点,直线,圆周 (143)

10.1.2运动连接: 轨迹混合 (145)

10.1.2.1轨迹混合 (145)

10.1.2.2取消混合 (146)

10.1.2.3关节轨迹混合, 笛卡尔轨迹混合 (146)

10.1.3运动恢复 (147)

10.1.4笛卡尔运动的特性(直线,圆) (148)

10.1.4.1运动方向插值 (148)

10.1.4.2姿态变化 (RX/TX机器人手臂) (150)

10.1.4.3奇点 (RX/TX机器人手臂) (152)

10.2运动预处理 (152)

10.2.1原理 (152)

10.2.2预测和轨迹混合 (152)

10.2.3同步 (153)

10.3速度监控 (154)

10.3.1原理 (154)

10.3.2简单调节 (154)

10.3.3高级调节 (155)

10.3.4工作范围错误 (155)

10.4实时运动控制 (155)

10.5MDESC类型 (156)

10.5.1定义 (156)

10.5.2运算符 (156)

10.6运动指令 (157)

num movej(joint jPosition, tool tTool, mdesc mDesc) (157)

num movej(point pPosition, tool tTool, mdesc mDesc) (157)

num movel(point pPosition, tool tTool, mdesc mDesc) (157)

num movec(point pIntermediate, point pTarget, tool tTool, mdesc mDesc) (158)

void stopMove() (159)

void resetMotion(), void resetMotion(joint jStartingPoint) (159)

void restartMove() (160)

void waitEndMove() (160)

bool isEmpty() (161)

bool isSettled() (161)

void autoConnectMove(bool bActive), bool autoConnectMove() (161)

num getSpeed(tool tTool) (162)

joint getPositionErr() (162)

void getJointForce(num& nForce) (162)

num getMoveld() (162)

num setMoveld(num nMoveld) (163)

VAL 3? St?ubli 2010 – D2*******A9 / 192

11 - 可选项 (165)

11.1力控制的柔性运动 (167)

11.1.1原理 (167)

11.1.2编程 (167)

11.1.3力的控制 (167)

11.1.4限制 (168)

11.1.5指令 (168)

num movejf(joint jPosition, tool tTool, mdesc mDesc, num nForce) (168)

num movelf(point pPosition, tool tTool, mdesc mDesc, num nForce) (169)

bool isCompliant() (169)

11.2ALTER: 路径实时控制 (170)

11.2.1原理 (170)

11.2.2编程 (170)

11.2.3限制 (170)

11.2.4安全须知 (171)

11.2.5限制 (171)

11.2.6指令 (171)

num alterMovej(joint jPosition, tool tTool, mdesc mDesc) (171)

num alterMovej(point pPosition, tool tTool, mdesc mDesc) (171)

num alterMovel(point pPosition, tool tTool, mdesc mDesc) (172)

num alterMovec(point pIntermediate,point pTarget,tool tTool,mdesc mDesc) (172)

num alterBegin(frame fAlterReference, mdesc mMaxVelocity) (173)

num alterBegin(tool tAlterReference,mdesc mMaxVelocity) (173)

num alterEnd() (174)

num alter(trsf trAlteration) (174)

num alterStopTime() (175)

11.3OEM许可证管理 (176)

11.3.1原理 (176)

11.3.2指令 (176)

string getLicence(string sOemLicenceName, string sOemPassword) (176)

11.4绝对机器人 (177)

11.4.1原理 (177)

11.4.2操作 (177)

11.4.3限制 (177)

11.4.4指令 (178)

void getDH (num& theta[], num& d[], num& a[], num& alpha[], num& beta[]) (178)

void getDefaultDH(num& theta[], num& d[], num& a[], num& alpha[], num& beta[]) (178)

bool setDH(num& theta[], num& d[], num& a[],num& b[], num& alpha[], num& beta[]) (178)

11.5连续轴 (179)

11.5.1原理 (179)

11.5.2指令 (179)

joint resetTurn(joint jReference) (179)

10 / 192

? St?ubli 2010 – D2*******A VAL 3

目录

12 - 附录 (181)

12.1运行时错误代码 (183)

12.2控制面板键盘按键代码 (184)

13 - 插图 (185)

14 - 索引 (187)

VAL 3? St?ubli 2010 – D2*******A11 / 192

12 / 192

? St?ubli 2010 – D2*******A VAL 3

章节 1 - 引言

章节 1

引言

VAL 3? St?ubli 2010 – D2*******A13 / 192

14 / 192

? St?ubli 2010 – D2*******A VAL 3

章节 1 - 引言

VAL 3是一种设计用于在各种应用中控制史陶比尔St?ubli机器人的高级程序语言。

VAL 3语言包含了标准实时控制高级计算机程序语言,和机器人工作单元专用的功能:

?机器人控制工具

?几何建模工具

?输入/输出控制工具

此参考指南旨在解释机器人编程时必须知道的概念,并根据下列类型分类详细解释VAL 3语言指令:

?VAL3基础知识

?简单类型

?用户界面

?任务

?库

?用户类型

?机器人控制

?手臂位置

?运动控制

?屏幕类型: 用于手动示教盒(MCP)的屏幕显示

每条指令和它的语句格式显示在目录中用于快速查阅。

VAL 3? St?ubli 2010 – D2*******A15 / 192

16 / 192

? St?ubli 2010 – D2*******A VAL 3

章节 2 - VAL 3语言基础知识

章节 2

VAL 3语言基础知识

VAL 3? St?ubli 2010 – D2*******A17 / 192

18 / 192

? St?ubli 2010 – D2*******A VAL 3

章节 2 - VAL 3语言基础知识

VAL 3编程语言由软件应用组成。 一个VAL 3软件应用包括程序和数据。 一个VAL 3软件应用也可以引用其他被用作库或作为用户类型定义的软件应用。

2.1.软件应用

2.1.1.定义

一个VAL 3软件应用是一个自包含的软件包,设计用于控制机器人和与一个控制器相关联的输入输出。

一个VAL 3软件应用包括以下要素:

-一组程序: 要执行的VAL 3指令

-一组全局变量: 在软件应用中所有程序共享的数据

-一组库: 用来共享程序和/或数据的外部软件应用

-一组用户类型: 在软件应用中用作定义结构数据的模板的外部软件应用

当一个软件应用正在执行时,它还包括:

-一组任务: 同时执行的程序

2.1.2.默认内容

通过复制预定义内容,软件应用模板来建立一个新的VAL 3软件应用。 可以创建新用户特定模板。 它们简单地由一个在控制器的一个专门文件夹中的标准VAL 3软件应用组成。

只有当一个VAL 3软件应用同时包含一个start()和一个stop()程序时才能启动。 若无start()和stop()程序,一个VAL 3软件应用只能被用作一个库或一个用户类型定义。 可以定义仅包含数据,或仅包含程序的软件应用。2.1.3.程序启动和终止

控制器管理一个VAL 3软件应用的启动。 它可以是一个来自MCP用户界面的用户请求,或是作为启动过程的自动部分。

每次只能启动一个VAL 3软件应用。 不过,一个软件应用可以同时使用多个其他的软件应用(例如库),和启动多个不同的执行任务。

当一个VAL 3软件应用运行时,它的start()程序被执行。

最后一项任务完成时,VAL 3软件应用自动停止: 然后就执行stop()程序。 如果仍有任务未执行,由程序库创建的所有任务便都按照其被创建时的相反顺序被一一删除。

如果VAL 3软件应用的停止是通过用户界面(MCP)进行的,启动任务(如果还存在的话)就立即被摧毁。 接下来执行stop()程序,然后所有尚未执行的软件应用的任务按照其被创建时的反向顺序被删除。

2.1.4.软件应用参数

以下参数可用来设置一个VAL 3软件应用:

-长度单位

-内存堆栈的容量

这些参数不能通过VAL 3指令来访问,但是可以通过MCP用户界面或使用St?ubli Robotics Suite中的VAL 3 Studio来修改。

VAL 3? St?ubli 2010 – D2*******A19 / 192

2.1.4.1.长度单位

在VAL 3软件应用中,长度单位为毫米或英寸。VAL 3的几何数据类型使用此单位: 坐标系、点、关节(对于线性轴)、变换、工具、轨迹混合。

一个软件应用的长度单位在其创建时被定义,之后不可再更改。

2.1.4.2.栈内存的数量

对于每个要储存的VAL 3任务都需要一定的内存:

-调用栈(在这个任务中将要执行的程序列表)

-调用栈的每个程序的参数

-调用栈的每个程序的局部变量

默认情况下,每个任务有栈内存的5000个字节。 通常不需要改变此参数。

这个内存数量对于包含大量局部变量或递归算法的软件应用可能会不足:

在此情况下,必须使用MCP用户界面或St?ubli Robotics Suite中的VAL 3Studio来增加栈内存的数量,或者通过减少在调用栈中的程序数目或使用全局变量而不是局部变量来优化软件应用。

20 / 192

? St?ubli 2010 – D2*******A VAL 3

章节 2 - VAL 3语言基础知识

2.2.程序

2.2.1.定义

一个程序是要被执行的一系列VAL 3指令。

一个程序由下列部分构成:

-指令顺序: 要执行的VAL 3指令

-一组局部变量: 程序内部数据

-一组参数: 程序调用时给程序提供的数据

程序用来将在一个软件应用中多点处被执行的指令顺序组成组。 为了节省编程时间,它们也简化软件应用的结构,方便编程和维护,并提高可读性。

一个程序的指令数仅受系统中的可用存储空间的限制。

局部变量和参数的数量仅受此软件应用的栈内存的大小的限制 (见第2.1.4.2章节)。

2.2.2.重入程序

程序可重入,也就是说一个程序可递归调用其本身(call指令),或是同时被多个任务所调用。 一个程序的每个调用都使用自己专有的局部变量和参数。 不可能在这同一程序的两个不同调用之间交互。

2.2.

3.START()程序

start()程序是当VAL 3软件应用运行时调用的程序。 它不能含有任何参数。

这个程序通常包含执行此软件应用所需要的所有运算: 全局变量和输出的初始化,创建一个软件应用任务,等等。只要其他软件应用任务仍然运行,此软件应用就不在start()程序结束处停止。

start()程序可以在一个程序(call指令)中被调用,就像任意一个其它程序一样。

2.2.4.STOP()程序

stop()程序是在VAL 3软件应用停止时被调用的程序。 它不能含有任何参数。

此程序一般包括正确结束此软件应用所需的所有运算: 按照一个合适的顺序,重置输出和停止软件应用任务,等等。

就像其他程序一样,stop()程序可以在一个程序中被调用(call指令),但是调用stop()程序不能停止此软件应用。VAL 3? St?ubli 2010 – D2*******A21 / 192

本文来源:https://www.bwwdw.com/article/a03q.html

Top