Codesys + BeagleBone PLC控制达到小儿科水平

1,项目目标

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

2,项目环境

因为Beaglebone 使用的也是AM335x处理器,所以准备先在Beaglebone 平台上练练手。

硬件:

Beaglebone black C版本

软件:

Beaglebone Debian操作系统。

CODESYS 64 3.5.18

本文地址:

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

3,准备Beaglebone系统

3.1 安装Debian系统

下载最新的Debian系统镜像:

BeagleBoard.org - latest-images

本人在下载的时候最新版本是bone-debian-10.3-iot-armhf-2020-04-06-4gb.img.xz

然后按照网站上的手册步骤制作系统到SD上。

BeagleBoard.org - getting-started

3.2 测试Debian系统

连接板子的USB口到PC机,

查看PC机中设备管理器中检查到的新串口号。

如图,我的机子上显示的是COM4.

图1, 板子的端口号

使用串口工具如putty,设定波特率115200,打开端口: 

图2 串口的连接

这版本的Debian系统有两个用户可以使用

第一个用户名是root,密码也是root

第二个用户名是debian,密码是temppwd, 如上图的倒数第二行所示。

登录后查看网口信息:

图3,板子的网口信息

可以看到,USB0的网口地址是192.168.7.2.

所以也可以通过SSH连接到设备。

4,下载和安装Codesys

从官网下载

CODESYS Development System V3 | CODESYS Store International

有32位和64位两个版本,如果是直接安装在PC机上,应该都是下载64位版本,除非PC机比较古老。


图4,Codesys下载地址

下载后采用默认配置,直接安装即可。

5,下载和安装 “CODESYS Control for BeagleBone SL”

下载地址

https://store.codesys.com/de/codesys-control-for-beaglebone-sl.html

BeagleBone SL是运行在beaglebone硬件板上的一个应用程序。它也叫beaglebone的Runtime System。它的作用是将PLC程序转为Debian系统能够理解的操作。

可以从Codesys的菜单栏Tools->CODESYS Installer..来安装这个SL。 

图5,启动安装器

图6,Codesys的安装器

弹出图六的安装器后, 可以选择从文件中安装。


图七, 选择安装包

选择刚下载的 CODESYS Control for BeagleBone SL package。

后续按照提示安装即可。

需要注意的是在安装的过程中需要关闭CODESYS软件。

安装完成后,可以在installed中找到对应的package。

图8,完成安装包

安装完成后,重启CODESYS软件,可以看到在Tools菜单下已经添加有了“Update Beaglebone Black”按钮。

图9,新增的菜单。

6,Update BeagleBone Black

点击图9的按钮

图10,安装runtime

1,分别输入用户名debian,密码temppwd. 或者root和root

2,输入IP地址192.168.7.2,或者点击scan

3,选中package,点击install。

上述步骤实际上是是将codesyscontrol_beagleboneblack_4.4.0.0_armhf.deb

这个包下载到硬件板上并安装到Debian文件系统里面。

安装的过程会提示是否在硬件板子上安装gateway,同意就是。

出于好奇,可以看看都安装了什么。用zip工具打开deb包看看里面都有什么:

图11, deb包内容

看着是不是很熟悉?它其实就是将一些文件拷贝到Linux中去。换个角度可能就更清楚了。使用命令 dpkg -L 可以查看codesys安装的两个包codesyscontrol和codesysedge的具体内容:

图12, deb包安装路径和内容。

需要注意的是,第一次安装runtime到Beaglebone上的时候,可能会报错。这是SSH的权限引起的问题。具体出错信息如下:


图13 ,SSH权限出错

解决办法是通过串口登录到板子上,修改 PermitRootLogin的权限:

将#PermitRootLogin prohibit-password

修改为PermitRootLogin yes

注意去掉#号。

图14,修改SSH权限

修改完权限后,就能正常安装beaglebone的runtime系统了。

7,新建工程,测试一个简单的PLC程序

