三菱FX

您所在的位置:网站首页 三菱驱动器通讯异常 三菱FX

三菱FX

2023-12-18 04:21| 来源: 网络整理| 查看: 265

程序如下

=========================通信程序解析==============================

(*ModbusTcp通信中用到的指令*)

(*

// SP_SOCOPEN

// SP_SOCCLOSE

// SP_CPRTCL

*)

(*

5u做为 ModbusTcp_主站 

通信数据包的设置

工具--》通信协议支持功能--》模块类型  CPU(以太网)--》

添加协议(手动添加)--》通信协议库  选择制造商 型号 (ModbusTcp) 协议句(对应Modbus功能码)

也可直接添加下面这个数据包

D:\mitsubishi\通信DEMO\三菱Q内置以太网socket通信的程序\ModbusTcpClient数据包设置.tpx

需要单独将数据包下载到PLC中

数据包的作用就是将报文协议中的信息存入到程序员分配的寄存器中(内部进行转化)比如D1000……,

然后可对分配的寄存器进行读写操作

*)

//执行工程工具中登录的通信协议。

(*

SP.ECPRTCL "U0" K1 K1 D1400 M200;

SP_CPRTCL( ?BOOL_EN? , 'U0' , ?ANY16_ARRAY_s? , ?ANY16_U_n1? , ?ANY16_U_n2? 

?ANYBIT_ARRAY_d? );

*)

(*MOV K1 D1402

SP.ECPRTCL "U0" K1 K1 D1400 M200;*这里是和通信数据包中的设置参数对应的

控制数据 D1400  D14002   (D14002    D14003  D14004 D14005 D14006 D14007 D14008 D14009  这8个寄存器对应8外协议号)

通信状态M200 M201  M200 通信完成  M200通信异常

*) 

(* 数据包设置说明

SP.ECPRTCL "U0" K1 K1 D1400 M200;

D1000 Transaction ID 传输标识  就像表格中的序号,便于区分,可在程序中对其加1,每次完成后对传输标识加1,这样就知道通信了几次了

D1001  单元标识符  

D1002 寄存器起始地址 

D1003 读取数量 (在这里是4个线圈)

*)

(* 

D1499是干什么的?

MOV H0 D1499

(*Request发送的数据*)

MOV D1499 D1000  //D1000  Transaction ID传送标识符   

MOV H1 D1001 //D1001  Module ID 单元标识符(从站编号)

(假设有5个从站,从站编号为1号从站2号从站3号从站4号从站当Protocol ID=1时表示指定1号从站与主站通信)

MOV H0 D1002  //Head input number  (首个输入的地址)

MOV H4 D1003   //Read Points

MOV K1 D1402  //调用第1个协议号

SP.ECPRTCL "U0" K1 K1 D1400 M200;*这里是和通信数据包中的设置参数对应的

控制数据 D1400  D14002   (D14002    D14003  D14004 D14005 D14006 D14007 D14008 D14009  这8个寄存器对应8个协议号

MOV D1010 K1Y0

D1009 数据长度  D1010 数据存储区 将读到的数据存到这里

*)

(*

主站发送的报文

0644 0000 0006 0102 00 00 00 04

传送标识符0644 

0000  协议标识符  0000 表示MODBUS TCP协议

0006 数据长度6个字节(0102 00 00 00 04  占用6个字节的存储空间)

01  单元标识符(从站设备地址)

02  功能码为02  读离散量输入

00 00  起始地址

00 04  寄存器数量(离散量个数)

*)

(* 

报文分析

https://blog.csdn.net/weixin_39608394/article/details/110456624

主机请求消息

07 78 00 00 00 06 03 03 00 00 00 14

一 二  三四    五六      七 八       九十      十一 十二

****************************

1,2事务处理标识(传送标识符)

2字节

07 78可以理解为报文的序列号,一般每次通信之后就要加1以区别不同的通信数据报文。

************************************************************************************

3,4协议标识符

2字节

00 00表示ModbusTCP协议。

****************************

5,6长度

2字节

00 06表示接下来的数据长度,单位为字节。

****************************

7单元标识符

1字节

03可以理解为Slave设备地址。

****************************

8功能码

1字节

03 功能码,读保持寄存器

****************************

9,10起始地址

2字节

00 00 起始地址}

****************************

11,12寄存器数量

2字节

00 14 读取寄存器数量}

======================================================================

从机回复消息

07 78 00 00 00 2B 03 03 28 00 01 00 02 00 03 00 04 00 05 00 06 00 07 00 08 00 09 00 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

事务处理标识

2字节

07 78可以理解为报文的序列号,一般每次通信之后就要加1以区别不同的通信数据报文。

协议标识符

2字节

00 00表示ModbusTCP协议。

长度

2字节

00 2B表示接下来的数据长度,单位为字节。

单元标识符

1字节

03可以理解为Slave设备地址。

功能码

1字节

03 功能码,读保持寄存器

起始地址

1字节

28 回复的数据大小

寄存器数据

xxx字节

读取的寄存器数据

*)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3