14. 其他接口
14.1. 传动带启动、停止
1/**
2* @brief 传动带启动、停止
3* @param [in] status 状态,1-启动,0-停止
4* @return 错误码
5*/
6int ConveyorStartEnd(byte status);
14.2. 记录IO检测点
1/**
2* @brief 记录IO检测点
3* @return 错误码
4*/
5int ConveyorPointIORecord();
14.3. 记录A点
1/**
2* @brief 记录A点
3* @return 错误码
4*/
5int ConveyorPointARecord();
14.4. 记录参考点
1/**
2* @brief 记录参考点
3* @return 错误码
4*/
5int ConveyorRefPointRecord();
14.5. 记录B点
1/**
2* @brief 记录B点
3* @return 错误码
4*/
5int ConveyorPointBRecord();
14.6. 传送带工件IO检测
1/**
2* @brief 传送带工件IO检测
3* @param [in] max_t 最大检测时间,单位ms
4* @return 错误码
5*/
6int ConveyorIODetect(int max_t);
14.7. 获取物体当前位置
1/**
2* @brief 获取物体当前位置
3* @param [in] mode 1-跟踪抓取,2-跟踪运动,3-TPD跟踪
4* @return 错误码
5*/
6int ConveyorGetTrackData(int mode);
14.8. 传动带跟踪开始
1/**
2* @brief 传动带跟踪开始
3* @param [in] status 状态,1-启动,0-停止
4* @return 错误码
5*/
6int ConveyorTrackStart(byte status);
14.9. 传动带跟踪停止
1/**
2* @brief 传动带跟踪停止
3* @return 错误码
4*/
5int ConveyorTrackEnd();
14.10. 传动带参数配置
1/**
2* @brief 传动带参数配置
3* @param [in] encChannel 编码器通道 1~2
4* @param [in] resolution 编码器转一圈的脉冲数
5* @param [in] lead 编码器转一圈传送带行走距离
6* @param [in] wpAxis 工件坐标系编号 针对跟踪运动功能选择工件坐标系编号,跟踪抓取、TPD跟踪设为0
7* @param [in] vision 是否配视觉 0-不配,1-配
8* @param [in] speedRadio 速度比:针对传送带跟踪抓取选项(1-100)其他选项默认为1
9* @return 错误码
10*/
11int ConveyorSetParam(int encChannel, int resolution, double lead, int wpAxis, int vision, double speedRadio);
14.11. 设置传动带抓取点补偿
1/**
2* @brief 设置传动带抓取点补偿
3* @param [in] cmp 补偿位置 double[3]{x, y, z}
4* @return 错误码
5*/
6int ConveyorCatchPointComp(double[] cmp);
14.12. 传送带跟踪直线运动
1/**
2* @brief 传送带跟踪直线运动
3* @param [in] name 运动点名称
4* @param [in] tool 工具坐标号,范围[0~14]
5* @param [in] wobj 工件坐标号,范围[0~14]
6* @param [in] vel 速度百分比,范围[0~100]
7* @param [in] acc 加速度百分比,范围[0~100],暂不开放
8* @param [in] ovl 速度缩放因子,范围[0~100]
9* @param [in] blendR [-1.0]-运动到位(阻塞),[0~1000.0]-平滑半径(非阻塞),单位mm
10* @return 错误码
11*/
12int ConveyorTrackMoveL(string name, int tool, int wobj, float vel, float acc, float ovl, float blendR);
14.13. 代码示例
1private void btnConvert_Click(object sender, EventArgs e)
2 {
3 Robot robot = new Robot();
4 robot.RPC("192.168.58.2");
5 DescPose pos1 = new DescPose(0, 0, 0, 0 ,0 ,0);
6 DescPose pos2 = new DescPose(0, 0, 0, 0, 0, 0);
7
8 pos1.tran.x = -351.175;
9 pos1.tran.y = 3.389;
10 pos1.tran.z = 431.172;
11 pos1.rpy.rx = -179.111;
12 pos1.rpy.ry = -0.241;
13 pos1.rpy.rz = 90.388;
14
15 pos2.tran.x = -333.654;
16 pos2.tran.y = -229.003;
17 pos2.tran.z = 404.335;
18 pos2.rpy.rx = -179.139;
19 pos2.rpy.ry = -0.779;
20 pos2.rpy.rz = 91.269;
21 int rtn = -1;
22
23 double[] cmp = new double[3] { 0, 9.99, 0};
24 rtn = robot.ConveyorCatchPointComp(cmp);
25 if(rtn != 0)
26 {
27 return;
28 }
29 Console.WriteLine($"ConveyorCatchPointComp: rtn {rtn}");
30
31 rtn = robot.MoveCart(pos1, 0, 0, 100.0f, 180.0f, 100.0f, -1.0f, -1);
32 Console.WriteLine($"MoveCart: rtn {rtn}");
33
34 rtn = robot.ConveyorIODetect(10000);
35 Console.WriteLine($"ConveyorIODetect: rtn {rtn}");
36
37 robot.ConveyorGetTrackData(1);
38 rtn = robot.ConveyorTrackStart(1);
39 Console.WriteLine($"ConveyorTrackStart: rtn {rtn}");
40
41 rtn = robot.ConveyorTrackMoveL("cvrCatchPoint", 0, 0, 100.0f, 0.0f, 100.0f, -1.0f, 0, 0);
42 Console.WriteLine($"ConveyorTrackMoveL: rtn {rtn}");
43
44 rtn = robot.MoveGripper(1, 59, 43, 21, 30000, 0);
45 Console.WriteLine($"MoveGripper: rtn {rtn}");
46
47 rtn = robot.ConveyorTrackMoveL("cvrRaisePoint", 0, 0, 100.0f, 0.0f, 100.0f, -1.0f, 0, 0);
48 Console.WriteLine($"ConveyorTrackMoveL: rtn {rtn}");
49
50 rtn = robot.ConveyorTrackEnd();
51 Console.WriteLine($"ConveyorTrackEnd: rtn {rtn}");
52
53 rtn = robot.MoveCart(pos2, 0, 0, 100.0f, 180.0f, 100.0f, -1.0f, -1);
54 Console.WriteLine($"MoveCart: rtn {rtn}");
55
56 rtn = robot.MoveGripper(1, 100, 43, 21, 30000, 0);
57 Console.WriteLine($"MoveGripper: rtn {rtn}");
58}
14.14. 获取SSH公钥
1/**
2* @brief 获取SSH公钥
3* @param [out] keygen 公钥
4* @return 错误码
5*/
6int GetSSHKeygen(ref string keygen);
14.15. 计算指定路径下文件的MD5值
1/**
2* @brief 计算指定路径下文件的MD5值
3* @param [in] file_path 文件路径包含文件名,默认Traj文件夹路径为:"/fruser/traj/",如"/fruser/traj/trajHelix_aima_1.txt"
4* @param [out] md5 文件MD5值
5* @return 错误码
6*/
7int ComputeFileMD5(string file_path, ref string md5);
14.16. 获取机器人急停状态
1/**
2* @brief 获取机器人急停状态
3* @param [out] state 急停状态,0-非急停,1-急停
4* @return 错误码
5*/
6int GetRobotEmergencyStopState(ref byte state);
14.17. 获取SDK与机器人的通讯状态
1/**
2* @brief 获取SDK与机器人的通讯状态
3* @param [out] state 通讯状态,0-通讯正常,1-通讯异常
4* @return 错误码
5*/
6int GetSDKComState(ref int state)
14.18. 获取安全停止信号
1/**
2* @brief 获取安全停止信号
3* @param [out] si0_state 安全停止信号SI0,0-无效,1-有效
4* @param [out] si1_state 安全停止信号SI1,0-无效,1-有效
5* @return 错误码
6*/
7int GetSafetyStopState(ref byte si0_state, ref byte si1_state)
14.19. 获取机器人DH参数补偿值
1/**
2* @brief 获取安全停止信号
3* @param [out] dhCompensation 机器人DH参数补偿值(mm) [cmpstD1,cmpstA2,cmpstA3,cmpstD4,cmpstD5,cmpstD6]
4* @return 错误码
5*/
6int GetDHCompensation(ref double[] dhCompensation)
14.20. 代码示例
1private void btnTestOthers_Click(object sender, EventArgs e)
2 {
3 Robot robot = new Robot();
4 robot.RPC("192.168.58.2");
5 int rtn = -1;
6 double[] dhCompensation = new double[6]{0,0,0,0,0,0};
7 rtn = robot.GetDHCompensation(ref dhCompensation);
8 Console.WriteLine($"GetDHCompensation: rtn :{rtn} {dhCompensation[0]} {dhCompensation[1]} {dhCompensation[2]} {dhCompensation[3]} {dhCompensation[4]} {dhCompensation[5]}");
9 string ssh = "";
10 rtn = robot.GetSSHKeygen(ref ssh);
11 Console.WriteLine($"GetSSHKeygen: ssh {ssh} rtn {rtn}");
12 string file_path = "/fruser/test.txt";
13 string md5 = "";
14 robot.ComputeFileMD5(file_path, ref md5);
15
16 byte state = 255;
17 rtn = robot.GetRobotEmergencyStopState(ref state);
18 Console.WriteLine($"GetRobotEmergencyStopState: rtn {rtn} state {state}");
19
20 int comState = -1;
21 rtn = robot.GetSDKComState(ref comState);
22 Console.WriteLine($"GetSDKComState: rtn {rtn} state {comState}");
23
24 byte si0_state = 255;
25 byte si1_state = 255;
26
27 rtn = robot.GetSafetyStopState(ref si0_state, ref si1_state);
28 Console.WriteLine($"GetSafetyStopState: rtn {rtn} si0_state {si0_state} si1_state {si1_state}");
29}
14.21. 上传点位表
1/**
2* @brief 点位表从本地计算机上传至机器人控制器
3* @param [in] pointTableFilePath 点位表在本地计算机的绝对路径C://test/pointTabl e1.db
4* @return 错误码
5*/
6int PointTableUpLoad(string pointTableFilePath);
14.22. 下载点位表
1/**
2* @brief 点位表从机器人控制器下载到本地计算机
3* @param [in] pointTableName 控制器中的点位表名称:pointTable1.db
4* @param [in] saveFilePath 点位表下载到计算机的路径 C://test/
5* @return 错误码
6*/
7int PointTableDownLoad(string pointTableName, string saveFilePath);
14.23. 点位表更新Lua程序
1/**
2* @brief 使用给定的点位表更新lua程序中的点
3* @param [in] pointTableName 控制器中的点位表名称:"pointTable1.db", 当点位表为空,即""时,表示将lua程序更新为未应用点位表的初始程序
4* @param [in] luaFileName 要更新的lua文件名称 "test.lua"
5* @param [out] errorStr 点位表更新lua错误信息
6* @return 错误码
7*/
8int PointTableUpdateLua(string pointTableName, string luaFileName, ref string errorStr);
14.24. 代码示例
1private void btnUpload_Click(object sender, EventArgs e)
2{
3 Robot robot = new Robot();
4 robot.RPC("192.168.58.2");
5 int rtn = -1;
6 rtn = robot.PointTableUpLoad("C://point_table_test.db");
7 Thread.Sleep(2000);
8 rtn = robot.PointTableDownLoad("point_table_test.db", "D://zDOWN/");
9 string errorStr = "";
10 rtn = robot.PointTableUpdateLua("point_table_test.db", "test.lua", ref errorStr);
11 Console.WriteLine($"PointTableSwitch rtn is {rtn}" + errorStr);
12 rtn = robot.ProgramLoad("/fruser/test.lua");
13 rtn = robot.ProgramRun();
14}
14.25. 初始化日志参数
在 C#SDK-v1.0.5 版本加入.
1/**
2* @brief 初始化日志参数
3* @param [in] logType:输出模式,DIRECT-直接输出;BUFFER-缓冲输出;ASYNC-异步输出
4* @param [in] logLevel:日志过滤等级,ERROR-错误;WARNING-警告;INFO-信息;DEBUG-调试
5* @param [in] filePath: 文件保存路径,如“D://Log/”
6* @param [in] saveFileNum:保存文件个数,同时超出保存文件个数和保存文件天数的文件将被删除
7* @param [in] saveDays: 保存文件天数,同时超出保存文件个数和保存文件天数的文件将被删除
8* @return 错误码
9*/
10public int LoggerInit(FrLogType logType = FrLogType.DIRECT, FrLogLevel logLevel = FrLogLevel.ERROR, string filePath = "", int saveFileNum = 10, int saveDays = 10);
14.26. 设置日志过滤等级
在 C#SDK-v1.0.5 版本加入.
1/**
2* @brief 设置日志过滤等级;
3* @param [in] logLevel: 日志过滤等级,ERROR-错误;WARNING-警告;INFO-信息;DEBUG-调试
4* @return 错误码
5*/
6public int SetLoggerLevel(FrLogLevel logLevel);
14.27. 代码示例
在 C#SDK-v1.0.5 版本加入.
1private void btnTestLog_Click(object sender, EventArgs e)
2{
3 robot = new Robot();//实例化机器人对象
4 robot.RPC("192.168.58.2"); //与控制箱建立连接
5 string path = "D://log/";
6 robot.LoggerInit(FrLogType.ASYNC, FrLogLevel.DEBUG, path, 5, 5);
7 robot.SetLoggerLevel(FrLogLevel.INFO);
8}
14.28. 设置机器人外设协议
在 C#SDK-v1.0.6 版本加入.
1/**
2* @brief 设置机器人外设协议
3* @param [in] protocol 机器人外设协议号 4096-扩展轴控制卡;4097-ModbusSlave;4098-ModbusMaster
4* @return 错误码
5*/
6int SetExDevProtocol(int protocol);
14.29. 获取机器人外设协议
在 C#SDK-v1.0.6 版本加入.
1/**
2* @brief 获取机器人外设协议
3* @param [out] protocol 机器人外设协议号 4096-扩展轴控制卡;4097-ModbusSlave;4098-ModbusMaster
4* @return 错误码
5*/
6int GetExDevProtocol(ref int protocol);
14.30. 代码示例
在 C#SDK-v1.0.6 版本加入.
1private void btnSetProto_Click(object sender, EventArgs e)
2{
3 Robot robot = new Robot();
4 robot.RPC("192.168.58.2");
5
6 int protocol = 4098;//ModbusMaster
7 robot.SetExDevProtocol(protocol);
8
9 robot.GetExDevProtocol(ref protocol);
10 Console.Writeline(“protocol is ” + protocol);
11}