新建一个标准工程,如下图。新建的工程使用梯形逻辑框图来设计程序。

图15,新建工程

创建工程后,系统会自动生成如下系统文件,如下图

图16,创建的工程

我们不忙于开始写代码,我们先看看codesys能否连接上beaglebone硬件板。我们在第六步在安装runtime package的时候其实已经证实,codesys能够和硬件板正常通信连接。最开始的时候,觉得需要再次要求连接时,输入用户名和密码是多此一举。但是仔细想想,就知道安装runtime package和下载PLC往往是分开的,所以还是需要再次登录控制。

点击Device->Communication Setting->Scan Network:

图17,扫描设备。

弹出选择设备对话框,正常情况下,很快就能找到Beaglebone设备,如下图:

图18,扫描到设备。

再次回到 Communication Setting选项,可以看到在设备的下拉框中已经有了Beaglebone的设备了。

图19,连接设备

需要注意的是,这里连接设备的时候,如果是第一次连接设备,runtime会要求设定用户名和密码,一定要记住这个用户名和密码。如果用户名和密码不对,会报错“invalid user authentication on the target”。如下图。这是因为这里的用户权限设定和管理是在runtime package中,它和SSH的用户名和密码是不一样的。所以如果使用root和debian登录,就会发生下图的报错。

图20,用户权限报错

如果忘记密码或者系统是其他人设定的密码,可以通过下面的方式重新设定密码。

使用root登录到系统,删除/var/opt/codesys中的以下文件。

.GroupDatabase.csv*

.UserDatabase.csv*

以及.UserMgmtRightsDB.csv

图21,重新设定密码需要删除的文件

删除上述文件后,再次连接时会要求重新设定密码。

按照新用户和密码登录,成功后如下图所示:

图22,成功连接runtime

系统成功连接后,就可以开始干点什么了。上面新建的工程其实是一个空工程,虽然可以编译,下载,但是看不到效果。所以需要点个灯,看看PLC代码是否正常工作。这相当于软件编程中的hello world工程。

打开Beaglebone的原理图,查看它的P9连接器的信号定义如下,

图23, P9的定义

可以发现Pin12和15是通用GPIO,可以用来点灯程序。这里一个GPIO可以外接按钮,一个GPIO外接LED灯。当外接按钮被按下时,灯亮,当按钮释放后,等灭。下面说明如何实现这个简单的程序。

1,在工程中,双击PLC_PRG文件;

2,在右下角点击ToolBox,来选择合适的元件

3,选择contact,并拖曳到图中4的位置;

4,修改contact的名字为button;

5,选择Coil元件并拖曳到图中6的位置

6,修改Coil的名字为LED。

这么操作之后,程序会自动在上部生产代码:

PROGRAM PLC_PRG
VARButton: BOOL := FALSE;LED: BOOL := FALSE;
END_VAR

完成后,可以试着编译一下 Build->Generate Code,看看有没有编译错误。

图24,简单的LED控制编程

关于Ladder的语法和原理可以参看

PLC Ladder Logic Programming Tutorial (Basics) | PLC Academy

Ladder Logic Tutorial - Part 2: Building Logic | PLC Academy

PLC梯形图编程入门_新缸中之脑的博客-CSDN博客_plc编程入门梯形图

为了观察代码运行的结果,可以添加可视化模块:

图25,添加可视化模块

然后点击Visualization,从右侧的Lamp/Switcher中选择一个DipSwitch和Lamp并添加到Visualization文件中,如下图所示。

图26,添加DipSwitch和Lamp

当然还需要将Lamp和DipSwitch和代码中的变量联系上:

DipSwitch对应着PLC_PRG.Button

Lamp对应着PLC_PRG.LED


图27,关联变量

这个时候编译并下载代码到BeagleBone后,运行,可以看到效果:

图28,鼠标点击DipSwitch,其位置在下,LED灯灭

图29,鼠标点击DipSwitch,其位置在上,LED灯亮。

