Codesys + BeagleBone PLC控制达到小儿科水平之Modbus RTU通讯

1,项目目标

准备将自己设计的AM335x平台变成一个PLC平台,所以需要尝试一些有关PLC控制和开发的技术。

2,项目环境

本来准备先在Beaglebone 平台上练练手,但是Beaglebone的板子没有RS232/RS485的接口,所以直接就在自己的板子上测试。

硬件:

个人基于Beaglebone设计的板子

软件:

Debian操作系统。

CODESYS 64 3.5.18

本文地址:

https://blog.csdn.net/dylanZheng/article/details/125732090

3,Modbus的基础知识

如果对Modbus协议本身内容不是很熟悉,也不影响阅读本文。只需要知道它是一套基于主从设备的通讯协议即可。

如果想了解多一些,可以参考以下本人觉得很不错的文档:

https://ipc2u.com/articles/knowledge-base/detailed-description-of-the-modbus-tcp-protocol-with-command-examples/#progr

4,实验的设定

因为Modbus是一个通讯协议,所以至少需要2个设备。一个是主设备,一个是从设备,当然可以有多个从设备。这里我们设定自己的板子为主设备,PC机为从设备。板子发起通信,向从设备(PC机)写数据或者是读数据。

5,设定个人板子为Master

将个人板子通过网口连接到交换机,从而通过网络联通PC机。

个人板子IP: 192.168.1.100

PC机IP: 192.168.1.101

打开或者新建一个基于Beaglebone Balck SL的Codesys工程,先添加Modbus_COM设备,然后再添加Modbus_Master_COM和Modbus_Slave_COM:

图1,添加Modbus COM口

然后开始配置各个设备。首先需要设定COM port号。

点击Modbus_COM ->General

图2,设定COM Port口

这是设定的COM port是6,波特率9600, 8bit数据,1个停止位,不用校验。

对于具体的COM port是和具体的硬件相关的。在我个人的板子上连接的是ttyO5端口。这里有一个深坑,就是Codesys计算端口是从1开始的,所以ttyO5 对应的不是COM5,而是COM6。

其他串口具体的对应是

ttyO0 –> COM1

ttyO1 –> COM2

ttyO2 –> COM3

ttyO3 –> COM4

ttyO4 –> COM5

所以这里,需要查看原理图,将COM口设定正确。

在配置Codesys之前,其实保险起见,还是需要测试一下串口是否工作。这里通过SSH登录到板子里,通过stty –F /dev/ttyO5 9600设定端口波特率,然后就可以通过echo命令发送数据,通过cat命令接收数据。

下图中的COM5是USB-RS232连接到PC机的端口,可以看到串口是能够正常收发数据的。

图3,串口的测试

在测试后,需要修改文件 /etc/CODESYSControl.cfg

将以下两行添加到文件中

[SysCom]
Linux.Devicefile=/dev/ttyO

这里添加的是串口的前缀。当在Codesys中配置COM port为6时,runtime系统会认识设备为

/dev/ttyO5

继续回到Codesys,对Master进行端口的配置

图4,对Master口的设置

这里我们设定传输模式是RTU,Bus cycle task 是mainTask。

然后对Slave的参数进行配置。注意这里添加的Modbus_slave_COM_Port设备,并不是说板上有一个slave的物理设备(真正的Slave设备是PC机),这里它只是提供一个接口,让主设备能够预先知道从设备支持的一些配置信息,如支持的从设备的地址号等。真实目的是告诉主设备,系统存在有一个从设备,等着你去连接呢。

首先我们配置从设备地址号为2。默认是1,这里为了练手,将它改为了2,如下图

图5,Slave的设备地址号

接着需要设定从设备支持的命令。关于Modbus的命令格式,可以参看第三节中提供的链接。这里本人设定了一个读命令和一个写命令,如下图

 

图6,Slave支持的命令(Channel)

最后设定从设备中的数据能够自动更新

图7,Slave设备数据自动更新使能

6, 设定PC机为Modbus的从设备

在设定PC机为从设备之前,需要确保有安装CODESYS Control Win SL。

如果还没有安装,可以从网站上下载它:

CODESYS Control Win SL | CODESYS Store International

需要注意的是下载的包里面包括2个文件,如下图

图8,CODESYS Control Win SL安装包内容

其中exe文件其实在安装Codesys开发环境的时候已经安装过了,这里不需要再安装,只要安装其中后缀名为package的文件就好。安装的步骤可以参看下面的文章中关于安装CODESYS Control for BeagleBone SL 的步骤

Codesys + BeagleBone PLC控制达到小儿科水平_dylanZheng的博客-CSDN博客

安装后,还需要使能CODESYS Control Win,如下图,点击PC机右下角,可以看到有一个灰色的立方体。点击,选择“start PLC”

 

图9,使能 CODESYS Control Win SL

安装完CODESYS Control Win SL后,新建一个工程。这个工程的目的是将PC机配置为一台PLC,所以它选择的PLC设备不是beaglebone设备,而是Win V3 x64这个基于Windows的虚拟PLC。

图10,新建基于Win V3的工程

同样分别添加Modbus_COM和Modbus_serial_Device设备:

图11,添加Modbus_COM和Modbus_serial_Device设备。

同样需要设定设备的COM port,以及波特率等信息,如上图

点击Modbus_COM ->General

这里的COM port设定为5,这是通过查看PC机的设备管理器得到的。波特率以及其他设置和图2的一致。

继续点击Modbus_Serial_Device ->General 来设置从设备的信息,如下图

