EL6021简介

EL6021是倍福推出的RS422/485串口通信模块,一般用作Modbus RTU通信的主站,EL6021是单口RS422/485模块,EL6022是双口(DB9)RS422/485模块,且两个口可独立设置,互不影响。
EL6021支持2400…115200 kbuds的标准波特率,默认波特率为9600,8N1配置。
RS422支持全双工的通信模式,其发送数据线采用差分线对TxD+和TxD-,接收数据线也采用差分线对RxD+和RxD-,这样的设计方式增强了通信的抗干扰能力。
RS485支持半双工的通信模式,不支持全双工模式,只使用一对差分线进行数据传输,一般称为A和B或者TxD和RxD,这样的设计导致设备在发送数据的时候是无法接收数据的,因为总线被占用且正在进行发送操作。
EL6021出厂默认的工作模式是RS422。

EL6021针脚定义

EL6021采用快接端子的形式接线,其针脚定义如下图所示。

EL6021当作RS485主站参数设置

当EL6021当作485主站使用时,需要将TXD+和RXD+短接,TXD-和RXD-短接,短接后分别接入485设备的TX+脚(A脚)和TX-脚(B脚),且要设置其COM口参数如下图所示(启用半双工通信,关闭点对点功能)

EL6021使用Modbus RTU通信例程

当使用EL6021用作Modbus RTU主站时,需要购买TF6255软件模块的授权,但是我们做测试的话,可以激活7天试用授权即可,激活授权后还需要添加Tc2_Modbus RTU库才可以进行编程

加入Tc2_ModbusRTU库,可以使用关于Modbus RTU通信的各种功能块

以modsim32软件模拟从站,modsim软件可从起官网下载: Modsim官网,假定我们的设备需要读写保持寄存器来和主站交互,那么就可以做如下设置,假定该设备有10个保持寄存器,地址从40001-40010,如下图所示

双击对应的寄存器可以更改其值范围,值范围默认0-65535(一个WORD的大小)

程序编写如下,该程序实现了读写保持寄存器和读写线圈的功能,程序中需要注意的事项均以注释的形式进行了说明,变量的声明看名字就可以知道其功能,这里不再详细说明

// 变量声明区的内容
PROGRAM MAIN
VARReadRegEdge:R_TRIG;WriteRegEdge:R_TRIG;ReadCoilEdge:R_TRIG;WriteCoilEdge:R_TRIG;ReadRegDo:BOOL;WriteRegDo:BOOL;ReadCoilDo:BOOL;WriteCoilDo:BOOL;ReadWriteFun:ModbusRtuMaster_KL6x22B;DataRead : ARRAY[1..10] OF WORD;DataWrite:ARRAY[1..10] OF WORD:=[11,12,13,14,15,16,17,18,19,20];CoilRead:ARRAY[1..2]OF BYTE;CoilWrite:ARRAY[1..2] OF BYTE:=[244,156];
END_VAR

程序区的内容

