让您的PLC演奏歌曲:掌握西门子PLC内存数组

文章摘要

间接数组寻址是PLC程序员的必经之路,它能实现存储和检索大量数据等高级编程功能。播放歌曲是学习数组和间接内存访问的经典方式。本文展示的PLC实施方案,可通过西门子S7-1200 PLC的脉冲串输出功能驱动扬声器发声。

stopwatch_00 预计阅读时间:4分钟

Link_00 本文是 DigiKey 西门子 PLC 与自动化资源中心的一部分。访问该中心获取更多关于西门子组件、应用及编程的技术简报。

PLC 数组间接寻址入门

数组是相同类型内存元素的有序集合。在可编程逻辑控制器(PLC)中,我们通过声明内存类型和数组大小来定义数组。例如,可以构建一维数组来存储传送带上移动容器的条形码信息。在此应用中,第一个条形码将存储为 barCodes[0]

什么是间接寻址?

数组元素可通过直接或间接方式访问:

  • 直接方式 :使用常量标识目标数组元素,如 barCodes[1]

  • 间接方式 :使用变量标识目标元素,如 barCodes[x] ,其中x为受数组大小限制的无符号整数

间接内存访问是处理数组时不可或缺的工具。它允许程序员遍历数组。在前述示例中,我们可以声明无符号整数 containerCount 。随后通过 barCodes[containerCount] 访问数组元素。每当容器经过时,先递增 containerCount ,再存储条形码。

间接寻址是所有程序员的必修课。这是个具有挑战性的概念。但一旦掌握,就能开启诸多可能性。开篇的条形码示例就是很好的示范。另一个例子是捕获并存储错误信息以供HMI显示。借助数组,技术人员可滚动查看错误信息以确定根本原因。

通过播放歌曲演示间接寻址

播放歌曲是向嵌入式微控制器程序员教授间接寻址的经典方法。数组用于存储音符,而定时器用于推进到下一个音符。

同样的技术可用于西门子TIA Portal和S7-1200,如图1所示。虽然PLC通常不被视为音乐盒,但它确实有多个脉冲发生器,通常用于驱动电机。这些发生器可以重新用于驱动扬声器,提供带有1980年代电子游戏风格的音乐。

为了让PLC唱歌,我们配置了脉冲序列硬件。结果包含在视频1中,PLC演奏了斯科特·乔普林的《艺人》钢琴拉格泰姆曲。

1 :西门子S7-1200 PLC安装在Phase Dock训练器上。

作者的反思(经验)

视频1中展示的乔普林歌曲节奏快,包含100多个音符(包括休止符)。作为一名终身音乐人,从乐谱中识别音符很容易。困难的部分是正确(手动)将每个音符转换为频率。也许我应该写一个计算机程序,但我用了电子表格。

视频 1 :西门子S7-1200“演唱”乔普林的《艺人》。

如何初始化数组元素

本文描述了我的技术。在那里,您将找到对西门子数据块(DB)的描述,以及用于初始化数组元素的中间电子表格。

技术提示 :西门子数据块(DB)提供了一个可移植的内存容器。这个DB对象是西门子处理内存的原生方式。如前一篇文章所示,将DB与电子表格或计算机程序结合,提供了一种将数据传输到PLC的便捷方法。

如何控制西门子脉冲发生器( PTO PWM

西门子S7-1200包括可配置为脉冲序列输出(PTO)或脉宽调制(PWM)的脉冲发生器。在本应用中,我们使用PTO,因为它允许动态调整频率,同时保持50%的占空比。实例化如图2所示。这里我们观察到 musicalNotesDatBlock.note[#uiIndex] 的间接寻址方式。注意 uiIndex 是指向下一个音符的指针,而 xLoadNote 的上升沿会将音符传输到PTO模块。

请参考此链接获取配置西门子PTO的说明。

音乐UDFB的代码可以下载pdf格式。这是一种相对直接的方法,每隔 timNote 秒生成一个脉冲。该脉冲用于递增 uiIndex 并在PTO模块中加载新值。最后,使用保护机制在歌曲结束时重置 uiIndex

playSong.pdf (75.7 KB)
MusicalNotesDataBlock.db (3.2 KB)

2 :实例化西门子PTO硬件以播放音符。

扬声器连接

如视频1所示,使用了一个小型扬声器。串联限流电阻用于保护PLC的固态输出和扬声器。作为起点,使用1kΩ电阻并根据需要调整以控制音量。

后续步骤

本文提供了一个间接数组寻址的工作示例。鼓励您进行实验:

  • 更改歌曲
  • 使用多维数组存储音符和时长
  • 实例化另一个PTO播放对位旋律
  • 使用间接寻址技术构建模拟工业洗衣机操作的查找表
  • 构建西蒙说游戏,使用间接寻址播放动作并跟踪玩家响应
  • 使用数组记录机械臂位置以便回放

最终思考

PLC编程概念不必抽象。音乐编程是非常好的练习,为未来学习奠定基础。您的学生将扎实掌握数组概念,并准备好进军电机驱动领域(双关语)。
请尝试这项技术并在评论区分享您的观察。

相关文章

若您喜欢本文,这些相关文章或许也能助益:

总结

  • 数组与间接寻址是通往PLC高级编程的钥匙它们能让我们存储和访问项目列表
  • 用数组操作演奏歌曲是个有趣的活动,程序员能即时获得反馈
  • PLC脉冲串输出(PTO)硬件通常用于驱动电机,但也能通过扬声器播放音乐
  • 歌曲数据存储在数组中,通过间接寻址选择当前演奏的音符