Codesys + BeagleBone PLC控制达到小儿科水平之I2C ADC输入

Codesys + BeagleBone PLC控制达到小儿科水平之I2C ADC输入

1,项目目标

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

2,项目环境

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

硬件:

           Beaglebone black C版本

           ADC模拟芯片是Ti公司的ADS1115

软件:

          Beaglebone Debian操作系统。

CODESYS 64 3.5.18

本文地址:

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

3,I2C 总线上的ADC设备的测试

本人使用的ADC芯片是Ti公司的ADS1115。在构建Codesys的工程之前,需要先确保I2C总线上的ADC芯片是否能够正常操作.

I2cdetect –r –y 0

检查I2C0总线上是否有ADC芯片。它的I2C地址是0x48,。 如下图, 能够顺利扫描到设备。

图1,扫描I2C设备 

但是使用命令i2cdump 去读寄存器数据时,会发生错误,如下图所示:

图2, I2C读取数据错误

这主要是因为系统启动后,自动加载了它的驱动,驱动占有/锁定了它的资源。它的操作需要通过驱动程序去执行,而不是直接i2c tool命令来。具体可以通过sys目录下的iio总线来执行,如下图所示。

 

图3, IIO总线的操作 

4 新建ADC的Codesys工程

通过步骤3,我们已经知道ADC的物理连接是没有问题的。所以下一步就是要通过codesys的工程来实现ADC的数据读取。

Codesys提供的beaglebone runtime没有直接提供I2C操作的设备和库。 经过google,这里有两种解决方法:

1),下载raspberry的runtime包,在它的例子和库中有i2c的对应设备,安装上对应的设备和库后,在转到beaglebone的工程里,应该就能找到对应设备。

2),下载论坛里面其他人创建的ADS115工程,并在此基础上测试。

本人经过多番尝试第一种方法,但是不幸的是,这条路没有走通。 幸运的是刚好能够搜索到ADS115的工程包,因此直接通过第二种方法去测试。 如果有读者走通过第一种方法,欢迎留言或者私信,在此先谢过。

ADS115的工程包的下载地址:

https://forum.codesys.com//download/file.php?id=2123

下载后打开工程,如下图所示,除了I2C,工程中包含有其他总线:

图4,下载的ADS1115工程

 删除掉上面工程中的不相关的总线,如GPIO, SPI, onewire以及Camera device后,只剩下I2C总线,如下图:

图5,清理后的ADS1115工程

 这里需要修改几个配置项:

(1),添加I2C 总线号,我们连接的是CPU的I2C0,所以设定为 '/dev/i2c-0',如果使用的是I2C1,需要使用'/dev/i2c-1',以此类推。

 图6, 设置总线

(2),配置ADS1115的I2C地址。它的地址是0x48,这里要换算成10进制,就是72.

图7, 设置I2C地址

(3),这里贴出其他选项设置,供参考 : 

 图8:ADS115的其他配置

以及PLC的代码:

图9, 工程的PLC代码

5,编译,下载,测试

关于具体如何编译,登录,下载等操作,可以参考本人其他博文。 这里专注于ADC相关的测试。

当工程运行时,如下图,没有任何错误,并且所有的选项都是绿色。此时在ADC输入端添加电压,就可以看到lrValue1读取的数值的变化。

图10,工程运行情况 

 6,调试中碰到的问题

在开始的调试codesys的时候, ADS1115报错, bus not running。

具体的原因是系统内核的驱动占用了总线资源。所以需要重新编译内核,将ADS1115的对应驱动编译成模块。

图11,编译驱动为模块方式  

重新更新内核后,使用命令lsmod可以看到ti_ads1015已经是作为模块运行了。 

图12,查看系统运行模块

卸载掉模块后:

图13, 卸载模块

可以使用i2c tool测试一下

图14,运行I2C tool

此时再次运行codesys,代码就能正常了。

-----------------------------------完--------------------------------------------

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值