在PLC(可编程逻辑控制器)编程领域,结构化文本和梯形图是两种最为广泛使用的编程语言。对于初学者或缺乏相关背景的技术人员来说,从梯形图入手学习PLC编程无疑是一条捷径。这是因为,无论PLC的品牌如何,其梯形图的结构都与实际电气控制回路有着惊人的相似性。接下来,我们将介绍几种常见的控制电路,帮助大家回顾并深化对这一领域的理解。 1.启动、保持与停止电路 启动、保持与停止是PLC编程中的基础功能。通过四种不同的梯形图实现方式(如图a、b、c、d所示),我们可以清晰地看到如何实现这一功能。在这些梯形图中,x0代表启动信号,X1代表停止信号。图a和图c利用Y10的常开触点实现自锁保持,而图b和图d则通过SET和RST指令实现同样的效果。 2.多地控制电路 多地控制电路允许在不同位置对同一继电器线圈进行控制。在图例中,X0和X1是一个地方的启动和停止按钮,而X2和X3则是另一个地方的启动和停止按钮。这种设计在大型设备或需要远程控制的场景中尤为实用。 3.互锁控制电路 互锁控制电路确保在多个输出线圈中,每次只能有一个接通。在图例中,X0、X1和X2是启动按钮,X3是停止按钮。通过将Y0、Y1和Y2的常闭触点分别串联到其他两个线圈的控制电路中,实现了互锁功能。 4.顺序启动控制电路 顺序启动控制电路允许按照预定的顺序启动多个设备。在图例中,Y0的常开触点串联在Y1的控制回路中,这意味着Y1的接通必须以Y0的接通为前提。这种设计在需要按照特定顺序启动设备的场景中非常有用。 5.电机正反转电路 电机正反转电路是PLC编程中的一个重要应用。虽然具体的梯形图没有在此展示,但这一电路通常涉及对电机正转和反转的控制,以及必要的互锁和保护措施。 6.集中与分散控制电路 在由多台单机组成的自动线上,集中与分散控制是一种常见的需求。在图例中,x2为选择开关,其触点作为集中控制与分散控制的联锁触点。当X2为ON时,系统处于单机分散启动控制模式;当X2为OFF时,则切换为集中总启动控制模式。在两种模式下,单机和总操作台都可以发出停止命令。 通过了解这些常见的控制电路,我们可以更好地掌握PLC编程的基础知识和实际应用技巧。希望这篇文章能为初学者提供有益的指导和帮助。
1、介绍\x26amp;nbsp; \x26amp;nbsp; \x26amp;nbsp;IBUFDS原语、OBUFDS原语以及IOBUFDS都是
一. FOC之使用Cordic算法求解sin/cos 在进行坐标变换的时候,需要计算角度的正余弦值,而在FPGA中是不能直接进行求解的,需要采用其它的方式进行求解。最常使用的方法有如下两种: 基于ROM的查找表方式: 首先在PC上使用python等高级语言将一个周期内的正余弦值全部计算出来,角度的分辨率根据实际需求来确定,分辨率越精细,那么需要存储ROM的深度就越深,反之约小,然后将计算出来的正余弦值进行一个扩大取整保留数据精度,最后按照角度顺序依次存入ROM中。很明显,通过这种方式计算正余弦值所需要的时钟周期特别短,消耗FPGA的存储资源大。 基于Cordic算法计算: Cordic算法并不直接求解正余弦值,而且通过旋转逼近的思想来进行拟合正余弦函数。该算法拟合的精度非常高,因而被广泛应用于计算机图形学、数字信号处理等领域。 Cordic算法运算过程中,只设计到移位和加减运算,这种运算是非常适合于FPGA的,从面积和计算速度两方面进行综合考虑,最终选择占用面积较小、计算速度略低的Cordic算法来求解sin/cos函数值。 首先如下图所示,假设单位圆上有任意两点Q和P,它们之间的角度关系已知,则它们的XY轴坐标可以表示如下: 将Q点的坐标公式进行展开,然后再将P点的坐标公式代入其中可得: 为了统一变量类型,将cos函数作为公共相提取出来,可以得到如下形式: 可以看出,由P点旋转至Q点后,Q点的最终表达式如上所示,这种形式便是Cordic算法旋转的基本公式了。如果将旋转初始点P设置为一个特殊位置:X轴上,那么很明显Q点的坐标值就是对应旋转角度的正余弦值。 有了上述基本推论,就可以开始真正的进行旋转拟合了。P点直接一步旋转到Q点,肯定是不可取的。如果将P点经过多次旋转,每一次旋转的角度均为特殊角度,tan函数对应的角度值如下,这样就将乘法运算巧妙的转换成了左移运算。 每一次旋转迭代的公式如下,每一次旋转的公式里面还包括了cos函数,这也是不方便在FPGA内计算的,观察表达式可以知道,cos函数在这里起到的作用是对坐标值起到等比例缩放的作用,并不会影响旋转的点对应向量的方向。 所以可以将每一次旋转过程中的cos函数提取出来,最后进行运算,这样就不用参与到每次的旋转计算中去,由于旋转的角度是已知的,所以当确定好旋转次数后,可以将这部分运算提取计算出来,作为一个系数K,K的表达式如下图所示。 接下来就是需要研究每次旋转对应的角度值了,角度对应的tan函数值是已知的,可以通过Python直接求解出对应的角度,然后汇总成如下表格: 通过上表可以看出,当旋转到16次的时候,角度的误差只有千分之一了,而cosβ和K的值均趋近于一个定值,故Cordic旋转拟合是收敛的。在旋转的过程中,可能会出现旋转角度大于目标角度的情况,所以在旋转的过程中还需要增加一个变量d来控制旋转的方向,另外用z来表示旋转到的角度值,最终的旋转迭代公式如下: 最终目标角度的正余弦值如下: FPGA内部实现的过程中,需要对旋转角度值以及K值扩大2^16次方,然后取整,为的是在保持计算精度的情况下,免去数据的小数部分,这些都是固定值,不会根据目标角度的变化而变化,可以在程序中直接定义出来,如下图所示。 另外还要一个关键点需要注意的是迭代公式中使用的是tan函数,需要对目标角度限制在-90°到90°范围内,所以在目标角度输入模块之后,需要先对角度进行一个象限变换,为了处理的方便,本设计将目标角度变换到第一象限内,也就是0°到90°,如下图所示,象限变换不会影响正余弦数组的大小,只会影响其数值的符号,所以在迭代完成后,根据需要对坐标点进行取反运行即可。
一、Intel CvP 简介CvP(Configuration via Protocol)是一种通过协议实现配置的方案, Arria® V,Cyclone® V,Stratix® V,Arria® 10,Cyclone® 10 GX,Stratix® 10,Agilex™都支持这个功...
1、综合读写模块(无FIFO)\x26amp;nbsp; \x26amp;nbsp; \x26amp;nbsp;在前六篇SDRAM系列博文中,我们对S
在PLC(可编程逻辑控制器)编程领域,结构化文本和梯形图是两种最为广泛使用的编程语言。对于初学者或缺乏相关背景的技术人员来说,从梯形图入手学习PLC编程无疑是一条捷径。这是因为,无论PLC的品牌如何,其梯形图的结构都与实际电气控制回路有着惊人的相似性。接下来,我们将介绍几种常见的控制电路,帮助大家回顾并深化对这一领域的理解。 1.启动、保持与停止电路 启动、保持与停止是PLC编程中的基础功能。通过四种不同的梯形图实现方式(如图a、b、c、d所示),我们可以清晰地看到如何实现这一功能。在这些梯形图中,x0代表启动信号,X1代表停止信号。图a和图c利用Y10的常开触点实现自锁保持,而图b和图d则通过SET和RST指令实现同样的效果。 2.多地控制电路 多地控制电路允许在不同位置对同一继电器线圈进行控制。在图例中,X0和X1是一个地方的启动和停止按钮,而X2和X3则是另一个地方的启动和停止按钮。这种设计在大型设备或需要远程控制的场景中尤为实用。 3.互锁控制电路 互锁控制电路确保在多个输出线圈中,每次只能有一个接通。在图例中,X0、X1和X2是启动按钮,X3是停止按钮。通过将Y0、Y1和Y2的常闭触点分别串联到其他两个线圈的控制电路中,实现了互锁功能。 4.顺序启动控制电路 顺序启动控制电路允许按照预定的顺序启动多个设备。在图例中,Y0的常开触点串联在Y1的控制回路中,这意味着Y1的接通必须以Y0的接通为前提。这种设计在需要按照特定顺序启动设备的场景中非常有用。 5.电机正反转电路 电机正反转电路是PLC编程中的一个重要应用。虽然具体的梯形图没有在此展示,但这一电路通常涉及对电机正转和反转的控制,以及必要的互锁和保护措施。 6.集中与分散控制电路 在由多台单机组成的自动线上,集中与分散控制是一种常见的需求。在图例中,x2为选择开关,其触点作为集中控制与分散控制的联锁触点。当X2为ON时,系统处于单机分散启动控制模式;当X2为OFF时,则切换为集中总启动控制模式。在两种模式下,单机和总操作台都可以发出停止命令。 通过了解这些常见的控制电路,我们可以更好地掌握PLC编程的基础知识和实际应用技巧。希望这篇文章能为初学者提供有益的指导和帮助。
本文将使用 ADI 最新的 AD9094-1000EBZ 和 Intel 的 FPGA Arria10 gx Development Kit,搭建基于 10G 的 JESD204B 测试环境。重点阐述如何搭建演示系统,相关的测试demo使用教程,以及相关...
PLC(可编程逻辑控制器)的通信功能涵盖了PLC与PLC之间、PLC与上位计算机之间,以及PLC与其他智能设备之间的数据交换。这些通信连接实质上都是计算机通信的延伸,它们将多个控制任务紧密相连,共同构成一个模块化的控制工程体系。 在PLC与计算机通信的系统中,PLC专注于工业现场的控制任务,而计算机则负责编程、监控和过程管理等任务。这种“集中管理,分散控制”的模式构成了分布式控制系统(DCS)的核心。 以S7-1200 PLC为例,其本体上集成了PROFINET通信接口,这一接口支持以太网和基于TCP/IP的通信标准。通过该接口,S7-1200 PLC可以与编程设备、HMI触摸屏以及其他CPU进行通信。该PROFINET物理接口兼容10Mbps和100Mbps的RJ-45接口,并具备电缆交叉自适应功能,因此无论是标准还是交叉的以太网线,均可用于该接口。 在数据传输形式上,通信方式主要分为串行通信和并行通信。串行通信通过一对导线连接数据的发送方和接收方,每次发送和接收一个二进制位。这种通信方式的特点是效率较低,但控制相对简单,且电缆数量少,成本低。与之相反,并行通信则通过单独的导线传输一个8位(或16位、32位)数据的每一个二进制位,每次发送和接收多个位。并行通信的效率较高,但电缆数量多,成本也相对较高。 在串行通信中,异步通信和同步通信是两种基本的信息传输方式。异步通信以起止方式发送数据,每个数据帧包含起始位、数据位、校验位(可选)和停止位。这种通信方式硬件简单,成本低,适用于通信速率较低的数据通信。而同步通信则在传递数据时同时传送时钟同步信号,按既定的时钟采集数据。同步通信效率高,但硬件复杂,成本高,适用于通信速率较高的数据通信。 此外,根据数据传输的方向,通信方式还可以分为单工、全双工和半双工。单工通信数据只能单向传输,一般用于数据输出。全双工通信数据可以双向传输,且同一时刻既能发送数据也能接收数据,通信成本较高。半双工通信则与全双工类似,数据可以双向传输,但同一时刻只能发送或接收数据,不能同时进行,通信成本相对较低。 在PLC通信网络中,还有一些常见的术语需要了解。站是指可以进行数据通信、连接外部输入/输出的硬件设备,每个PLC都可以被视为一个站。主站是PLC通信网络中进行数据连接的系统控制站,负责设置整个网络的参数。从站则是除了主站以外的站,远程设备站则是能同时处理位和字的从站。 综上所述,PLC的通信功能是其实现自动化控制的重要基础。通过选择合适的通信方式和协议,可以构建高效、可靠的自动化控制系统。
对于非源同步的低速串行数据通信场景,会存在通信对端的时钟频率相对有偏差的情况,导致数据接收端不能正确的采样;这时候利用Altera中高端器件的高速收发器或者LVDS serdes中的SOFT-CDR及DPA功能便能解决此问题;但...