青益

平凡心做平凡事

  • 121
  • 文章数
  • 5
  • 分类数
  • 292
  • 评论数

平凡心做平凡事

青益

  • 121
  • 文章数
  • 5
  • 分类数
  • 292
  • 评论数
2024/03/20

「  记录一次西门子modbus(rs485)与夹爪通讯问题解决记录  」

组态

PLC:1215C DC/DC/DC | 通讯模块CM1421 (rs422/rs485) | 大寰机器人夹爪(型号忘了)

实现目的

使用modbus通讯使夹爪初始化(第一步,后续基本基于这条)

我的程序

程序写得不够标准,但能用,只是简单示意:
1
2

以上就是我主要的程序块,但触发写得不够好,因为只是简单调试,没有考虑使用;

注意点和遇到的问题

注意点

  • 关于创建DB块:
    在创建模块的时候,需要注意DB数据中status为word数据,包括data_ptr;而且命名规则应以数据块意义命名再写该下应有数据,并且类型为struct
    3
  • 关于MB_MASTER
    这里主要遇到问题是区分读取和写入而切换mode状态,在这里应该参考西门子F1说明书中表格:
    4
    在本次编写中主要遇到问题忘了将mode切换0于1,而思考半天为啥不能修改初始化值,而在切换1之后才可以;因为我们本次主要用到的modbus功能地址是03读取和06写入,这两个的地址范围都在40001-49999和400001-465535,我们要根据自己所使用从站(我这里是夹爪)来计算地址为多少,在这里夹爪的初始化地址为十进制的256,如果为十六进制则需要换成十进制,我们这里需要将它与40001相加,得到modbus能识别到的地址40257,如果从站地址过于大可以与400001相加

    遇到的报错(基本来自MB_MASTER)

    我主要读取status状态值,我遇到的报错如下
    5
    8180,在这里8180提示的情况下,如果你确定modbus初始化的从站地址269是否为cm1241地址,如果是,请你检查组态是否出现问题,或重新删除cm1241的情况下重新将其组态,即可正常解决问题
    818B,这个提示主要是告知你data_len的字节大小不正确
    818C,这个主要是DB块的问题,在新版博图上需要在其DB块属性中关闭块优化,旧版博图则需要在创建DB时,将其兼容xx打勾
    话外:如果状态长期busy,可能是你这个俩指令块的触发方式不是上升沿的问题,具体问题具体再分析,只是简单提一下

    后言

    如果有不对的地方请在评论区指正

comments

    青益

    回复

    我已经基本写完了,我要用的程序,但还是不能太能理解地址这方面的东西

    2024年03月22日 10:51