TwinCAT3串口通讯EL6021模块使用-和串口调试助手自由协议通讯

news2024/11/20 7:10:27

目录

一、简介

二、环境介绍

三、接线连接

 四、创建TwinCAT3程序工程

1、IO扫描和参数设置

2、创建PLC程序

 (1)库文件添加

 (2)创建任务和程序

 (3)变量关联

 (4)重新激活工程、运行

3、运行和测试

(1)运行PLC程序

 (2)串口调试助手和PLC程序测试

 五、测试问题

六、程序工程下载链接


一、简介

        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。

二、环境介绍

       1、PLC端:CX5130-0125、EL6021,Twincat3

        2、PC端:USB转232、232/485转换器,win10系统(USB转232驱动安装好)、串口调试助手

三、接线连接

   485模式 接线说明:

        1和2短接然后跟第三方设备485正连接

        5和6短接然后跟第三方设备485负连接

  422模式 接线说明:

        四根线分开依次连接。

      首先确保接线正确,将EL6021上面的1、2短接,5、6短接,然后将EL6021的1和5管脚连接到电脑USB转485/422口的RXD+和RXD-上面,USB转485/422的驱动必须装好,这种方式采用485的接线方式,EL6021默认的COEONLINE设置就是485的方式。

 EL6021和485的地GND,可以接也可以不接。建议都接0V。

 四、创建TwinCAT3程序工程

1、IO扫描和参数设置

      (1)配置模式下,在IO-Device进行硬件扫描。找到EL6021硬件模块。

 (2)CeE-OnLine参数设置

 (3)设置自启动初始化时候参数值

2、创建PLC程序

 (1)库文件添加

    在References中添加Tc2_SerialCom库文件

 (2)创建任务和程序

添加全局变量

VAR_GLOBAL
	(*
	 *xBuffer 的作用是,在 PLC 要发送的数据和串行通讯的硬件 Process Data 之间设置一个缓存区。
	 *比如 KL6outData22B 类型的接口,每个 PLC 周期只能发送 22 字节。假如程序需要发送的数据为 100 个,
	 *那么实际上 PLC 程序是把这些数据放到 TxBuffer 中,再由硬件分几个 PLC 周期发送出去
	*)
	TxBuffer_PC:					ComBuffer;		
	RxBuffer_PC:					ComBuffer;
	
	COMin				AT%I*		:KL6inData22B;		
	COMout				AT%Q*		:KL6outData22B;
		
	COMportControl					:SerialLineControl;
END_VAR

在Main程序中添加代码

(*
 *功能块的作用,把 TxBuffer 缓存区的数据经过 Process Data 的 ComOut 发送出去,
 *而把 ComIn 中的数据接收到 RxBuffer。引用这个功能块的程序执行周期越短,
 *数据交换的效率就越高,所以这段程序应该放在快速任务中作为 Backgroud 代码无条件执行。
*)
COMportControl(
	Mode:= SERIALLINEMODE_KL6_22B_STANDARD, 
	pComIn:= ADR(COMin), 
	pComOut:= ADR(COMout), 
	SizeComIn:= SIZEOF(COMin), 
	Error=> , 
	ErrorID=> , 
	TxBuffer:= TxBuffer_PC, 
	RxBuffer:= RxBuffer_PC );

在SerialSend程序中添加局部变量

PROGRAM SerialSend
VAR
	send1:							SendString;
	receive1:						ReceiveString;
	
	Timer1:							TON;
	
	_sendString:					STRING:='4567';
	_receive1string:				STRING;
	_recvLast:						STRING;				//保存上一个周期接收的字符

END_VAR

在SerialSend程序中添加程序

