回复:我第二次玩MODBUS

芳季

西门子1847工业学习平台

  • 帖子

    15507
  • 精华

    101
  • 被关注

    960

论坛等级:至圣

注册时间:2007-08-03

钻石 钻石 如何晋级?

发布于 2013-01-13 23:39:04

1楼

程序说起来任务也不是多。写两个点和几个D。点信号是RUN,和自动运行。D是目的位置,最高速度,加速时间,减速时间(详细清单还要多着)。各占一个D。通讯的话分两次完成。一次是写连续的4个点。一次是写连续的4个D。
我是用两个MSG通过切换来完成两种发送的。准确抓住写数据时基,切换时基。当目前的这个msg指令出现Done位ON的时候,立即切换指令或者切换数据,本次扫描内驱动下一个msg的EN位和first位。然后使得两个MSG不会同时运行而又不会产生通讯空闲。
因为我知道,实用上肯定不仅仅那几个通讯的。报警位,状态位,当前值,设定值,参数等等。读一个驱动器的必要信息的话都要读两次以上。可以连续的就连续读,那怕中间隔开了几个没需求的值,效率总比一个一个读搞。除了读,还要写。写的话也至少要写两次了。加起来一个驱动器要通讯至少4次。而且能做通讯的驱动器我计划要在3个以上的。否则没有优势了。这样的话一轮通讯下来十几个请求和答复。如果每个MSG切换之间都留有空隙的话,那么这轮通讯的周期相当可观。
我对照那个不太行的程序,他的切换方式是用计时器切换的。一个msg时间到了,轮到下一个。这样的话,你分配的时间肯定要比正常通讯一次的时间要长。然而每次发收都会白白浪费很多重复发收的过程或者是空闲过程。好的话发一次就够了。这个我觉得要避免的。
上述不知方向对否,反正,仅仅是把自己第二次使用的问题点要点描述一下。
欢迎随时拍砖。
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33257条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。