浅谈EMC2的硬件抽象层原理与实现
对于高层不可见。
6 HAL的使用
以DAC为例,在Linux下的命令行输入“halrun”进入EMC2的HAL运行界面,输入:
loadrt threads namel=thread periodl=1000000
创建名为“thread”的线程,该线程执行周期为1 ms。
执行:
loadrt hal_CNC
将所编写的硬件系统组件调入,执行:
addf CNC.DAC.write thread
将DAC的写函数加入到前面创建的线程thread,使之以与thread相同的执行周期被调用。然后使可通过控制DAC的引脚来输出相应的电压。如:
setp CNC.DAC.0.value 1
该语句将使电路板上的DAC输出端子输出1 V的电压。
用类似的方法将其他软件模块通过与HAL的引脚连接,便实现了其他软件对HAL的调用。
7 HAL在ClassicLadder中的调用
以从DAC输出5 V为例,将classicladder的一个名为“classicladder.0.s320ut-00”的有符号32位整型Pin赋值为5。该值经过HAL中的一个类型转换Component“s32tofloat”变为浮点数,再连接到hal_CNC中的DAC单元的引脚“CNC.DAC.0.value”,便在实际硬件电路板的DAC输出端输出5 V的电压。引脚连接如表1所列。
其中“→”和“←”表示引脚之间的连接,用HAL中的Sig-nal实现。
在软PLC中设置变量W10的值为5,则在DA输出端子引脚上用万用表测到5 V的电压。软PLC中的操作输出如图3所示。
其中4个窗口表示DAC的4个通道,分别令DAC输出5 V、2 V、3 V、4 V的电压。
8 结 论
实践证明,HAL的引入可极大提高嵌入式软件实现的硬件无关性。从软件的角度来看,其面向的硬件具有同质的接口,对硬件的操作具有相似的方法与架构,极大地简化了软件对硬件的控制,方便了同类软件在不同硬件平台间的移植。这就为软硬件同步设计、分工协作奠定了良好的基础。该架构已成功应用在文中所述的锂电池卷绕恒张力控制器中,取得了良好效果。
- 嵌入式编程需注意的Cache机制及其原理(05-25)
- 通信系统原理技术与DSP实验平台的研制(06-06)
- Linux 环境下USB 的原理、驱动和配置(06-06)
- 基于FPGA的原型板原理图的验证(06-05)
- CAN总线原理介绍(12-16)
- 直流无刷电动机原理与控制(12-15)