西门子PLC子程序的作用
子程序常用于需要多次反复执行相同任务的地方,只需要写一次子程序,别的程序在需要子程序的时候调用它,而*重写该程序。子程序的调用是有条件的,未调用它时不会执行子程序中的指令,因此使用子程序可以减少扫描时间。
使用子程序可以将程序分成容易管理的小块,使程序结构简单清晰,易于查错和维护。如果子程序中只引用参数和局部变量,可以将子程序移植到其他项目。为了移植子程序,应避免使用全局符号和变量,如I、Q、M、SM、Al、AQ、V、T、C、S、AC等存储器中的**地址。
西门子PLC子程序的创建方法
可采用下列方法创建PLC子程序:在“编辑”菜单中选择“插入→子程序”;在程序编辑器视窗中按鼠标右键,从弹出菜单中选择“插入→子程序”。程序编辑器将从原来的POU显示进入新的子程序,程序编辑器底部将出现标志新的子程序的新标签,在程序编辑器窗口中可以对新的子程序编程。可以使用该子程序的局部变量表定义参数,各子程序较多可以定义16个IN、OUT参数。用右键双击指令树中的子程序或中断程序的图标,在弹出的窗口中选择“重新命名”,可修改它们的名称。
对于立即写(Immediate Write)功能,必须如下面举例所示,生成西门子plc的符号程序段。
6ES7312-5BF04-0AB0 | CPU312C,32K内存 10DI/6DO |
6ES7313-5BG04-0AB0 | CPU313C,64K内存 24DI/16DO / 4AI/2AO |
6ES7313-6BG04-0AB0 | CPU313C-2PTP,64K内存 16DI/16DO |
6ES7313-6CG04-0AB0 | CPU313C-2DP,64K内存 16DI/16DO |
6ES7 313-6CF03-0AM0 | CPU313C-2DP,64K内存 16DI/16DO组合件(6ES7 313-6CF03-0AB0+6ES7 392-1AM00-0AA0) |
6ES7 314-1AG13-0AB0 | CPU314,96K内存 |
6ES7 314-1AG14-0AB0 | CPU314,128K内存 |
6ES7314-6BH04-0AB0 | CPU314C-2PTP 96K内存 24DI/16DO / 4AI/2AO |
6ES7314-6CH04-0AB0 | CPU314C-2DP 96K内存 24DI/16DO / 4AI/2AO |
6ES7 314-6EH04-0AB0 | CPU314C-2PN/DP 192K内存/24DI/16DO/ 4AI/2AO |
6ES7 314-6CG03-9AM0 | CPU314C-2DP 96K内存 24DI/16DO / 4AI/2AO组合件(6ES7 314-6CG03-0AB0+6ES7 392-1AM00-0AA0*2) |
6ES7 315-2AG10-0AB0 | CPU315-2DP, 128K内存 |
6ES7 315-2AH14-0AB0 | CPU315-2DP, 256K内存 |
6ES7315-2EH14-0AB0 | CPU315-2 PN/DP, 256K内存 |
6ES7317-2AK14-0AB0 | CPU317-2DP,512K内存 |
对于有时间限制的应用,可以以比每OB1 扫描循环一次的正常情况快的速度,将一个数字量输出的当前状态发送到输出模板。立即写功能可以在扫描立即写逻辑程序级的同时,将一个数字量输出写入输出模板。否则,当 Q存储区使用 P存储状态更新时,必须等到下一OB1扫描循环结束。
为了将一个输出立即写入输出模板,应使用外围输出(PQ)存储区,而不使用输出(Q)存储区。外围输出存储区可以作为一个字节、一个字或一个双字读取。因此,通过西门子plc的一个线圈元素,不能更新一个单独的数字量输出。为了将一个数字量输出的状态立即写入输出模板, 包含相关位的Q存储器的字节、 字或双字可以有条件地复制到相应的PQ存储器中 (直接输出TPC1062K的模板地址)。
? 由于 Q 存储器的整个字节被写入输出模板,当进行立即输出时,该字节中的所有输出位都将被更新。
? 如果一个输出位在不应发送到输出模板中的整个程序中出现中间状态(1/0),立即写功能会造成危险情况(输出瞬时脉冲)。
? 作为一般设计规则,在一个TPC1262HI的程序中,外部输出模板只能认为是一个线圈。如果遵守该设计规则,可以避免使用立即输出时的大多数潜在问题。