使用树莓派制作一个CODESYS的PLC控制器
树莓派上实现控制器
大家对树莓派都不陌生,可以作为一个微型计算机,使用SSH可以在计算机上编辑,如果有支持HDMI的显示器,有USB鼠标和键盘就可以像一个计算机一样使用。有LibreOffice做表格和文字处理等。一个树莓派的界面如下:
介绍树莓派的文章都很多了,在这里不做赘述了,主要介绍使用一个树莓派来作为一个PLC及采取的Codesys来编辑树莓派PLC。其实就是在树莓派上运行一个CodeSys的runtime。实现一个PLC可以完成的全部的功能。
1. 安装CodeSys编程环境
首先要在计算机上安装CodeSys的PLC编辑的软件。
1.1 下载CODESYS
软件的英文名称是CODESYS开发系统:
可以看到,开发系统有支持32位的,也有支持64位。我这里选择了64位的系统。下载需要有一个账户,这个软件是免费的。所以在英文网站上先注册账户,然后下载就可以了。
下载首先是下载一个程序,如图:
名称:CODESYS 64 3.5.17.0.exe
1.2 安装CODESYS开发环境
双击上面的CODESYS 64 3.5.17.0.exe开始安装,时间比较长。要有耐心,一定要关闭防病毒的软件,我装了360安全卫士,关闭。然后安装。不然在过程中总是问要不要允许安装。安装完成了就可以运行CODESYS 3.5 SP17,我计算机上的图标如下:
1.3 运行CODESYS开发环境
运行的界面如上。先不要着急建立系统,在工具栏目上选择包管理器,如图:
点击包管理器及选择安装,出现下面的画面,这是我已经下载的包。要安装的包有两个:
- CODESYS Edge Gateway for Linux 4.1.0.0.package
- CODESYS Control for Raspberry PI 4.1.0.0.package
在树莓派的包安装时需要这个Edge Gateway,我看早一个版本的还不需要这个Edge Gateway安装。
安装完成后就可以进行对树莓派进行编程了。
2. 运行CODESYS开发环境
2.1 创建项目
在CODESYS环境下选择新建一个树莓派的控制器的项目。
我们选择一个名称为RASP002的项目,采用标准项目的模板。然后确定。
在下面的画面中我们可以选择要建立的项目的硬件类型。
在这其中可以看到有许多种的硬件可以选择。最简单的是选择一个CODESYS Control Win V3 x64的项目。这个项目是在我们的电脑上创建一个软PLC。当然,如果没有许可证,这个PLC运行两个小时就会退出。我们现在有了CODESYS Control for Raspberry Pi, 在这里选择这个设备。选择了以后剩下的事情就可以让计算机来工作了,要有大约1分钟的时间,给我们创建了这个项目。如图:
2.2 编辑程序
在这里我们要简单的编辑一下程序,双击页面中的PLC_PRG. 出现下面的画面,先命名一个变量,在PLC_PRG中声明变量。在程序部分做一个累加的程序,判断如果是大于1000,将变量变为0.
2.3 编译程序
在下载程序前要对程序进行编译,在菜单栏上选择编译-生成代码。这一步就完成了。
2.4 下载程序
编译没有问题就可以下载程序,下载程序可以在工具栏上选择在线。这时需要对设备进行设置,我知道我的Raspberry的IP地址,不知道的可以在Raspberry PI上查看。用Linux的ifconfig命令来查看。得到的IP地址是192.168.32.164
这个时候会出现一个上面的窗口,不知道在那个地方定义的了。我的用户名是Admin,密码:xxxxxx。输入,OK
下载,运行。
3. 运行结果
一个PLC就生成了,可以对GPIO,I2C设备及SPI等机型编程。为应用提供了非常底层的联系,同样的,CODESYS Raspberry PI还支持如下的应用:
3.1 接口
CODESYS设备描述支持以下组件:
· CODESYS OPC UA服务器,作为用于数据交换的完整版本
· 通过EL6751网关的CANopen
· 树莓派相机
· I²C接口,带有SenseHat,SRF02,Adafruit PWM,MPU6050陀螺仪,MPU9150陀螺仪,AK8975罗盘
· SPI接口,带有MCP3008,MCP23S17,PiFace Digital,PiFace控制显示
· 单线接口,带DS20B18
· GPIO通用输入输出
3.2 可视化
CODESYS WebVisu,作为完整版本包含在交付的Runtime软件包中。
3.3 支持的现场总线
随着运行时软件包的交付,支持以下现场总线:
· Modbus-TCP 主站/从站
· Modbus RTU主站/从站
· EtherNet/IP 扫描仪/适配器
· PROFINET控制器/设备
· EtherCAT主站
· CANopen主站/从站
· J1939
所以,控制器的功能还是很强大的。