施耐德公司2019年6月份推出了M262 PLC 。这是一款适用于物联网高性能逻辑与运动控制器。
施耐德公司的PLC被人的感觉是网络接口比较丰富,这几年 创新的脚步快一点。M262同样是如此,它的最左边是2个独立的以太网网口,网络支持EtherNet/IP和Modbus TCP。网口1速度是100Mbit/s,同时支持实时运动控制总线(支持EtherNet/IP 和 Sercos在同一电缆中运行)。网口2速度为1Gbit/s,支持菊花链连接和RSTP环网。而菊花链接口在物理上是两个以太网口实现的。所以实际上需要三个以太网口。
M262的主模块上带有了运动编码器和高速IO。
M262又被称为工业物联网PLC,因为它具有嵌入式直接云平台接入和加密通信协议,翻译过来的意思就是M262的以太网口支持云协议(MQTT、HTTP、JSON、OPC UA)和网络安全加密(TLS),可以直接和云平台相连接,这样设备就可以通过控制器直接上云。
在这里就不多写M262 的细节了,免得小编认为我在帮忙推销产品。毕竟这类产品也太多了。我并没有过分地关注它。
惊喜的发现
让我关注它的是一位网友拆解了M262 (详见”施耐德PLC内部拆解,果然厉害” 一文),满足了我这个工程师的八卦心理。
让我惊喜的是从这篇文章中发现,M262 居然采用了Xilinx 公司的ZYNQ 7000 芯片!
这段时间我一直在纠结高端控制器应该使用什么样的MCU 芯片。在这之前,我也拆解过一些PLC。给我的印象它们大多是PLC厂商专门定制的CPU为主。也有一些厂商使用NXP 的MCU。这是我第一次看到在PLC 中使用Xillinx 公司的ZYNQ。
嵌入式MCU 的选择
作为小型的工业控制设备制造厂商,通常没有足够的技术和资金实力开发专用芯片,况且现代SOC 芯片越来越复杂,开发的周期长。即便是PLC 大厂要能够快速地产品迭代,也无法自己开发。因此,使用专业半导体厂商设计的通用MCU 成为主流。现阶段可以选择的适合工业控制领域的MCU厂商也并不多。主要包括了TI,ST,NXP,Microchip以及日本的瑞萨公司。它们的产品普遍使用ARM 内核。主要包括了Cortex-M 系列和Cortex-A 系列产品。在笔者看来,低端产品可能使用STM32 系列为主,目前已经达到1GHz 主频的H7 系列,以及H7/M4 双核芯片。在Cortex-A 系列,以NXP的i.mx 系列产品。目前已经出现了双核,4核甚至更多核的MCU。比如i.mx8有两个cortex-A72,4 个cortex-A53 核两个cortex-M4F 。
而NXP 的Layerscape系列产品出现了LS2088 具有8核Cortex-A74 64bit ARM内核,而且以网络为擅长。
microchip和日本瑞萨的MCU 具有许多工业控制接口核软件支持。在专用控制器中应用广泛。
目前国产MCU停留在专用MCU(手机,图像监控,电表计费等)以及替代ST 公司产品的阶段,以ARM 核为主,少数采用RISC-V核mips 内核。比如瑞芯微,全志的产品主要面向视频监控,人脸识别等应用领域。也有人用来做工业网关,控制器的应用。
通用MCU 的困惑
使用通用MCU 开发工业控制器存在如下困惑:
外围电路无法满足应用的需要
在许多场合,我们与其说是在选择MCU,还不如说是在选择外围接口。但是这样的选择是很麻烦的,特别是许多的外围电路的引脚都是复用的。要选择完全符合应用需要的MCU 相当困难
扩展外围接口困难
同样地,如果要扩展外围接口电路,比如,从一个以太网口扩展为2个以太网口更加困难,有时不得不重新选择不同厂商的MCU。硬件修改起来相对还比较简单,而软件就可能从头开始去熟悉。花费的精力很大。
硬件逻辑无法保护。
想必大家都有这样的感受,选择通用MCU难以保护产品的知识产权。仍然有一些聪明的家伙从事破解软件的事情。
为什么选择ZYNQ
当看到施耐德的M262中选择xillinx的ZYNQ,感觉豁然开朗。在PLC 控制器中使用ZYNQ 是非常合理。
通俗地讲ZYNQ 芯片是在原来FPGA 芯片中增加了一个硬核的MCU,或者说是在MCU 在增加了一个功能强大的FPGA。这种FPGA+MCU的芯片带来的优势是明显的。
1 可以使用FPGA 构建IO外围电路。比如构建多个以太网接口,或者SPI,PWM接口。
我们不再担心标准外围电路不够的问题
2 可以使用第三方设计的IP核在FPGA 中实现,比如EtherCAT接口,海德汉EnDat2.2 编码器接口等等。
3 自行设计具有知识产权的IP核。比如数字滤波,特殊的通信接口,控制算法的等等。现在甚至可以将Matlab/Simulink ,Labview 的算法直接产生HDL、verlog 语言,经过vivado 的编译之后下载到ZYNQ 中的FPGA 中运行。
4 ZYNQ 中包含了cortex-A级别的应用处理器,可以跑Linux 操作系统,而在施耐德M262 中跑的的高大上的Vxworks RTOS。小型公司可以采用Linux + Xenomai的方案,国产RT-Thread OS 也开始支持ZYNQ,不过没有使用过,不知道是否成熟。
在PLC 中使用ZYNQ 芯片能够满足PLC 对高速控制接口的硬件实现。原本需要额外的FPGA 芯片来完成,采用ZYNQ减少了MCU与外接FPGA 之间的连线,增加它们之间的带宽,也减少了PCB 的面积。毕竟PLC 对体积是有要求的。
加快了产品的系列化设计和迭代速度,某些功能只需要更改ZYNQ中的控制逻辑和软件就可以实现不同的接口,协议和控制逻辑。
这些特性都是通用MCU 无法比拟的。
ZYNQ的问题也是明显的
1 价格比通用MCU贵
2 ZYNQ 要比通用MCU 更复杂,开发难度有所增加
ZYNQ 产品
适合控制领域的ZYNQ 产品包括了两大系列
-Zynq-7000 SoC
-Zynq UltraScale+ MPSoC
相比之下,ZYNQ 7000 更具备成本优势。而且为了实现硬实时性能,使用7020 双核产品更加合适。
其它使用ZYNQ 的产品
其它公司也开始使用ZYNQ ,比如NI 的cRIO,roboRIO 都是采用了ZYNQ
据说菲尼克斯的PLC Next 也是采用了ZYNQ。看来自动控制行业使用ZYNQ 是趋势
结束语
在PLC 等控制设备中使用ZYNQ芯片是非常合理的。只是这颗芯片目前还有点贵。顺便介绍一本书《The ZYNQ Book》,好像有中译本。新的一年,让我们一起来玩玩ZYNQ 吧!