Codesys + BeagleBone PLC控制达到小儿科水平之Modbus RTU通讯
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通讯相关推荐
- 台达PLC与台达VFD变频器modbus 通讯案例 完成PLC与变频器的modbus RTU通讯,实现触摸屏上控制变频器启停,设置频率
台达PLC与台达VFD变频器modbus 通讯案例 配件:台达DVP 14es的PLC,台达VFD M变频器. 昆仑通态触摸屏和威纶通触摸屏 功能:完成PLC与变频器的modbus RTU通讯,实现触 ...
- 丰炜vb0和两台变频器的modbus rtu通信程序 史上最好用的plc modbus rtu通讯程序, 通讯效果如视频,控制,反馈无延迟
丰炜vb0和两台变频器的modbus rtu通信程序 史上最好用的plc modbus rtu通讯程序, 通讯效果如视频,控制,反馈无延迟,真心好用,别的变频器支持modbus rtu一样可以使用id ...
- 单片机modbus rtu通讯_【原创】永宏PLC系列RS485通讯方式
实现的功能,及应用的场合 本项目为弯管机设备改造工程,在不破坏设备原有的功能的情况下通过只更换设备原来的永宏PLC,使弯管机能够与埃斯顿机器人进行信号交互,通过机器人对弯管机进行上料.下料动作,即节约 ...
- 西门子SMART 200 modbus rtu通讯宇电温控器例程 运行/停止的控制及指示;温度设定,上下限报警设定
原创西门子SMART 200 modbus rtu通讯宇电温控器例程 所需硬件:西门子smart 200 plc ,mcgs触摸屏(需带网口),宇电516温控器. 功能实现 :运行/停止的控制及指示: ...
- 三菱FX1N 或2N 与台达VFD M变频器modbus RTU通讯程序 进行频率设定,频率读取,正反转启停,点动控制。
三菱FX1N 或2N 与台达VFD M变频器modbus RTU通讯程序 可直接拿来实用了,三菱FX PLC与台达变频器modbus RTU通讯 采用器件:三菱FX1N 24MT PLC,1个FX1N ...
- 三菱PLC FX5U与FX5U 直间modbus tcp 通讯
三菱PLC FX5U与FX5U 直间modbus tcp 通讯 (与此程序经过设备多次使用,硬件一样可以直接用 id=644700625705&
- S7-1200 PLC与PAC3200电能表的Modbus RTU通信(详细步骤)
S7-1200 PLC与PAC3200电能表的Modbus RTU通信 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到网站. 本文将主要介绍如何使用Mod ...
- 不用PLC Smart触摸屏与多台变频器通信 变频器通讯西门子触摸屏直接与台达VFD-S1和松下VF100变频器MODBUS RTU通讯,
不用PLC Smart触摸屏与多台变频器通信 变频器通讯西门子触摸屏直接与台达VFD-S1和松下VF100变频器MODBUS RTU通讯,实现启动, smart 700 smart 700IE sma ...
- 威纶通解摸屏与变频器通信程序 不用PLC与变频器通讯威纶通MT6070IH触摸屏直接与松下VF100变频器MODBUS RTU通讯,
威纶通解摸屏与变频器通信程序 不用PLC与变频器通讯威纶通MT6070IH触摸屏直接与松下VF100变频器MODBUS RTU通讯, 实现启动, 停止, 正反转, 频率设定, 频率递加减, 最高频率设 ...
最新文章
- Server 2008 配置共享文件服务器--权限配置
- SpringBoot入门详解源码分析
- mongoose 笔记
- java utf8转iso8859-1_在Java中将UTF-8转换为ISO-8859-1
- Django配置数据库读写分离
- 高等数学_第一章第2节_数列的极限
- 怎样调整input框背景颜色_还在用百度搜索PPT背景图?7个高大上的图片网站,个个都是高清免费无版权!...
- [转]SQL Server 2005报表服务入门(一)
- c语言知识竞赛题库答案及,《C语言程序设计》复习题库.docx
- word2vec字向量_Anything2Vec:将Reddit映射到向量空间
- html字体颜色代码表,字体颜色代码
- 51单片机C语言智能小车,基于51单片机智能小车的设计与实现
- App消息推送 实现原理
- 免费的Office办公套件LibreOffice for Mac
- 词向量转换回文本-以CMU-MOSI为例
- Python抓取excel中关键字
- 原生JS简单的无缝自动轮播
- 华为无线显示未连接到服务器,华为手机的无线显示功能怎么使用
- 小微企业如何实现数字化转型?应该从哪一步开始?
- 新零售转型时,大数据精准营销如何做?