求助:MODBUS通信协议 点击:944 | 回复:8



小雄3115

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:17帖 | 27回
  • 年度积分:0
  • 历史总积分:85
  • 注册:2006年3月04日
发表于:2006-04-26 08:23:00
楼主
接上一张帖子:我用DVP-14ES作从机,通过COM2口和上位机通讯,协议为MODBUS ASC11方式,我试了一下,如果不小心把寄存器地址输错了,修改了我不想修改的寄存器,我想请教的是:在MODBUS协议下,在PLC程序中能不能指定一部分装置可以被MODBUS上位机修改,其余的可以读取,用什么方法可以实现。



如火

  • 精华:172帖
  • 求助:0帖
  • 帖子:803帖 | 5249回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2006-04-26 09:20:00
1楼
您可以在程序中对modbus寄存器循环设置您需要保持的数据,这样上位机即不可修改。

小雄3115

  • 精华:0帖
  • 求助:0帖
  • 帖子:17帖 | 27回
  • 年度积分:0
  • 历史总积分:85
  • 注册:2006年3月04日
发表于:2006-04-26 09:30:00
2楼
因为MODBUS协议中可以修改的寄存器很多啊,手册中列出装置地址的装置大都可以被修改,这样一来,我如果要在程序中循环设置的话,编写的程序不是很大了吗?

如火

  • 精华:172帖
  • 求助:0帖
  • 帖子:803帖 | 5249回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2006-04-26 09:51:00
3楼
如果您无法限制上位机程序开发的话,只能这样了。

lesing

  • 精华:1帖
  • 求助:0帖
  • 帖子:76帖 | 3076回
  • 年度积分:0
  • 历史总积分:5728
  • 注册:2005年4月13日
发表于:2006-04-26 09:53:00
4楼
那你可以通過Fmov指令對不允許修改的寄存器一直寫入0就可以了
例如Fmov 0 d0  k200,則D0~D199一直為0

小雄3115

  • 精华:0帖
  • 求助:0帖
  • 帖子:17帖 | 27回
  • 年度积分:0
  • 历史总积分:85
  • 注册:2006年3月04日
发表于:2006-04-26 10:02:00
5楼
另外中间继电器M有什么方法可以得到保护,如果也是这样做的话,那程序编起来就有些困难了。

lesing

  • 精华:1帖
  • 求助:0帖
  • 帖子:76帖 | 3076回
  • 年度积分:0
  • 历史总积分:5728
  • 注册:2005年4月13日
发表于:2006-04-26 10:37:00
6楼
中间继电器也完全可以用这样的方法。其实也不是很困难了,其实你实际操作中也不用把所有的中间继电器全部屏蔽掉吧,比如你对M3作写入动作,那你应该只要将M3周边的M装置屏蔽掉就可以防止误操作了。如果你想对M0写入1,那即使你对Modbus不是很熟悉,也不至于将1写入到M1000吧,那样的话,你就需要花些时间看看Modbus协议了。
如果你要对M3写入数据,为了防止误动作,不允许对M0、M1、M4~M15写入数据,那么你可以MOV  HFFF7 K4M0即可

小雄3115

  • 精华:0帖
  • 求助:0帖
  • 帖子:17帖 | 27回
  • 年度积分:0
  • 历史总积分:85
  • 注册:2006年3月04日
发表于:2006-04-26 12:45:00
7楼
用MOV  HFFF7 K4M0这句的话,是不是每次都会对M3写入K0啊,这样外部通信还能对M3进行写入吗?

lesing

  • 精华:1帖
  • 求助:0帖
  • 帖子:76帖 | 3076回
  • 年度积分:0
  • 历史总积分:5728
  • 注册:2005年4月13日
发表于:2006-04-26 13:44:00
8楼
对,忘记这一点了,那只能多写几个指令了

热门招聘
相关主题

官方公众号

智造工程师