我想得越多,我就越好奇为什么TCP块集不支持代码生成,而它最初是为实时应用程序设计的。万博1manbetx因此,将生成C代码并将其传输到目标计算机。所以最后,在桌面实时中也应该可以从TCP块生成C代码
万博1manbetx通过TCP/IP实现机器人的实时控制
10次浏览(过去30天)
显示旧的注释
你好,
简介
我正在使用万能机器人公司的UR10e机械臂。机器人有一个静态IP地址,制造商提供一个TCP/IP接口,用于发送控制命令(如关节位置、速度等),并接收机器人所需的状态更新(实际姿势、逆运动学、时间戳等)。
该接口位于机器人的特定端口上,需要一些初始消息来在服务器和客户端之间建立所需的对话(告诉机器人发送什么消息,定义频率并为机器人输入消息做好准备)。因此,客户端(网络中的本地计算机)必须通过稍后用于整个通信的相同端口发送初始消息(在端口A上发送数据,在端口A上接收数据)。
任务
有了Simulink强大的代码生成功能和大量的控制选项,我想在我的计算机上在Simu万博1manbetxlink中设置这个TCP/IP控件。
因此,我需要Simulink以实时万博1manbetx模式运行,并让它在每个迭代步骤中读取TCP/IP输入,并在每个迭代步骤中发送TCP/IP消息。
不久之后,我就被这个解释弄糊涂了
https://de.mathworks.com/matlabcentral/answers/536647-what-is-the-difference-between-normal-accelerator-and-external-mode-when-using-万博1manbetxsimulink-desktop-rea
,而且由于我没有任何远程计算机来使用实际的实时环境,实时桌面环境似乎是最适合我的解决方案。
的
正常模式
,
加速器模式
或
外部模式
为控制和通信提供所需的实时选项,同时仍然在我的本地机器上运行。但是由于两者
正常的
而且
加速器
模式不能保证100%实时,只能
外部模式
满足实时和代码生成的要求,其中代码运行在我的windows实时内核上,与Simulink交互。万博1manbetx
问题
的TCP/IP块
仪器Controlbox
类的TCP块("TCP/IP Send"和"TCP/IP Receive")
万博1manbetxSimulink实时/ IP库(“TCP客户端”,“TCP发送”和“TCP接收”)
与代码生成不兼容,因此不能使用外部模式(见下图)。
的
万博1manbetxSimulink桌面实时
库是为正常模式、加速器模式和外部模式设计的,但由于某种原因,TCP/IP连接(我使用的是“数据包输出”和“数据包输入”块)从机器人那里获得了一个RST响应,表明通信失败(见下图)。
“Packet Output”和“Packet Input”块的另一个问题是,初始消息在3到250字节的范围内,而实际对话使用500Hz的52字节(接收)和104字节(发送)的静态消息长度。“Packet”块似乎不支持可变消息长度
问题
- 关于“Packet Output”和“Packet Input”区块的外部模式方法:为什么我被机器人拒绝?我的分组设置错了吗?
编辑:
我只是在主机设备上定义端口时犯了一个错误:我输入的不是30004,而是300004。现在它的反应是正确的。
- 关于“数据包输出”和“数据包输入”的外部模式方法:有没有一种方法可以为接收和发送选项实现可变的包长度?
- 一般来说:这种方法注定会失败吗?如果是的话,我还有其他选择吗?我可以修复以前的TCP/IP或TCP方法吗?
图片
- TCP块的代码生成,在正常的模拟中工作,并且能够处理由于发送和接收块中的“Length”端口而导致的可变消息长度
2.设置“包”块。这里是第一个初始消息的静态长度
3.在外部模式下使用“Packet”块时,数据包拒绝
提前感谢你给我的每一个提示。
最好的问候,
马克斯