到目前为止, PLC代码还只是在内存中自娱自乐。它还没有和外设勾搭上。为了实现上文提出的要求,使用GPIO读取按钮信息,从而控制LED,还需要添加GPIO模块。

图30,添加GPIO模块

添加模块之后,还需要添加GPIO管脚,如下图。

在这里我添加了两个1bit的管脚。当然可以添加4bit或者16bit的,然后只使用其中的两根应该也是可以的。

图31,添加GPIO管脚

添加管脚之后,需要配置和关联上beaglebone上的物理管脚。

beaglebone连接器P9上的Pin12和15是通用GPIO1_16和GPIO1_28. 它们对应的GPIO pin number分别是48 和60. 具体的计算方法是

1 x 32 + 16= 48

1 x 32 + 28 =60

这里1x32是对应着GPIO1端口,如果是GPIO2端口的管脚,就需要2 x 32。GPIO3端口的管脚是3 x 32,依次类推。

图32,配置和关联GPIO Button管脚

我们使用GPIO1_16作为输入,以获得按钮的状态。所示如上图所示,它的direction是Input.它映射的变量名是PLC_PRG.Button。

同理GPIO1_28 作为输出,控制LED灯的亮灭。它的direction是Output.它映射的变量名是PLC_PRG.LED。

图33,配置和关联GPIO LED管脚

至此,一个简单的PLC程序就算完成了。但是这里因为Beaglebone本身有一个bug,那就是它的Sysfs系统中GPIO不能两次export。如下图,如果GPIO48已经存在了,再次运行命令

echo 48  > export

GPIO48会消失(相当于unexport的效果)。

所以为了测试PLC程序,还需要有一个多余的步骤,那就是使用SSH登录Beaglebone板子,

确保GPIO48和GPIO60不存在。如果存在的话,需要运行

echo 48  > export

echo 60  > export

将它们unexport掉,这样当PLC代码运行的时候,才能够初始化成功这两个GPIO,并实现GPIO的控制。

图34,unexport GPIO48和60

编译PLC后下载运行, 代码能够正常运行,如下图:

图35, PLC正常运行。

本文地址: Codesys + BeagleBone PLC控制达到小儿科水平_dylanZheng的博客-CSDN博客

外接按钮和LED测试:

….............................................完.........................................................

