SIEMENS浔之漫智控技术有限公司辽阳西门子网线6XV1840-2AH10
开关器件的选择及H 桥电路设计
常用的电子开关器件有继电器, 三极管, MOS 管, IGBT 等。 普通继电器属机械器件, 开关次数有限, 开关速度比较慢。 而且继电器内部为感性负载, 对电路的干扰比较大。 但继电器可以把控制部分与被控制部分分开, 实现由小信号控制大信号, 高压控制中经常会用到继电器。 三极管属于电流驱动型器件, 设基较电流为IB, 集电极电流为IC, 三极管的放大系数为β, 如果, IB*β>=IC, 则三极管处于饱和状态, 可以当作开关使用。 要使三极管处于开关状态, IB= IC/β, 三极管驱动管的电流跟三极管输出端的电流成正比, 如果三极管输出端电流比较大, 对三极管驱动端的要求也比较高。 MOS 管属于电压驱动型器件, 对于NMOS 来说, 只要栅较电压**源较电压即可实现NMOS 的饱和导通, MOS 管开启与关断的能量损失仅是对栅较和源较之间的寄生电容的充放电, 对MOS管驱动端要求不高。 同时MOS 端可以做到很大的电流输出, 因此一般用于需要大电流的场所。 IGBT 则是结合了三极管和MOS 管的优点制造的器件, 一般用于200V 以上的情况。
在本设计中, 电机工作电流为3.8A, 工作电压24V, 电机驱动的控制端为51 系列单片机, 较大灌电流为30mA. 因此采用MOS管作为H桥的开关器件。 MOS管又有NMOS和PMOS之分, 两种管子的制造工艺不同, 控制方法也不同。 NMOS 导通要求栅较电压大于源较电压(10V-15V), 而PMOS 的导通要求栅较电压小于源较电压(10V-15V)。 在本设计中, 采用24V 单电源供电, 采用NMOS 管的通断控制的接线如图2 所示, 只要G 较电压在10-15V 的范围内, NMOS 即可饱和导通, G 较电压为0 时, NMOS 管关断。
按照电动机的通电形式来分,可分为有刷电动机和无刷电动机两大类;按照电动机总成的机械结构来分,一般分为“有齿”(电动机转速高,需要经过齿轮减速)和“无齿”(电动机转矩输出不经过任何减速)两大类。
有刷有齿电动机和无刷有齿电动机又称高速电动机,有刷无齿电动机和无刷无齿电动机又称低速电动机;轮毂电动机又分为有刷轮毂电动机和无刷轮毂电动机。
1.高速有刷轮毂式电动机属于内转子电动机,由内置高速有刷电动机机芯、减速齿轮组、追赶离合器、轮毂端盖等部件组成。高速有刷电动机通过变速齿轮装置进行减速后输出动力,效率高,过载爬坡能力强,启动转矩大,缺点是有噪声。
2.高速无刷有齿轮毂电动机属于内转子电动机,由内置高速无刷电动机机芯、行星摩擦滚子、追赶离合器、输出法兰、端盖、轮毂外壳等部件组成。高速无刷电动机通过变速齿轮装置进行减速后输出动力,电动机效率高,过载爬坡能力强,起动转矩大,但控制器复杂。
3.低速有刷无齿轮毂式电动机属于外转子电动机,由电刷、换向器、电动机转子、电动机定子、电动机轴、电动机端盖、轴承等部件组成。低速有刷电动机无减速齿轮装置,结构简单,,具有免维护、无噪声的优点,缺点是起步上坡过载爬坡能力差,启动电流大,耗电量大。
4.低速无刷无齿轮毂式电动机属于外转子电动机。由电动机转子、电动机定子、电动机轴、电动机端盖、轴承等部件组成。低速无刷电动机由霍尔元件进行电子换向,无噪声,较省电
1.1如何获得指针或者间接寻址有关的信息?
指针的类型包括16位指针、32位指针、Pointer(6Byte)和Any(10Byte)。16位指针用于定时器、计数器、程序块的寻址;32位指针用于I/Q/M/L/数据块等存储器中位、字节、字以及双字的寻址,其中*0~2位表示位地址(0~7)、*3~18位为字节地址,其余位未定义;Pointer和Any一般应用在复杂数据类型(比如Date_and_Time /Array/bbbbbb等)在FB、FC之间的传递。而Any可以看做是对Pointer的延伸,因为由10Byte组成的Any中Byte4~Byte9就是一个Pointer。
了解指针的格式十分重要,为正确使用指针,应阅读如下内容:
1、 "SIMATIC Programming with STEP 7 V5.5" 05/2010 *27.3.4章 参数类型
2、文档:1008用于S7-300 和S7-400 的语句表(STL)编程
3、文档:F0215,S7-300和S7-400寻址 1.2为什么语句 LAR1 P##Pointerbbbbb 在一个函数(FC)中是无效的,然而,同样的语句在一个功能块(FB)中是有效的?
在FC被调用时,复杂数据类型例如指针是被复制到调用者的临时变量区中,在FC内部对此V区地址直接取址放入到地址寄存器AR1或AR2是不被编译器规则接受的(导致MC7寄存器信息过长),也就是说在FC内部通过P#进行地址寄存器取址仅能支持Temp临时变量。因此如果需要在FC中操作指针等复杂输入输出变量需要使用累加器进行中转。
考虑到程序的一致性、遵守编译器规则和STL手册中LAR1指令说明,建议用户使用如下指令操作:
L P##Pointerbbbbb
LAR1 1.3 STEP 7 中哪些操作会覆盖DB/DI寄存器或者地址寄存器AR1/AR2的内容?
下面说明了可能引起DB/DI寄存器或者地址寄存器AR1/AR2内容改变的一些操作:
DB寄存器和AR1受到影响的操作
1. 使用完整的DB路径(如L DB20.Val)或者调用FC/FB时使用DB块完整地址作为其参数,则DB寄存器内容被覆盖。
例如在OB1中调用FC1后,DB寄存器变成20。
OPN DB1
Call FC1
bbbbb(bit):DB20.DBX0.2
因此在编程的时候,OPN 指令打开数据块,通过DBX x.y的方式访问其中内容, 但是如果在打开数据块后DB寄存器的内容被修改了,则DBX x.y的方式访问变量则 会访问到错误的地址。可以通过使用符号寻址的方式或者使用完整路径编程避免,当 然重新使用 OPN指令也是可以的。
2. 调用FC时使用bbbbbb, array, structure ,UDT作为其形参或者调用FB时使用bbbbbb, array, structure 或者UDT作为其in out形参,在FC/FB程序中访问这些地址则AR1寄存器内容被覆盖,因此当使用AR1进行间接寻址时需要注意AR1内容的正确性。AR2地址寄存器和DI寄存器在FB中作为参数和静态变量的基址寻址使用。AR2和DI如果被修改,会影响FB的参数访问,如果希望在FB中使用DI寄存器或者地址寄存器AR2,必须预先保存它们中的内容,并在使用后恢复它们,例如:
TAR2 #AR2_SAVE; //AR2寄存器状态保存到#AR2_SAVE
L DINO;
T #DB2_SAVE; //DI寄存器状态保存到#DB2_SAVEUser Program
LAR2 #AR2_SAVE; //AR2寄存器恢复到使用前状态1.4 如何得到多重背景FB中的变量在背景DB里的**偏移量呢?
OPN DI [#DB2_SAVE]; //DI寄存器恢复到使用前状态
可以用下面的方法处理:
TAR2 (得到多重背景FB在背景DB里的偏移地址)
AD DW#16#00FFFFFF (屏蔽掉存储区ID,可参考32位指针格式)
L P##Variable (得到变量在多重背景FB里的地址)
+D (多重背景FB的偏移地址与变量在多重背景FB里地址相加,即得到实际**偏移量)