codesys 串口通讯实例_快速入门丨篇四:如何进行运动控制器与触摸屏通讯?

此前,正运动技术给大家讲了,运动控制器的“固件升级”、“ZBasic程序开发”以及“ZPLC程序开发”,今天我们来学习一下运动控制器与触摸屏通讯。 视频教程:www.zmotion.com.cn一、控制器与触摸屏的通讯简介1.控制器支持的触摸屏   只要支持MODBUS通讯协议的触摸屏都可以与正运动控制器连接使用。控制器使用MODBUS协议与触摸屏通讯时,此时需要将数据放在MODBU...
摘要由CSDN通过智能技术生成

此前,正运动技术给大家讲了,运动控制器的“固件升级”、“ZBasic程序开发”以及“ZPLC程序开发”,今天我们来学习一下运动控制器与触摸屏通讯。

视频教程:www.zmotion.com.cn

一、控制器与触摸屏的通讯简介

1.控制器支持的触摸屏

   只要支持MODBUS通讯协议的触摸屏都可以与正运动控制器连接使用。控制器使用MODBUS协议与触摸屏通讯时,此时需要将数据放在MODBUS寄存器内进行传递。

2.控制器与触摸屏modbus寄存器地址关系

   控制器的MODBUS地址与其他厂家的触摸屏地址映射关系有所不同。

   ⊙控制器的MODBUS地址从0开始,在与威纶触摸屏通讯时,地址都是从0开始,所以是一一对应。

   控制器MODBUS_BIT(0)对应威纶触摸屏 MODBUS_0X_0,布尔型。

   控制器MODBUS_REG(0)对应威纶触摸屏 MODBUS_4X_0,字寄存器。

   ⊙在与昆仑通态触摸屏通讯时,昆仑通态地址从1开始,控制器地址从0开始,所以触摸屏地址加1。

   控制器MODBUS_BIT(0) 对应昆仑通态触摸屏 MODBUS_0x_1,布尔型。

   控制器MODBUS_REG(0) 对应昆仑通态触摸屏 MODBUS_4x_1,字寄存器 。

   ⊙控制器端程序可使用ZDevelop软件支持的Basic语言或PLC梯形图编程。

   Basic语言中MODBUS_BIT(0)~ 对应PLC梯形图的M0~。

   Basic语言中MODBUS_REG(0)~ 对应PLC梯形图的D0~。

3.控制器MODBUS寄存器

   MODBUS通讯的数据使用MODBUS寄存器存储,控制器的MODBUS寄存器符合MODBUS标准通讯协议,分为位寄存器和字寄存器两类。

   位寄存器:MODBUS_BIT,触摸屏一般称为MODBUS_0X,布尔型。

   字寄存器:包含MODBUS_REG(16位整形)、MODBUS_LONG(32位整形)、MODBUS_IEEE(32位浮点形)、MODBUS_STRING(8位字节型),触摸屏一般叫MODBUS_4X。

058f576910214ec9d3ab2b4801767cc2.png

控制器中MODBUS字寄存器都占用同一片系统变量空间,其中一个LONG占用两个REG地址,一个IEEE也占用两个REG地址,使用时要注意错开字寄存器编号地址。

f3d1f08fc0ea8bd912ee23e753b8aaef.png

   ⊙MODBUS_LONG(0)占用MODBUS_REG(0)与MODBUS_REG(1)两个REG地址。

   ⊙MODBUS_LONG(1)占用MODBUS_REG(1)与MODBUS_REG(2)两个REG地址。

   ⊙MODBUS_IEEE(0)占用MODBUS_REG(0)与MODBUS_REG(1)两个REG地址。

   ⊙MODBUS_IEEE(1)占用MODBUS_REG(1)与MODBUS_REG(2)两个REG地址。

   所以要注意MODBUS_REG、MODBUS_LONG、MODBUS_IEEE地址在用户应用程序中不能重叠。

   控制器的MODBUS存储空间安排如下:

59637d3b30bde96596b688bb2309d7d5.png

二、触

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CodeSys 中实现串口通信,需要使用 CodeSys 自带的串口库。下面给出一个简单的串口通信实例。 1. 首先在 CodeSys 中创建一个新的项目,并添加一个 POU,例如命名为“SerialCommunication”。 2. 在 POU 中引入串口库,在变量声明区域定义需要用到的变量,例如: ``` VAR SerialPort : SERIAL_PORT; TxBuffer : STRING(255); RxBuffer : STRING(255); END_VAR ``` 其中,SerialPort 为串口对象,TxBuffer 和 RxBuffer 分别为发送和接收数据缓存。 3. 在程序中初始化串口对象,设置串口参数,例如: ``` SerialPort := SERIAL_PORT( COM_PORT := 'COM1', BAUD_RATE := 9600, DATA_BITS := 8, PARITY := 'N', STOP_BITS := 1, TIMEOUT := T#5S ); ``` 其中,COM_PORT 为串口号,BAUD_RATE 为波特率,DATA_BITS 为数据位数,PARITY 为校验位类型,STOP_BITS 为停止位数,TIMEOUT 为超时时间。 4. 在程序中实现发送数据的功能,例如: ``` TxBuffer := 'Hello World!'; SerialPort.SendData(TxBuffer); ``` 其中,TxBuffer 为发送数据,SerialPort.SendData(TxBuffer) 为发送数据的函数。 5. 在程序中实现接收数据的功能,例如: ``` IF SerialPort.ReceiveData(RxBuffer) THEN // 处理接收到的数据 END_IF ``` 其中,SerialPort.ReceiveData(RxBuffer) 为接收数据的函数,如果成功接收到数据,则返回 TRUE,并将接收到的数据存储在 RxBuffer 中。 以上就是一个简单的串口通信实例,可以根据实际需求进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值