Codesys + BeagleBone PLC控制达到小儿科水平相关推荐

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

    Codesys + BeagleBone PLC控制达到小儿科水平之Modbus RTU通讯 1,项目目标 准备将自己设计的AM335x平台变成一个PLC平台,所以需要尝试一些有关PLC控制和开发的技 ...

  2. CodeSys WIN V3 x64 PLC控制罗克韦尔的1734 Ethernet/IP远程控制模块

    CodeSys软PLC控制EtherNet/IP远程站 1. CODESYS软PLC 2. 系统组成 2.1 主站配置 2.2 网络配置 2.3 连接1734-AENT/B远程站 3. 配置连接 1. ...

  3. codesys 串口通讯实例_常见的PLC程序实例,车库自动门的PLC控制!

    点击箭头处"工业之家",选择"关注公众号"! PLC控制车库自动门实例 车库自动门控制 (1)明确系统控制要求 系统要求车库门在车辆进出时能自动打开关闭,车库门 ...

  4. plc控制可调节阀流程图_工业电气控制及PLC技术第四章可编程控制器及其工作原理ppt课件...

    PPT内容 这是工业电气控制及PLC技术第四章可编程控制器及其工作原理ppt课件下载,主要介绍了可编程控制器的产生和发展:可编程控制器的用途及特点:PLC的硬件组成:PLC的软件及应用程序编程语言:可 ...

  5. 双缸四柱液压机的液压系统设计和PLC控制【说明书(论文)+CAD (PLC控制框图+PLC输入输出接线图+液压系统原理图+梯形图+任务书……)】

    摘要 双缸四柱液压机应用广泛,是在加工工艺过程中极为常用的一种机械设备.该液压机的组成部分包括主机和一个控制机构,其中主机部分包括机架.主缸.顶出缸和它的充液装置等.控制机构则包括动力系统和液压控制系 ...

  6. 基于PLC控制的导热油温控系统如何实现远程监控

    导热油是用于转递热量的专用油品,具有加热均匀,调温控制准确,能在低蒸汽压下产生高温,传热效果好,节能,输送和操作方便等特点,在制造加工.石油化工等领域广泛使用. 导热油在几乎常压的条件下,可以获得很高 ...

  7. 基于plc控制智能扫地机吸尘逼避障优化设计

    绪论 课题研究背景 目前,中国社会经济飞速发展,人们的生活水平日益提高,生活节奏不断加快,而家庭环境中的卫生清洁问题越来越严重.目前市场上扫地机器人产品种类繁多,质量参差不齐,消费者在选购时存在很大困 ...

  8. plc控制可调节阀流程图_PLC控制的水箱液位控制系统毕业论文

    内容介绍 原文档由会员 莎士比亚 发布 论文标准WORD格式排版40页 摘要 在人们生活以及工业生产等诸多领域经常涉及到液位和流量的控制问题, 例如居民生活用水的供应, 饮料.食品加工, 溶液过滤, ...

  9. 共阴极数码管编码表_数码管循环点亮的PLC控制——基本逻辑指令的应用

    数码管循环点亮的PLC控制,我们运用日本三菱FX2N-48MR-001(FX2N-48MR-001是日本三菱公司的可编程控制器(PLC),继电器输出及输入24点,输出24点.FX2N是FX系列中功能最 ...

  10. plc控制可调节阀流程图_PLC五大主流编程语言你会几种?

    PLC的软件编程语言与一般计算机语言相比,具有明显的特点,它既不同于高级语言,也不同于一般的汇编语言,且要满足易于编写和调试的要求. 早期的PLC仅支持梯形图编程语言和指令表编程语言,现根据国际电工委 ...

最新文章

  1. POJ2391(最大流Isap+Floyd+二分)
  2. 计算机组成原理试卷五套,计算机组成原理(五套试题)
  3. 数据驱动科技赋能,东吴证券打造数据中台“九大能力”
  4. npm无法下载任何东西其中的一个原因
  5. 如何用好埋点中的数据
  6. Golang map的底层实现
  7. python numpy diff_Python numpy.uint16方法代码示例
  8. 计算机科学导论有关论文,计算机科学导论论文
  9. 工厂流水线数据采集方案
  10. STM32cubemx教程及STM32入门(一)
  11. Windows Mac 光盘刻录软件
  12. 如何配置android的adb环境变量,windows系统下配置adb环境变量的方法步骤
  13. 科学计算与Matlab笔记:第4章:Matlab绘图
  14. java 微信分享朋友圈 链接显示图片_【微信开发】-- 微信分享功能(分享到朋友和朋友圈显示图片和简介)...
  15. Ubuntu下GNOME桌面美化
  16. 计算机等级二级c语言英文,计算机等级考试二级C语言考试大纲(国外英文资料).doc...
  17. 虎牙直播弹幕抓取 相关资料整理
  18. 第一节 安卓自定义轮播图的制作
  19. Exp4 恶意代码分析 20164321 王君陶
  20. vtk 利用体渲染绘制地球

热门文章

  1. powerDesign导出word操作步骤
  2. C++ 超级玛丽制作揭秘(包含完整源文件与文档)
  3. 瑞星杀毒软件网络版2012支持Web日志访问
  4. 研发部工作日志使用教程
  5. UCGUI使用的24位颜色RGB数值对照表
  6. 提高电脑开机速度的方法
  7. linux驱动开发 ST7789 LCD驱动移植(I.MX6ULL平台)
  8. ROS(ROUTEROS) 端口映射
  9. 访问限制:由于对必需的库E:\j2sdk\jre\lib\rt.jar具有一定限制,因此无法访问类型JFrame
  10. linux——18数据库SQLite3