//程序区内容
ReadRegEdge(CLK:= ReadRegDo, Q=> );ReadWriteFun.ReadRegs(UnitID:= 9, //从站地址Quantity:= 4, //读取4个字,以word计MBAddr:= 1, //地址偏移量cbLength:= SIZEOF(DataRead), //存放读取值的变量的大小,以byte计,该值必须大于等于Quantity值的一半pMemoryAddr:= ADR(DataRead),   Execute:= ReadRegEdge.Q,Timeout:= T#100MS, BUSY=> , Error=> , ErrorId=> , cbRead=> );
WriteRegEdge(CLK:= WriteRegDo, Q=> );
ReadWriteFun.WriteRegs(UnitID:= 9, Quantity:= SIZEOF(DataWrite)/2, MBAddr:= 1, cbLength:= SIZEOF(DataWrite), pMemoryAddr:= ADR(DataWrite), Execute:= WriteRegEdge.Q,Timeout:= T#100MS, BUSY=> , Error=> , ErrorId=> , cbRead=> );
ReadCoilEdge(CLK:= ReadCoilDo, Q=> );
ReadWriteFun.ReadCoils(UnitID:= 9,//从站地址 Quantity:= 16, //要写入16个bit,以bit计MBAddr:= 0, //地址偏移量cbLength:= 2, //存放待写入变量的大小,以byte计,该值必须大于或等于Quantity的值(相同单位时)pMemoryAddr:= ADR(CoilRead), Execute:= ReadCoilEdge.Q, Timeout:= T#100MS, BUSY=> , Error=> , ErrorId=> , cbRead=> );
WriteCoilEdge(CLK:= WriteCoilDo, Q=> );
ReadWriteFun.WriteMultipleCoils(UnitID:= 9, Quantity:= 16, MBAddr:= 0, cbLength:= 16, pMemoryAddr:= ADR(CoilWrite), Execute:= WriteCoilEdge.Q, Timeout:= T#100MS, BUSY=> , Error=> , ErrorId=> , cbRead=> );

假定我们需要读取4个保持寄存器的值,且从地址偏移量为1的地址开始读取,如以上程序中所写的那样,检验一下读取的效果。
在Modsim32软件中,做如下设置,起始地址为40001,设置10个保持寄存器(length=10),从站的站地址为9,类型为03:HOLDING REGISTER,各个寄存器的数值设置如图所示。
那么我们读取的应该就是40002-40005地址中的值

当我们运行程序,给ReadRegDo一个上升沿触发读取保持寄存器的操作,此时可以观察到,DataRead数值中已经读取上来4个值,该值正是我们在Modsim32中40002-40005地址中存放的值

剩下的读写线圈和写保持寄存器可以自行测试,以上程序已打包,可供下载测试,注意,程序导入后,需要重新关联变量,因为测试平台不同,所用的模块也有类型和数量的差别,无法保证EtherCAT的拓扑结构完全一样,若不重新扫描IO和关联变量,直接激活的话会报错。
链接: EL6021 Modbus RTU demo程序

倍福EL6021使用Modbus RTU通信例程相关推荐

  1. Modbus RTU 通信应用案例

    如何打开项目归档文件 例程中的TIA博途项目文件与STEP 7项目文件均为归档文件,需要按如下方式打开: TIA博途项目文件 1. 打开TIA博途软件,通过软件左下方"项目视图"按 ...

  2. 西门子S7-200PLC与V20变频器MODBUS RTU通信教程

    西门子S7-200PLC与V20变频器MODBUS RTU通信教程 S7-200与V20的MODBUS RTU通讯 1.本教程的系统配置: (1)安装Step7 Micro/Win software和 ...

  3. Modbus RTU 通信工具设计

    Modbus 是一个工业上常用的通讯协议.一种通讯约定. ModBus 协议是应用层报文传输协议(OSI 模型第7层),它定义了一个与通信层无关的协议数据单元(PDU),即PDU=功能码+数据域. M ...

  4. java通信rs485_基于VB6.0与485仪表的Modbus RTU通信(含代码)

    JZGKCHINA工控技术分享平台 尊重原创 勿抄袭 勿私放其他平台 前言 在写这边文章时,很纠结,到底要不要写呢?原因主要有3个:第一.VB6.0这么古老的语言现在还有人用吗?现在不是很流行C#.P ...

  5. 欧姆龙 PLC CP1E Modbus RTU通信程序

    欧姆龙 PLC CP1E Modbus RTU通信程序,一个多站轮询通信,一个单站通信,稍微更改下Modbus通信地址可以跟其他Modbus设备进行通信!id=635998335748&

  6. S7-1200 PLC与PAC3200电能表的Modbus RTU通信(详细步骤)

    S7-1200 PLC与PAC3200电能表的Modbus RTU通信 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到网站. 本文将主要介绍如何使用Mod ...

  7. 丰炜vb0和两台变频器的modbus rtu通信程序

    丰炜vb0和两台变频器的modbus rtu通信程序 史上最好用的plc modbus rtu通讯程序, 通讯效果如视频,控制,反馈无延迟,真心好用,别的变频器支持modbus rtu一样可以使用. ...

  8. 丰炜vb0和两台变频器的modbus rtu通信程序 史上最好用的plc modbus rtu通讯程序, 通讯效果如视频,控制,反馈无延迟

    丰炜vb0和两台变频器的modbus rtu通信程序 史上最好用的plc modbus rtu通讯程序, 通讯效果如视频,控制,反馈无延迟,真心好用,别的变频器支持modbus rtu一样可以使用id ...

  9. 欧姆龙 PLC CP1E 与电子称重仪表“柯力XK3101”Modbus RTU通信

    欧姆龙 PLC CP1E 与电子称重仪表"柯力XK3101"Modbus RTU通信,稍微更改下Modbus通信地址可以跟其他Modbus设备进行通信! YID:554563599 ...

最新文章

  1. linux常用的命令行
  2. 检查Java中的字符串是空还是空[重复]
  3. 【C 语言】结构体 ( 结构体变量内存操作 | 通过 “ . “ 操作符操作结构体内存空间 | 通过 “ -> “ 操作符操作结构体内存空间 )
  4. 你需要了解的纯原生JS实现带有功能的前端购物车
  5. h5策划书_一个好的H5营销活动设计要如何进行策划
  6. nit计算机应用基础是考试大纲,全国计算机应用技术证书考试(NIT)考试大纲(计算机应用基础Windows XP)...
  7. vscode pyqt 环境搭建
  8. Linux 内核C -- 第02课:驱动中的指定初始化
  9. 3dsmax软件和maya软件各自的优劣势是什么?
  10. 吴恩达深度学习课后作业-目标检测的环境配置
  11. Play框架文件上传
  12. 三维地图前端arcgis_WebGIS简单实现一个区域炫酷的3D立体地图效果
  13. 树莓派+android+盒子,最强电视盒子诞生记-树莓派4电视盒子
  14. Day07 Scanner 类、 Random 类、 ArrayList 类 6.20
  15. 设计模式之设配器模式、外观模式
  16. Excel 2010 VBA 入门 129 利用窗体向工作表中录入数据
  17. C语言编程>第三周 ⑧ 打印出杨辉三角形(要求打印出10行)
  18. EM算法原理和python简单实现
  19. VLAN 虚拟局域网
  20. python二维数组随机取行,组成新的数组

热门文章

  1. Java服务器验证登录系统
  2. Linux ffmpeg 一键安装
  3. 操作系统---fork函数解析与例题详解
  4. 日常生活中使用的台式计算机,台式电脑显示没有音频设备怎么办
  5. 如何自学directx
  6. python 出气象雷达图
  7. Python2.7获取QQ空间部分好友
  8. html5地区级联选择,【JS】vue+vant移动端地区级联选择组件
  9. 【线性代数】第六章——二次型
  10. 安谋中国(Arm China)校招内推