//3000ms发送一次
Timer1(IN:= NOT timer1.q, PT:=T#3000MS , Q=> , ET=> );
IF timer1.Q THEN
	SEND1(
		SendString:=_sendString ,
		TXbuffer:=TxBuffer_PC ,
		Busy=> ,
		Error=> );
END_IF

//接收
Receive1(
	Timeout:= t#100ms,
	ReceivedString:=_receive1string ,
	RXbuffer:=RxBuffer_PC , );

//保存上一个周期接收的字符
IF Receive1.Busy THEN
	_recvLast:=_receive1string;
END_IF

然后,重新编译、生成工程,没有错误、没有警告。

 (3)变量关联

EL6021中输入输出的21个IO变量分别和PLC程序中的变量关联起来

 (4)重新激活工程、运行

3、运行和测试

(1)运行PLC程序

①程序设置3000ms发送一次

②设置发送的字符串

 (2)串口调试助手和PLC程序测试

串口参数要和PLC的EL6021配置的串口参数一致。

①打开串口

②串口调试助手接收PLC发送的数据。

③串口调试助手发送数据,在PLC中观测。

 五、测试问题

1、RS485通讯,发送的数据又返回来了

解决:由于 BECKHOFF 提供 RS485 和 RS422 通讯是同一个硬件,所以当用作 RS485 通讯 时, 必须发送和接收短接在一起, 并设置参数为半双工“Half Duplex”,

如果是 EL602x, 参 数 8000: 06 置 True 即为半双工。

2、发送和接收数据都没有

解决:

①检查PLC程序配置是否正确

②PLC程序是否执行

③IO中EL6021的变量是否关联起来了,有X表示关联成功、没有X需要再次关联然后重新激活工程。

 

六、程序工程下载链接

https://download.csdn.net/download/panjinliang066333/87408302

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/191366.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

adb的一些基本操作

adb的一些基本操作 Android使用的系统一般是debian系列操作系统,所以使用adb shell连接到手机后,可以使用大部分Debian系列的命令进行相关的操作 列出所有应用:adb shell pm list packages 列出第三方(系统)应用:adb shell pm li…

1611_PC汇编语言_math例程分析

全部学习汇总: GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 这一次分析后带有注释的代码我会在笔记最后做一个完整的附加。 这一个例程,主要是为了阐述前面讲到的数学运算。但是从这些操作中,很多底层…

介绍golang限流库以及漏桶与令牌桶的实现原理

RateLimit 限流中间件 前言 为什么需要限流中间件? 在大数据量高并发访问时,经常会出现服务或接口面对大量的请求而导致数据库崩溃的情况,甚至引发连锁反映导致整个系统崩溃。或者有人恶意攻击网站,大量的无用请求出现会导致缓…

Spark JDBC采用分区读取数据库时partitionColumn, lowerBound, upperBound, numPartitions参数理解

partitionColumn是应该用于确定分区的列。 lowerBound并upperBound确定要获取的值的范围。完整数据集将使用与以下查询对应的行: SELECT * FROM table WHERE partitionColumn BETWEEN lowerBound AND upperBound numPartitions确定要创建的分区数。lowerBound和之间…

Unicode 和 UTF-8 详解

结论 Unicode 是 字符集 UTF-8 是 编码规则 字符集:为每一个字符分配唯一的ID(如 SCII 码) 编码规则:将 码位转换为字节序列的规则 背景 老规矩,我们用图文并茂的方式来讲解: ASCII 这个字符集 由于仅能…

[Android Studio] Android Studio设置杂项

🟧🟨🟩🟦🟪 Android Debug🟧🟨🟩🟦🟪 Topic 发布安卓学习过程中遇到问题解决过程,希望我的解决方案可以对小伙伴们有帮助。 📋笔记目…

【HBase高级】3. HBase批量装载——Bulk load(1)Bulk load简介与案例介绍

2. HBase批量装载——Bulk load 2.1 简介 很多时候,我们需要将外部的数据导入到HBase集群中,例如:将一些历史的数据导入到HBase做备份。我们之前已经学习了HBase的Java API,通过put方式可以将数据写入到HBase中,我们…

MyBatis(三)使用MyBatis完成CRUD(增删改查)

准备工作 1、创建module(Maven的普通Java模块):mybatis-002-crud 2、pom.xml 打包方式jar依赖:mybatis依赖mysql驱动依赖junit依赖logback依赖3、mybatis-config.xml放在类的根路径下 4、CarMapper.xml放在类的根路径下 5、lo…

redis的完整学习

Redis 1.Nosql 单机mysql缓存机制分库分表水平拆分mysql集群:本质上是数据库的读写 MyISAM:表锁,效率低Innodb:行锁 特点 解耦! 1.方便扩展 2.大数据量高性能 3.数据类型是多样型的(不需要设计数据库&#xff…

c语言 预处理

int main() {//printf("%s\n", __FILE__);//打印所在文件夹位置//printf("%d\n", __LINE__);//打印当前所在行号//printf("%s\n", __DATE__);//打印当前系统日期//printf("%s\n", __TIME__);//时间//printf("%s\n", __FUNCT…

分享155个ASP源码,总有一款适合您

ASP源码 分享155个ASP源码,总有一款适合您 下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下..., 154个ASP源码下载链接:https://pan.baidu.com/s/12oYeESSXJCd32n463LBt4w?pwd5i1n 提取码&#x…

Java线程池中的execute和submit

一、概述 execute和submit都是线程池中执行任务的方法。 execute是Executor接口中的方法 public interface Executor {void execute(Runnable command); }submit是ExecuteService接口中的方法。 public interface ExecutorService extends Executor {<T> Future<T…

vue+element模仿腾讯视频电影网站(二),增加视频播放详情页

一.前言 1. 本项目在线预览&#xff1a;点击访问 2. 作者其他博客成品汇总预览&#xff1a;点击访问 3. 接上一篇&#xff1a;《vueelement模仿腾讯视频电影网站》 暂时源码并没有提供其他获取渠道&#xff0c;私聊作者获取即可&#xff0c;或通过博客后面名片添加作者&#…

【SSM】Mybatis小技巧汇总

Mybatis技巧一&#xff1a;#{} 和 ${} 的区别使用 ${} 特例一&#xff08;排序&#xff09;使用 ${} 特例二&#xff08;表连接&#xff09;使用 ${} 特例三&#xff08;批量删除&#xff09;技巧二&#xff1a;typeAliases 别名机制别名 Alias 性质技巧三&#xff1a;mappersm…

串级PID控制原理-1

串级计算机控制系统的典型结构如图1所示&#xff0c;系统中有两个PID控制器&#xff0c;Gc2(s)称为副调节器传递函数&#xff0c;包围Gc2(s)的内环称为副回路。Gc1(s)称为主调节器传递函数&#xff0c;包围Gc1(s)的外环称为主回路。主调节器的输出控制量u1作为副回路的给定量R2…

Vuex基本概念

一、基本概念vuex&#xff1a;为了解决不关联的组件整个网站状态数据共享问题&#xff0c;专为Vue.js开发的状态管理模式。采用集中式存储管理应用的所有组件状态&#xff0c;并以相应的规则保证状态以一种可预测的方式发生变化。vuex有5个主要成员&#xff1a;state&#xff1…

DAMA数据管理知识体系指南之数据架构管理

第4章 4.1 简介 数据架构管理是定义和维护如下规范的过程&#xff1a; 提供标准的、通用的业务术语/辞典。 表达战略性的数据需求。 为满足如上需求&#xff0c;概述高层次的整合设计。 使企业战略和相关业务架构相一致。 数据架构是用于定义数据需求、指导对数据资产的整合和…

【C++】从0到1入门C++编程学习笔记 - 提高编程篇:STL常用容器(vector容器)

文章目录一、vector基本概念二、vector构造函数三、vector赋值操作四、vector容量和大小五、vector插入和删除六、vector数据存取七、vector互换容器八、vector预留空间一、vector基本概念 功能&#xff1a; vector数据结构和数组非常相似&#xff0c;也称为单端数组 vector…

Discord多账号抢白名单,如何避免账号关联被封号?

相信玩NFT项目的都不会对Discord陌生&#xff0c;现在NFT的项目都会开Discord伺服器&#xff0c;并且将内容公告在上面、在伺服器里互动&#xff0c;所以如果你想参与NFT的世界&#xff0c;学会使用Discord是一件非常重要的事情。 东哥前2天也出了关于discord如何使用、如何抢白…

很多网站、APP 前段时间一下都变灰了。 先来感受一下变灰后的效果。

很多网站、APP 前段时间一下都变灰了。 先来感受一下变灰后的效果。 这种灰色的效果怎么实现的呢&#xff1f;如何做到图片、文字、按钮都变灰的效果呢&#xff1f; 方案 1&#xff0c;换一套灰色的 UI&#xff0c;那显然成本太大了&#xff0c;用脚指头想一想就知道不太可能…