找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2390|回复: 10
打印 上一主题 下一主题
收起左侧

关于CAN总线请教大家个问题

[复制链接]
跳转到指定楼层
楼主
ID:228467 发表于 2020-3-24 19:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
       我现在使用1个主机给2个从机发送数据,数据是电机的转动圈数,每个从机都控制一个直流电机,从机的电机执行完转动圈数后给主机一个信号,表示从机执行完这组数据了,主机接受到这个信号后再给从机发送下一组数据让两个电机同时运动,2个电机的圈数是一 一对应的。要求是必须每个电机都执行完上一组的数据后,主机才能 同时 给2个从机发送下一组数据,现在的问题是 每个电机的转动圈数是不同的也就是说 每个从机给主机的这个 执行完 信号并不是同时到达主机的,怎么才能让主机给2个从机同时发送信号呢?
    我自己写了个程序但是没有实现我想要的功能
       i f ( 从机1执行完信号 && 从机2执行完信号 )
         {
             给从机1发送数据;
             给从机2发送数据;
         }



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

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

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:687694 发表于 2020-3-24 23:15 | 只看该作者
你这个if应该可以的,在发送完数据后应该复位执行完毕的标志。
回复

使用道具 举报

板凳
ID:715178 发表于 2020-3-25 00:14 | 只看该作者
CAN 总线是广播的,给主机给两个从机发送完指定圈数之后,再发送一个触发信号(或者叫启动信号),只要发一个信号,两个从机收到启动信号后,同时转动,可以达到同步的效果。
回复

使用道具 举报

地板
ID:715178 发表于 2020-3-25 00:16 | 只看该作者
发送完圈数后,用一个启动信号,来同时触发两个从机开始转动。
回复

使用道具 举报

5#
ID:228467 发表于 2020-3-25 10:19 | 只看该作者
lovexulu 发表于 2020-3-24 23:15
你这个if应该可以的,在发送完数据后应该复位执行完毕的标志。

感谢您回复了!
回复

使用道具 举报

6#
ID:420836 发表于 2020-3-25 10:21 | 只看该作者
CAN总线上的通信基于消息广播。  两个从节点广播就绪消息,主节点接收此消息,并开始向两个从节点广播同一消息,然后两个从节点将请求的具有指定ID的数据帧广播回总线。
回复

使用道具 举报

7#
ID:228467 发表于 2020-3-25 10:27 | 只看该作者
xuzhou201206 发表于 2020-3-25 00:14
CAN 总线是广播的,给主机给两个从机发送完指定圈数之后,再发送一个触发信号(或者叫启动信号),只要发一 ...

从机把上一次的数据执行完了给主机个信号,表示从机执行完了,主机接收到这个信号 才发送下一组数据的,但是两个从机并不是同时给主机信号的,所以我用那个 i f 语句的,您说的这个 广播启动信号,我这边是加了的
回复

使用道具 举报

8#
ID:228467 发表于 2020-3-25 10:31 | 只看该作者
xuzhou201206 发表于 2020-3-25 00:16
发送完圈数后,用一个启动信号,来同时触发两个从机开始转动。

主机发送 启动信号的前提是 两个从机都把各自的数据执行完了的,如果只有 从机1 执行完了他的数据返回了 执行完信号,而 从机2 并没有返回这个 执行完 信号,这该怎么办呢?用while 等待吗?
回复

使用道具 举报

9#
ID:228467 发表于 2020-3-25 10:32 | 只看该作者
TTQ001 发表于 2020-3-25 10:21
CAN总线上的通信基于消息广播。  两个从节点广播就绪消息,主节点接收此消息,并开始向两个从节点广播同一 ...

主机发送 启动信号的前提是 两个从机都把各自的数据执行完了的,如果只有 从机1 执行完了他的数据返回了 执行完信号,而 从机2 并没有返回这个 执行完 信号,这该怎么办呢?用while 等待吗?
回复

使用道具 举报

10#
ID:228467 发表于 2020-3-25 10:35 | 只看该作者
xuzhou201206 发表于 2020-3-25 00:16
发送完圈数后,用一个启动信号,来同时触发两个从机开始转动。

主机发送 启动信号的前提是 两个从机都把各自的数据执行完了的,如果只有 从机1 执行完了他的数据返回了 执行完信号,而 从机2 并没有返回这个 执行完 信号,这该怎么办呢?用while 等待吗?
回复

使用道具 举报

11#
ID:680763 发表于 2020-4-22 19:05 | 只看该作者
把你的成果分享给大家好么?也好让大家学习讨论
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表