4. 机器人IO
4.1. 设置控制箱数字量输出
1/**
2* @brief 设置控制箱数字量输出
3* @param [in] id io编号,范围[0~15]
4* @param [in] status 0-关,1-开
5* @param [in] smooth 0-不平滑, 1-平滑
6* @param [in] block 0-阻塞,1-非阻塞
7* @return 错误码
8*/
9int SetDO(int id, byte status, byte smooth, byte block);
4.2. 设置工具数字量输出
1/**
2* @brief 设置工具数字量输出
3* @param [in] id io编号,范围[0~1]
4* @param [in] status 0-关,1-开
5* @param [in] smooth 0-不平滑, 1-平滑
6* @param [in] block 0-阻塞,1-非阻塞
7* @return 错误码
8*/
9int SetToolDO(int id, byte status, byte smooth, byte block);
4.3. 设置控制箱模拟量输出
1/**
2* @brief 设置控制箱模拟量输出
3* @param [in] id io编号,范围[0~1]
4* @param [in] value 电流或电压值百分比,范围[0~100]对应电流值[0~20mA]或电压[0~10V]
5* @param [in] block 0-阻塞,1-非阻塞
6* @return 错误码
7*/
8int SetAO(int id, float value, byte block);
4.4. 设置工具模拟量输出
1/**
2* @brief 设置工具模拟量输出
3* @param [in] id io编号,范围[0]
4* @param [in] value 电流或电压值百分比,范围[0~100]对应电流值[0~20mA]或电压[0~10V]
5* @param [in] block 0-阻塞,1-非阻塞
6* @return 错误码
7*/
8int SetToolAO(int id, float value, byte block);
4.5. 获取控制箱数字量输入
1/**
2* @brief 获取控制箱数字量输入
3* @param [in] id io编号,范围[0~15]
4* @param [in] block 0-阻塞,1-非阻塞
5* @param [out] result 0-低电平,1-高电平
6* @return 错误码
7*/
8int GetDI(int id, byte block, ref byte level);
4.6. 获取工具数字量输入
1/**
2* @brief 获取工具数字量输入
3* @param [in] id io编号,范围[0~1]
4* @param [in] block 0-阻塞,1-非阻塞
5* @param [out] result 0-低电平,1-高电平
6* @return 错误码
7*/
8int GetToolDI(int id, byte block, ref byte level);
4.7. 等待控制箱数字量输入
1/**
2* @brief 等待控制箱数字量输入
3* @param [in] id io编号,范围[0~15]
4* @param [in] status 0-关,1-开
5* @param [in] max_time 最大等待时间,单位ms
6* @param [in] opt 超时后策略,0-程序停止并提示超时,1-忽略超时提示程序继续执行,2-一直等待
7* @return 错误码
8*/
9int WaitDI(int id, byte status, int max_time, int opt);
4.8. 等待控制箱多路数字量输入
1/**
2* @brief 等待控制箱多路数字量输入
3* @param [in] mode 0-多路与,1-多路或
4* @param [in] id io编号,bit0~bit7对应DI0~DI7,bit8~bit15对应CI0~CI7
5* @param [in] status 0-关,1-开
6* @param [in] max_time 最大等待时间,单位ms
7* @param [in] opt 超时后策略,0-程序停止并提示超时,1-忽略超时提示程序继续执行,2-一直等待
8* @return 错误码
9*/
10int WaitMultiDI(int mode, int id, byte status, int max_time, int opt);
4.9. 等待工具数字量输入
1/**
2* @brief 等待工具数字量输入
3* @param [in] id io编号,范围[0~1]
4* @param [in] status 0-关,1-开
5* @param [in] max_time 最大等待时间,单位ms
6* @param [in] opt 超时后策略,0-程序停止并提示超时,1-忽略超时提示程序继续执行,2-一直等待
7* @return 错误码
8*/
9int WaitToolDI(int id, byte status, int max_time, int opt);
4.10. 获取控制箱模拟量输入
1/**
2* @brief 获取控制箱模拟量输入
3* @param [in] id io编号,范围[0~1]
4* @param [in] block 0-阻塞,1-非阻塞
5* @param [out] result 输入电流或电压值百分比,范围[0~100]对应电流值[0~20mS]或电压[0~10V]
6* @return 错误码
7*/
8int GetAI(int id, byte block, ref float persent);
4.11. 获取工具模拟量输入
1/**
2* @brief 获取工具模拟量输入
3* @param [in] id io编号,范围[0]
4* @param [in] block 0-阻塞,1-非阻塞
5* @param [out] result 输入电流或电压值百分比,范围[0~100]对应电流值[0~20mS]或电压[0~10V]
6* @return 错误码
7*/
8int GetToolAI(int id, byte block, ref float persent);
4.12. 获取机器人末端记录按钮状态
1/**
2* @brief 获取机器人末端记录按钮状态
3* @param [out] state 按钮状态,0-按下,1-松开
4* @return 错误码
5*/
6int GetAxlePointRecordBtnState(ref byte state);
4.13. 等待控制箱模拟量输入
1/**
2* @brief 等待控制箱模拟量输入
3* @param [in] id io编号,范围[0~1]
4* @param [in] sign 0-大于,1-小于
5* @param [in] value 输入电流或电压值百分比,范围[0~100]对应电流值[0~20mS]或电压[0~10V]
6* @param [in] max_time 最大等待时间,单位ms
7* @param [in] opt 超时后策略,0-程序停止并提示超时,1-忽略超时提示程序继续执行,2-一直等待
8* @return 错误码
9*/
10int WaitAI(int id, int sign, float value, int max_time, int opt);
4.14. 等待工具模拟量输入
1/**
2* @brief 等待工具模拟量输入
3* @param [in] id io编号,范围[0]
4* @param [in] sign 0-大于,1-小于
5* @param [in] value 输入电流或电压值百分比,范围[0~100]对应电流值[0~20mS]或电压[0~10V]
6* @param [in] max_time 最大等待时间,单位ms
7* @param [in] opt 超时后策略,0-程序停止并提示超时,1-忽略超时提示程序继续执行,2-一直等待
8* @return 错误码
9*/
10int WaitToolAI(int id, int sign, float value, int max_time, int opt);
4.15. 获取机器人末端DO输出状态
1/**
2* @brief 获取机器人末端DO输出状态
3* @param [out] do_state DO输出状态,do0~do1对应bit1~bit2,从bit0开始
4* @return 错误码
5*/
6int GetToolDO(ref byte do_state);
4.16. 获取机器控制器DO输出状态
1/**
2* @brief 获取机器人控制器DO输出状态
3* @param [out] do_state_h DO输出状态,co0~co7对应bit0~bit7
4* @param [out] do_state_l DO输出状态,do0~do7对应bit0~bit7
5* @return 错误码
6*/
7int GetDO(ref int do_state_h, ref int do_state_l);
4.17. 代码示例
1private void btnIOTest_Click(object sender, EventArgs e)
2{
3 Robot robot = new Robot();
4 robot.RPC("192.168.58.2");
5
6 byte status = 1;
7 byte smooth = 0;
8 byte block = 0;
9 byte di = 0, tool_di = 0;
10 float ai = 0.0f, tool_ai = 0.0f;
11 float value = 0.0f;
12 int i;
13
14 for (i = 0; i < 16; i++)//所有控制器IO输出置 1
15 {
16 robot.SetDO(i, status, smooth, block);
17 robot.WaitMs(500);
18 }
19
20 status = 0;
21
22 for (i = 0; i < 16; i++)//所有控制器IO输出置 0
23 {
24 robot.SetDO(i, status, smooth, block);
25 robot.WaitMs(500);
26 }
27
28 status = 1;
29
30 for (i = 0; i < 2; i++)//所有工具端IO输出置 1
31 {
32 robot.SetToolDO(i, status, smooth, block);
33 robot.WaitMs(500);
34 }
35 status = 0;
36 for (i = 0; i < 2; i++)//所有工具端IO输出置 0
37 {
38 robot.SetToolDO(i, status, smooth, block);
39 robot.WaitMs(500);
40 }
41
42 value = 50.0f;
43 robot.SetAO(0, value, block);//设置控制器0号模拟量输出50%
44 value = 100.0f;
45 robot.SetAO(1, value, block);//设置控制器1号模拟量输出100%
46 robot.WaitMs(300);
47 value = 0.0f;
48 robot.SetAO(0, value, block);//设置控制器0号模拟量输出0%
49 value = 0.0f;
50 robot.SetAO(1, value, block);//设置控制器1号模拟量输出0%
51
52 value = 100.0f;
53 robot.SetToolAO(0, value, block);//设置工具端0号模拟量输出100%
54 robot.WaitMs(1000);
55 value = 0.0f;
56 robot.SetToolAO(0, value, block);//设置工具端0号模拟量输出0%
57
58 robot.GetDI(0, block, ref di);//获取数字输入
59 Console.WriteLine($"di0 : {di}");
60 robot.WaitDI(0, 1, 0, 2); //等待0号端口数字量输入1,一直等待
61 Console.WriteLine("wait di success");
62 robot.WaitMultiDI(0, 3, 0, 10000, 2); //等待多路与, 0和1端口,输入置1,等待时间10000ms, 一直等待
63 Console.WriteLine("wait multi di success");
64 robot.GetToolDI(1, block, ref tool_di);//获取工具端数字量输入
65 Console.WriteLine($"tool_di1 : {tool_di}");
66 robot.WaitToolDI(1, 0, 0, 2); //一直等待
67 Console.WriteLine("wait tool di success");
68 robot.GetAI(0, block, ref ai);
69 Console.WriteLine($"ai0 : {ai}");
70 robot.GetAI(1, block, ref ai);
71 Console.WriteLine($"ai1 : {ai}");
72 robot.WaitAI(0, 1, 50.0f, 0, 2); //等待0号口, 小于 , %50, 一直等待
73 Console.WriteLine("wait ai success");
74 robot.WaitToolAI(0, 1, 50, 0, 2); //一直等待
75 Console.WriteLine("wait tool ai success");
76 robot.GetToolAI(0, block, ref tool_ai);
77 Console.WriteLine($"tool_ai0 : {tool_ai}");
78}
4.18. 获取机器人软件版本
1/**
2* @brief 获取机器人软件版本信息
3* @param [out] robotModel 机器人型号
4* @param [out] webVersion web版本
5* @param [out] controllerVersion 控制器版本
6* @return 错误码
7*/
8int GetSoftwareVersion(ref string robotModel, ref string webVersion, ref string controllerVersion);
4.19. 获取机器人硬件版本
1/**
2* @brief 获取机器人硬件版本信息
3* @param [out] ctrlBoxBoardVersion 控制箱载板硬件版本
4* @param [out] driver1Version 驱动器1硬件版本
5* @param [out] driver1Version 驱动器2硬件版本
6* @param [out] driver1Version 驱动器3硬件版本
7* @param [out] driver1Version 驱动器4硬件版本
8* @param [out] driver1Version 驱动器5硬件版本
9* @param [out] driver1Version 驱动器6硬件版本
10* @param [out] endBoardVersion 末端板硬件版本
11* @return 错误码
12*/
13int GetHardwareVersion(ref string ctrlBoxBoardVersion, ref string driver1Version, ref string driver2Version, ref string driver3Version,ref string driver4Version, ref string driver5Version, ref string driver6Version, ref string endBoardVersion);
4.20. 获取机器人固件版本
1/**
2* @brief 获取机器人固件版本信息
3* @param [out] ctrlBoxBoardVersion 控制箱载板固件版本
4* @param [out] driver1Version 驱动器1固件版本
5* @param [out] driver1Version 驱动器2固件版本
6* @param [out] driver1Version 驱动器3固件版本
7* @param [out] driver1Version 驱动器4固件版本
8* @param [out] driver1Version 驱动器5固件版本
9* @param [out] driver1Version 驱动器6固件版本
10* @param [out] endBoardVersion 末端板固件版本
11* @return 错误码
12*/
13int GetFirmwareVersion(ref string ctrlBoxBoardVersion, ref string driver1Version, ref string driver2Version, ref string driver3Version,ref string driver4Version, ref string driver5Version, ref string driver6Version, ref string endBoardVersion);
4.21. 代码示例
1private void btnGetVersions_Click(object sender, EventArgs e)
2{
3 string[] ver = new string[20];
4 int rtn = 0;
5 rtn = robot.GetSoftwareVersion(ref ver[0], ref ver[1], ref ver[2]);
6 rtn = robot.GetHardwareVersion(ref ver[3], ref ver[4], ref ver[5], ref ver[6], ref ver[7], ref ver[8], ref ver[9], ref ver[10]);
7 rtn = robot.GetFirmwareVersion(ref ver[11], ref ver[12], ref ver[13], ref ver[14], ref ver[15], ref ver[16], ref ver[17], ref ver[18]);
8 Console.WriteLine($"robotmodel is: {ver[0]}");
9 Console.WriteLine($"webVersion is: {ver[1]}");
10 Console.WriteLine($"controllerVersion is: {ver[2]}");
11 Console.WriteLine($"Hard ctrlBox Version is: {ver[3]}");
12 Console.WriteLine($"Hard driver1 Version is: {ver[4]}");
13 Console.WriteLine($"Hard driver2 Version is: {ver[5]}");
14 Console.WriteLine($"Hard driver3 Version is: {ver[6]}");
15 Console.WriteLine($"Hard driver4 Version is: {ver[7]}");
16 Console.WriteLine($"Hard driver5 Version is: {ver[8]}");
17 Console.WriteLine($"Hard driver6 Version is: {ver[9]}");
18 Console.WriteLine($"Hard end Version is: {ver[10]}");
19 Console.WriteLine($"Firm ctrlBox Version is: {ver[11]}");
20 Console.WriteLine($"Firm driver1 Version is: {ver[12]}");
21 Console.WriteLine($"Firm driver2 Version is: {ver[13]}");
22 Console.WriteLine($"Firm driver3 Version is: {ver[14]}");
23 Console.WriteLine($"Firm driver4 Version is: {ver[15]}");
24 Console.WriteLine($"Firm driver5 Version is: {ver[16]}");
25 Console.WriteLine($"Firm driver6 Version is: {ver[17]}");
26 Console.WriteLine($"Firm end Version is: {ver[18]}");
27}