图12,设置Modbus_serial_Device设备

这里的Unit ID就是从设备网络地址号,需要和第5步骤中图5的设定一样,这里是2. Holding register 和Input registers的字节长度和图6的一致,这里设置都是2.

图13,Slave设备bus cycle和更新使能

继续点击Modbus_Serial_Device ->Modbus Serial Device I/O mapping,

选择Bus cycle为MainTask,并且使能Always update Variables

7, Modbus的测试

分别将步骤5和6的工程编译,下载,运行后,查看Modbus是否运行正确。

更改从设备的输入寄存器的数字,可以看到主设备的对应寄存器数值会更新。

更改主设备的写寄存器的数字,从设备中对应的数值也会更新。

Codesys + BeagleBone PLC控制达到小儿科水平之Modbus RTU通讯相关推荐

  1. 台达PLC与台达VFD变频器modbus 通讯案例 完成PLC与变频器的modbus RTU通讯,实现触摸屏上控制变频器启停,设置频率

    台达PLC与台达VFD变频器modbus 通讯案例 配件:台达DVP 14es的PLC,台达VFD M变频器. 昆仑通态触摸屏和威纶通触摸屏 功能:完成PLC与变频器的modbus RTU通讯,实现触 ...

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

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

  3. 单片机modbus rtu通讯_【原创】永宏PLC系列RS485通讯方式

    实现的功能,及应用的场合 本项目为弯管机设备改造工程,在不破坏设备原有的功能的情况下通过只更换设备原来的永宏PLC,使弯管机能够与埃斯顿机器人进行信号交互,通过机器人对弯管机进行上料.下料动作,即节约 ...

  4. 西门子SMART 200 modbus rtu通讯宇电温控器例程 运行/停止的控制及指示;温度设定,上下限报警设定

    原创西门子SMART 200 modbus rtu通讯宇电温控器例程 所需硬件:西门子smart 200 plc ,mcgs触摸屏(需带网口),宇电516温控器. 功能实现 :运行/停止的控制及指示: ...

  5. 三菱FX1N 或2N 与台达VFD M变频器modbus RTU通讯程序 进行频率设定,频率读取,正反转启停,点动控制。

    三菱FX1N 或2N 与台达VFD M变频器modbus RTU通讯程序 可直接拿来实用了,三菱FX PLC与台达变频器modbus RTU通讯 采用器件:三菱FX1N 24MT PLC,1个FX1N ...

  6. 三菱PLC FX5U与FX5U 直间modbus tcp 通讯

    三菱PLC FX5U与FX5U 直间modbus tcp 通讯 (与此程序经过设备多次使用,硬件一样可以直接用 id=644700625705&

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

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

  8. 不用PLC Smart触摸屏与多台变频器通信 变频器通讯西门子触摸屏直接与台达VFD-S1和松下VF100变频器MODBUS RTU通讯,

    不用PLC Smart触摸屏与多台变频器通信 变频器通讯西门子触摸屏直接与台达VFD-S1和松下VF100变频器MODBUS RTU通讯,实现启动, smart 700 smart 700IE sma ...

  9. 威纶通解摸屏与变频器通信程序 不用PLC与变频器通讯威纶通MT6070IH触摸屏直接与松下VF100变频器MODBUS RTU通讯,

    威纶通解摸屏与变频器通信程序 不用PLC与变频器通讯威纶通MT6070IH触摸屏直接与松下VF100变频器MODBUS RTU通讯, 实现启动, 停止, 正反转, 频率设定, 频率递加减, 最高频率设 ...

最新文章

  1. Server 2008 配置共享文件服务器--权限配置
  2. SpringBoot入门详解源码分析
  3. mongoose 笔记
  4. java utf8转iso8859-1_在Java中将UTF-8转换为ISO-8859-1
  5. Django配置数据库读写分离
  6. 高等数学_第一章第2节_数列的极限
  7. 怎样调整input框背景颜色_还在用百度搜索PPT背景图?7个高大上的图片网站,个个都是高清免费无版权!...
  8. [转]SQL Server 2005报表服务入门(一)
  9. c语言知识竞赛题库答案及,《C语言程序设计》复习题库.docx
  10. word2vec字向量_Anything2Vec:将Reddit映射到向量空间
  11. html字体颜色代码表,字体颜色代码
  12. 51单片机C语言智能小车,基于51单片机智能小车的设计与实现
  13. App消息推送 实现原理
  14. 免费的Office办公套件LibreOffice for Mac
  15. 词向量转换回文本-以CMU-MOSI为例
  16. Python抓取excel中关键字
  17. 原生JS简单的无缝自动轮播
  18. 华为无线显示未连接到服务器,华为手机的无线显示功能怎么使用
  19. 小微企业如何实现数字化转型?应该从哪一步开始?
  20. 新零售转型时,大数据精准营销如何做?

热门文章

  1. 培训是企业的最大福利
  2. 数控立铣刀的正确使用
  3. 小学六年级上册计算机课计划,小学六年级科学上册教学计划
  4. 使用button控件更改C#From窗体背景
  5. 惨遭 openssl 不同版本毒打的一天
  6. 利用GetData Graph Digitizer抓取图片数据
  7. 【Chrome自动更新修复】检查更新时出错:无法启动更新检查(错误代码为 4: 0x80070005 -- system level)
  8. 小学认识计算机软件备课,备课教案软件
  9. pg表常用sql语句
  10. VUE 返回上一页 不刷新页面