标题: 关于CAN总线请教大家个问题 [打印本页]

作者: 上善若水001    时间: 2020-3-24 19:37
标题: 关于CAN总线请教大家个问题
       我现在使用1个主机给2个从机发送数据,数据是电机的转动圈数,每个从机都控制一个直流电机,从机的电机执行完转动圈数后给主机一个信号,表示从机执行完这组数据了,主机接受到这个信号后再给从机发送下一组数据让两个电机同时运动,2个电机的圈数是一 一对应的。要求是必须每个电机都执行完上一组的数据后,主机才能 同时 给2个从机发送下一组数据,现在的问题是 每个电机的转动圈数是不同的也就是说 每个从机给主机的这个 执行完 信号并不是同时到达主机的,怎么才能让主机给2个从机同时发送信号呢?
    我自己写了个程序但是没有实现我想要的功能
       i f ( 从机1执行完信号 && 从机2执行完信号 )
         {
             给从机1发送数据;
             给从机2发送数据;
         }



我的其他想法是能不能使用 while()进行等待,不知道行不行

想请各位大佬来指点指点,感激不尽!


作者: lovexulu    时间: 2020-3-24 23:15
你这个if应该可以的,在发送完数据后应该复位执行完毕的标志。
作者: xuzhou201206    时间: 2020-3-25 00:14
CAN 总线是广播的,给主机给两个从机发送完指定圈数之后,再发送一个触发信号(或者叫启动信号),只要发一个信号,两个从机收到启动信号后,同时转动,可以达到同步的效果。
作者: xuzhou201206    时间: 2020-3-25 00:16
发送完圈数后,用一个启动信号,来同时触发两个从机开始转动。
作者: 上善若水001    时间: 2020-3-25 10:19
lovexulu 发表于 2020-3-24 23:15
你这个if应该可以的,在发送完数据后应该复位执行完毕的标志。

感谢您回复了!
作者: TTQ001    时间: 2020-3-25 10:21
CAN总线上的通信基于消息广播。  两个从节点广播就绪消息,主节点接收此消息,并开始向两个从节点广播同一消息,然后两个从节点将请求的具有指定ID的数据帧广播回总线。
作者: 上善若水001    时间: 2020-3-25 10:27
xuzhou201206 发表于 2020-3-25 00:14
CAN 总线是广播的,给主机给两个从机发送完指定圈数之后,再发送一个触发信号(或者叫启动信号),只要发一 ...

从机把上一次的数据执行完了给主机个信号,表示从机执行完了,主机接收到这个信号 才发送下一组数据的,但是两个从机并不是同时给主机信号的,所以我用那个 i f 语句的,您说的这个 广播启动信号,我这边是加了的
作者: 上善若水001    时间: 2020-3-25 10:31
xuzhou201206 发表于 2020-3-25 00:16
发送完圈数后,用一个启动信号,来同时触发两个从机开始转动。

主机发送 启动信号的前提是 两个从机都把各自的数据执行完了的,如果只有 从机1 执行完了他的数据返回了 执行完信号,而 从机2 并没有返回这个 执行完 信号,这该怎么办呢?用while 等待吗?
作者: 上善若水001    时间: 2020-3-25 10:32
TTQ001 发表于 2020-3-25 10:21
CAN总线上的通信基于消息广播。  两个从节点广播就绪消息,主节点接收此消息,并开始向两个从节点广播同一 ...

主机发送 启动信号的前提是 两个从机都把各自的数据执行完了的,如果只有 从机1 执行完了他的数据返回了 执行完信号,而 从机2 并没有返回这个 执行完 信号,这该怎么办呢?用while 等待吗?
作者: 上善若水001    时间: 2020-3-25 10:35
xuzhou201206 发表于 2020-3-25 00:16
发送完圈数后,用一个启动信号,来同时触发两个从机开始转动。

主机发送 启动信号的前提是 两个从机都把各自的数据执行完了的,如果只有 从机1 执行完了他的数据返回了 执行完信号,而 从机2 并没有返回这个 执行完 信号,这该怎么办呢?用while 等待吗?
作者: sweets1998    时间: 2020-4-22 19:05
把你的成果分享给大家好么?也好让大家学习讨论




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1