与三菱Q系列PLC通讯(tcp-ip)协议

2024-05-05 20:58

本文主要是介绍与三菱Q系列PLC通讯(tcp-ip)协议,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

举例子说明读写方法:
      1.读D100开始的连续的20个数据块,也就是读D100~D119的数据;
电脑读命令:  50 00 00 FF FF 03 00 0C 00 10 00 01 04 00 00 64 00 00 A8 14 00 (23:19:46:937)
PLC反馈:  D0 00 00 FF FF 03 00 2A 00 00 00 86 F1 00 00 C9 01 00 00 D6 02 00 00 68 02 00 00 2E 02 00 00 00 00 00 00 C3 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (23:19:46:937)


下面解析一下:
电脑读命令: 50 00(命令)  :表示发起指令,固定50 00;
         00(网路编号) :上位访问下位,固定00;
         FF(PLC编号) : 上位访问下位,固定FF;
         FF 03(请求目标模块IO编号) : 值要从小到大看,也就是反过来看,三菱所有的协值都是这样,所以这里是03FF,十进制是1023; 也是固定的;
         00(请求目标模块站编号) : 上位访问下位,固定00;
         0C 00 (应答数据物理长度): 也要反过来,值是000C,也就是12;表示后面的报文内容的长度是12(手工数一下,后面报文长度真的是12)
         10 00 (cpu监视定时器)  : 表示等待PLC响应的timeout时间;这里 值是0010,十进制是16 ;相当与最大等待时间250ms*16=4秒;实际上PLC一般2,3个毫秒内就响应了;
         01 04 (命令)  :   值是0401(所有值都要反过来看,再说就啰嗦了,后面不说了);表示批量读取;如果是1401就是随机读取;
         00 00 (子命令) : 值是0表示按字读取(1个字=16位),如果值是1就按位读取;
         64 00 00(首地址):地址因为跨度比较大,所以用了3个字节;这里的值是000064,十进制就是100
         A8 (软元件)         : 表示读取PLC寄存器的类型:  这里的A8表示D点;其他常见的有: 90-M点;9C-X点;9D-Y点;B0-ZR外部存储卡
         14 00(读取长度)  :值是0014,十进制就是20;


PLC反馈: D0 00 (响应) :表示反馈信息,固定D0 00;
               00  (网络编号 ): 与上同
               FF  (PLC编号) : 与上同
               FF 03 (请求目标模块IO编号) : 与上同
              00 (请求目标模块站编号): 与上同
              2A 00 (应答数据物理长度):值是002A; 十进制是 42;也就是说后面的:结束代码(2个字节)+值=42;所以值是40个字节;2个字节=1个字;所以值是20个字;
              00 00(结束代码) :可以理解成异常代码,如果正常的话,就是0000
               86 F1 00 00 C9 01 00 00 D6 02 00 00 68 02 00 00 2E 02 00 00 00 00 00 00 C3 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (反馈的值);这里正好40个字节;
               再啰嗦一下,值要反过来看,所以地址D100=F186;D101=0000,D102=01C9......


    2.写D100这一个点的值为13,D101这个点的值为14,D102这个点的值为15;


        电脑写命令: 50 00 00 FF FF 03 00 12 00 10 00 01 14 00 00 64 00 00 A8 03 00 0C 00 0D 00 0E 00 (00:14:55:188)
        PLC反馈: D0 00 00 FF FF 03 00 02 00 00 00 (00:14:55:188)


下面解析一下:
     电脑写命令:
                50 00 (命令)  :意义和读一样
                00(网络编号 ) :意义和读一样
                FF(PLC编号)    :意义和读一样
                FF 03 (请求目标模块IO编号) :意义和读一样
                00(请求目标模块站编号) :意义和读一样
               12 00(请求数据物理长度) :
                           值是0012,也就是十进制18;表示后面的报文内容的长度是20;
                        也就是后面的:cpu监视定时器+命令+子命令+首地址+软元件+长度+值=18;前面有12个字节;所以值是6个字节;也就是3个字;
               10 00(cpu监视定时器):同上
               01 14(命令):跟读的差别是:读是0104,写是0114 ;就是04和14的差别;
              0000(子命令):值是0表示按字读写入1个字=16位),如果值是1就按位写入;
              640000(首地址) :意义和读一样,10进制100;表示从D100这个首地址写入;
              A8(软元件)  :意义和读一样  
              0300(长度): 值是0003 表示连续写入3个长度;
              0C00 0D00  0E00(写入的值): D100=13 ,D101=14,D102=15;



    PLC反馈(所有正常的写入,反馈的信息都固定为这个):
          D0 00(响应) :表示反馈信息,与读取反馈一样,固定D0 00;
          00(网络编号 ):同上
          FF(PLC编号)  :同上
          FF 03 (请求目标模块IO编号) :同上
          00(请求目标模块站编号) :同上
          02 00(应答数据物理长度): 就是后面的 00 00 正好两个字节,所以这里值=2;
          00 00(结束代码)  :可以理解成异常代码,如果正常的话,就是0000

 

链接:http://www.itpub.net/thread-2051324-1-1.html

这篇关于与三菱Q系列PLC通讯(tcp-ip)协议的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/962667

相关文章

GO语言实现串口简单通讯

《GO语言实现串口简单通讯》本文分享了使用Go语言进行串口通讯的实践过程,详细介绍了串口配置、数据发送与接收的代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录背景串口通讯代码代码块分解解析完整代码运行结果背景最近再学习 go 语言,在某宝用5块钱买了个

Apache服务器IP自动跳转域名的问题及解决方案

《Apache服务器IP自动跳转域名的问题及解决方案》本教程将详细介绍如何通过Apache虚拟主机配置实现这一功能,并解决常见问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录​​问题背景​​解决方案​​方法 1:修改 httpd-vhosts.conf(推荐)​​步骤

Linux(centos7)虚拟机没有IP问题及解决方案

《Linux(centos7)虚拟机没有IP问题及解决方案》文章介绍了在CentOS7中配置虚拟机网络并使用Xshell连接虚拟机的步骤,首先,检查并配置网卡ens33的ONBOOT属性为yes,然后... 目录输入查看ZFhrxIP命令:ip addr查看,没有虚拟机IP修改ens33配置文件重启网络Xh

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全

Java对接MQTT协议的完整实现示例代码

《Java对接MQTT协议的完整实现示例代码》MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛,:本文主要介绍Ja... 目录前言前置依赖1. MQTT配置类代码解析1.1 MQTT客户端工厂1.2 MQTT消息订阅适配器1.

Linux中的自定义协议+序列反序列化用法

《Linux中的自定义协议+序列反序列化用法》文章探讨网络程序在应用层的实现,涉及TCP协议的数据传输机制、结构化数据的序列化与反序列化方法,以及通过JSON和自定义协议构建网络计算器的思路,强调分层... 目录一,再次理解协议二,序列化和反序列化三,实现网络计算器3.1 日志文件3.2Socket.hpp

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

Linux之UDP和TCP报头管理方式

《Linux之UDP和TCP报头管理方式》文章系统讲解了传输层协议UDP与TCP的核心区别:UDP无连接、不可靠,适合实时传输(如视频),通过端口号标识应用;TCP有连接、可靠,通过确认应答、序号、窗... 目录一、关于端口号1.1 端口号的理解1.2 端口号范围的划分1.3 认识知名端口号1.4 一个进程