zoukankan      html  css  js  c++  java
  • 台达PLC开发笔记(二):台达PLC设置主机通讯参数为RTU并成功通讯

    前言

      前面使用485和网口与台达成功建立通讯,但是485是使用用的ASICC模式,多数情况下是使用RTU模式提升通讯效率。

     

    下载安装台达ISPSoft软件

      官网下载地址:https://downloadcenter.delta-china.com.cn/DownloadCenter?v=1&q=ISP&sort_expr=cdate&sort_dir=DESC
      配置需要通过网线,使用HWCONFIG软件进行配置:
      在这里插入图片描述
      (先安装前面的commgr通讯管理软件)
      下载后,如下图:
      在这里插入图片描述
      安装后,如下图:
      在这里插入图片描述

     

    配置之前测试

    使用485测试ASCII通讯方式

      在这里插入图片描述

    使用485测试RTU通讯方式

      
      (端口默认是ASCII方式,RTU方式会返回一个固定长度固定的数据,应该是错误检测)

    使用ISPSoft软件配置台达PLC的485由ASCII转为RTU

    步骤一:打开软件

       在这里插入图片描述

    步骤二:创建工程

      在这里插入图片描述
      在这里插入图片描述

    步骤三:打开网络配置HWCONFIG

      在这里插入图片描述
      在这里插入图片描述

    步骤四:配置COM1口等参数(ASCII改为RTU)

      在这里插入图片描述
      (若没有之前使用网线连接,会出现提示,之前是需要先网线连接到PLC的)
      在这里插入图片描述
      正在下载,提示处理中,如下图:
      在这里插入图片描述
      下载超时,是需要使用网口连接的。

    步骤五:使用网线方式连接PLC

      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    步骤六:再次下载新的配置(原先为485现在为网线IP)

      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    步骤七:下载成功,使用485RTU进行测试

      (为hex了,不是acsii了,成功)
      在这里插入图片描述

     

    入坑

    入坑一:使用Qt的modbus485读取失败

    问题

      Qt的modbus全方面测试读取M、D、Y、X对应的寄存器附近几个值都为0。

    解决

      直接使用modbus rtu测试

      是没有问题的,但是Qt返回值依然是:

      其他部分在此尝试过了,总共四种类型,相关的M、D、X、Y变量都设置过类似的,全部读取成功,但是值都为0与实际不符,好像架空了一样。

    论证(2021年04月25日补充)

      测试单个线圈,使用libmodbus可以读出来
      在这里插入图片描述
      测试单个线圈,使用QModbus还是无法读出
       在这里插入图片描述
      测试读取寄存器,使用libmodbus可以读出
      在这里插入图片描述
      测试读取寄存器,使用QModbus可以读出
      在这里插入图片描述

    结论

      Qt有些东西确实鸡肋,没必要死磕。

  • 相关阅读:
    01-SCOTT-SQL建表语句
    面试小题
    Swagger2使用API
    Elasticsearch单机安装_集群搭建_索引基本操作_Head插件安装与基本操作_ik分词器配置_logstash实现数据同步_教程
    45个非常有用的 Oracle 查询语句小结
    oracle获取定时时间段
    彻底理解webservice SOAP WSDL
    MySQL 1045登录失败
    quartz定时任务时间设置
    map 遍历的四种方式
  • 原文地址:https://www.cnblogs.com/qq21497936/p/14973632.html
Copyright © 2011-2022 走看看