SIEMENS浔之漫智控技术有限公司西门子模块6ES7510-1DK03-0AB0型号介绍
控制系统构成
1. 本电气控制系统共有5个实轴,1个虚轴,5个凸曲线。总共的工艺对象,一共是11个。西门子新一代优秀运动控制CPU —— SIMATIC CPU315T-2 DP可以同时处理较多32个工艺对象,完成复杂的逻辑控制,通讯任务。因此该项目的**控制器,我们决定选用西门子新一代基于S7-300 PLC的优秀运动控制器 “SIMATIC CPU315T-2 DP”。这一决定,不仅给我们当前开发项目降、降低项目开发周期带来可能,同时也为日后设备的较新、系统维护带来多便利。
2. SIMATIC CPU315T-2 DP有两个通讯口,其中一个是常规的MPI/DP通讯口,用来连接编程器、上位机、触摸屏、扩展ET200组件;另一个通讯口是Profibus DP(DRIVE)口,符合Profidrive协议,一个快速和优化的DP报文,专门用来连接驱动器工艺组件,通讯速度较高可达12M bits/sec,DP通讯采用的是Profibus DP ISOCHRONE MODE(等时同步)模式。ISOCHRONE MODE是PROFIBUS DP 通讯的新技术,它可以使PROFIBUS DP 的总线通讯周期时间保持恒定,从而可以大大提高通讯的稳定性, 提高传动控制系统的稳定性和精度。用于完成运动控制工艺任务的模块IM174和ET200均连在Profibus DP(DRIVE)口下,以满足运动控制工艺的要求。另外一个通讯口是标准的MPI/DP口,速度可达12M bits/sec。用于连接到上位机PC、HMI和其他标准的DP 从站。用户可以通过MPI/DP通讯口,连接标准的ET200进行SIMATIC S7-300 PLC功能的扩展。组成控制系统方案,非常便利。
3. SIMATIC CPU315T-2 DP是属于西门子SIMATIC T-CPU中一款性价比非常适中的,集成了西门子Simotion运动控制器和SIMATIC 逻辑控制器于一体( T-CPU 同时具有西门子两大优秀控制器内核(SIMATIC 和 SIMOTION)的新一代自动控制产品)。并且,这两个的控制器内核之间的通讯,是由T-CPU的硬件来**实施,勿需要用户额外编制通讯程序,节省了用户的开发成本,缩短了系统的编程、调试和维护时间。
4. 所有适用于SIMATIC S7-300/400 PLC的STEP 7 编程语言,例如,LAD, STL, FBD, S7-SCL, CFC, SFC, S7-Graph,就是SIMATIC T-CPU的编程语言。SIMATIC PLC工程师多年在现场积累,经过现场调试考验的PLC程序工艺块(FC/FB),经过简单的拷贝、粘贴,就可以继续在SIMATIC T-CPU中继续得到使用。
5. 位于STEP 7编程库中的T-CPU运动控制**指令功能块,可以帮助用户勿需要精通运动控制系统的知识,就可以通过简单调用运动控制指令功能块,完成复杂的运动控制任务。同时,可以借助强大的SIMATIC 平台,顺利完成SIMATIC HMI操作画面的开发,SIMATIC NET通讯工作的开发,远程诊断维护工作的开发,等等。
6. 设备控制系统开发过程中的,电气工程师所面临的工作内容:SINAMICS S120驱动器参数的调试,运动控制程序的编制,PLC逻辑控制程序的编制。通过SIMATIC T-CPU,使电气工程师完成这些控制任务时,都是在工程师所熟悉的STEP 7 软件平台上面完成。
7. SIMATIC T-CPU后面适合连接的驱动器类型非常宽泛,不仅仅是西门子伺服驱动器,还可以非常便捷地联结西门子的变频器,步进驱动器,液压伺服比例阀,甚至于非西门子的第三方驱动器。这对于我们OEM厂家而言,日后需要降低设备生产成本,带来可能。
8. SIMATIC CPU315T-2 DP 本体集成了4路快速Bero开关量输入,8路Cam快速开关量输出。项目中用到2路输入,作为铺网小车和储网小车的参考点输入。由于所有的运动控制工艺,均没有用到 CAM 快速开关量输出点,为降低设备开发成本,把CPU本体集成的数字量输出点,通过调用STEP 7的指令功能块FB〝MC_Writeperiphery〞,对集成的数字量输出点操作,其效果相当于普通的PLC 逻辑控制I/O点使用,非常方便。
9. 驱动器的选择,采用了西门子较新推出的SINAMICS S120 伺服控制器。SIMATIC CPU315T-2 DP集成的SIMOTION控制器内核,通过PROFIBUS-DP(DRIVER)通讯口的等时同步通讯模式,轻松实现Profibus DP总线形式、分布式结构的运动控制系统,电气控制柜的接线、布局,均非常简单。伺服电机选用了西门子集成DRIVE-CLIQ口的1FK7 系列电机,组态时通S7T Config调试软件(S7T Config工具,不仅集成了SINAMICS调试软件Starter,而且,可以非常人性化地定义所有用户所需要的工艺对象,机械系参数,驱动器的动态特性调试参数,等等),使用自动配置方式,既可以自动将所有西门子伺服电机及驱动器参数配置数据读上来,免去了繁琐的驱动器参数配置过程。(参见图四,系统配置图)
ATPCS规则:(ARM、thumber程序调用规范)
为了使单独编译的C语言程序和汇编程序之间能够相互调用,必须为子程序之间的调用规定一定的规则.ATPCS就是ARM程序和THUMB程序中子程序调用的基本规则。
基本ATPCS规定了在子程序调用时的一些基本规则,包括下面3方面的内容:
各寄存器的使用规则及其相应的名称。数据栈的使用规则。参数传递的规则。1. 寄存器的使用必须满足下面的规则:
1)子程序间通过寄存器R0一R3来传递参数,这时,寄存器R0~R3可以记作A1-A4。被调用的子程序在返回前*恢复寄存器R0~R3的内容。
2)在子程序中,使用寄存器R4~R11来保存局部变量.这时,寄存器 R4 ~ R11可以记作V1 ~ V8。如果在子程序中使用到了寄存器V1~V8中的某些寄存器,子程序进入时必须保存这些寄存器的值,在返回前必须恢复这些寄存器的值;对于子程序中没有用到的寄存器则不必进行这些操作。在Thumb程序中,通常只能使用寄存器R4~R7来保存局部变量。
3)寄存器R12用作过程调用时的临时寄存器(用于保存SP,在函数返回时使用该寄存器出栈), 记作ip。在子程序间的连接代码段中常有这种使用规则。
4)寄存器R13用作数据栈指针,记作sp。在子程序中寄存器R13不能用作其他用途。寄存器sp在进入子程序时的值和退出子程序时的值必须相等。
5)寄存器R14称为连接寄存器,记作lr。它用于保存子程序的返回地址。如果在子程序中保存了返回地址,寄存器R14则可以用作其他用途。
6)寄存器R15是程序计数器,记作pc。它不能用作其他用途。
ATPCS下ARM寄存器的命名:
寄存器别名功能R0a1工作寄存器R1a2工作寄存器R2a3工作寄存器R3a4工作寄存器R4v1必须保护;局部变量寄存器R5v2必须保护;局部变量寄存器R6v3必须保护;局部变量寄存器R7v4必须保护;局部变量寄存器R8v5必须保护;局部变量寄存器R9v6必须保护;局部变量寄存器R10sl栈限制R11fp帧指针R12ip指令指针R13sp栈指针R14lr连接寄存器2、堆栈使用规则:
ATPCS规定堆栈为FD类型,即满递减堆栈。并且堆栈的操作是8字节对齐。
而对于汇编程序来说,如果目标文件中包含了外部调用,则必须满足以下条件:
外部接口的数据栈一定是8位对齐的,也就是要保证在进入该汇编代码后,直到该汇编程序调用外部代码之间,数据栈的栈指针变化为偶数个字;
在汇编程序中使用PRESERVE8伪操作告诉连接器,本汇编程序是8字节对齐的.
3、参数的传递规则:
根据参数个数是否固定,可以将子程序分为参数个数固定的子程序和参数个数可变的子程序.这两种子程序的参数传递规则是不同的.
1.参数个数可变的子程序参数传递规则
对于参数个数可变的子程序,当参数不**过4个时,可以使用寄存器R0~R3来进行参数传递,当参数**过4个时,还可以使用数据栈来传递参数.
在参数传递时,将所有参数看做是存放在连续的内存单元中的字数据。然后,依次将各名字数据传送到寄存器R0,R1,R2,R3; 如果参数多于4个,将剩余的字数据传送到数据栈中,入栈的顺序与参数顺序相反,即最后一个字数据先入栈.
按照上面的规则,一个浮点数参数可以通过寄存器传递,也可以通过数据栈传递,也可能一半通过寄存器传递,另一半通过数据栈传递。
举例:
void func(a,b,c,d,e)
a -- r0
b -- r1
c -- r2
d -- r3
e -- 栈
2.参数个数固定的子程序参数传递规则对于参数个数固定的子程序,参数传递与参数个数可变的子程序参数传递规则不同,如果系统包含浮点运算的硬件部件。
浮点参数将按照下面的规则传递:(1)各个浮点参数按顺序处理;(2)为每个浮点参数分配FP寄存器;
分配的方法是,满足该浮点参数需要的且编号较小的一组连续的FP寄存器.**个整数参数通过寄存器R0~R3来传递,其他参数通过数据栈传递.
3、子程序结果返回规则1.结果为一个32位的整数时,可以通过寄存器R0返回.2.结果为一个64位整数时,可以通过R0和R1返回,依此类推.3.对于位数更多的结果,需要通过调用内存来传递.
举例:
使用r0 接收返回值int func1(int m, int n)
m -- r0
n -- r1
返回值给 r0「为什么有的编程规范要求自定义函数的参数不要**过4个?」答:因为参数**过4个就需要压栈退栈,而压栈退栈需要增加很多指令周期。对于参数比较多的情况,我们可以把数据封装到结构体中,然后传递结构体变量的地址