西門子的S7-200的程序結(jié)構(gòu)
過(guò)程映像輸入/輸出(I/Q)、變量存儲(chǔ)器V、內(nèi)部存儲(chǔ)器位M、定時(shí)器T、計(jì)數(shù)器C等屬于全局變量。S7-200的程序組織單元(ProgramOrganizationalUnit,簡(jiǎn)稱為POU)包括主程序、子程序和中斷程序。每個(gè)POU均有自己的64字節(jié)局部變量,局部變量只能在它所在的POU中使用。與此相反,全局變量可以在各POU中使用。
下面是子程序可以使用的局部變量:
1)TEMP(臨時(shí)變量)是暫時(shí)保存在局部數(shù)據(jù)區(qū)中的變量。只有在執(zhí)行該P(yáng)OU時(shí),定義的臨時(shí)變量才被使用,POU執(zhí)行完后,不再保存臨時(shí)變量的數(shù)值。
2)IN是由調(diào)用它的POU提供的輸入?yún)?shù)。
3)OUT是返回給調(diào)用它的POU的輸出參數(shù)(子程序的執(zhí)行結(jié)果)。
4)IN_OUT是輸入_輸出參數(shù),其初始值由調(diào)用它的POU傳送給子程序,并用同一變量將子程序的執(zhí)行結(jié)果返回給調(diào)用它的POU。
主程序和中斷程序的局部變量中只有臨時(shí)變量TEMP。
具有輸入、輸出參數(shù)和局部變量的子程序易于實(shí)現(xiàn)結(jié)構(gòu)化編程,對(duì)于長(zhǎng)期生產(chǎn)同類設(shè)備或生產(chǎn)線的廠家尤為有用。這些廠家的編程人員為設(shè)備的各組件或工藝功能編寫(xiě)了大量的通用的子程序。即使不知道子程序的內(nèi)部代碼,只要知道子程序的功能和輸入、輸出參數(shù)的意義,就可以通過(guò)程序之間的調(diào)用快速“組裝”出滿足不同用戶要求的控制程序。就好像用數(shù)字集成電路芯片組成復(fù)雜的數(shù)字電路一樣。
子程序如果沒(méi)有輸入、輸出參數(shù),它和調(diào)用它的程序之間沒(méi)有清晰的接口,很難實(shí)現(xiàn)結(jié)構(gòu)化編程。
子程序如果沒(méi)有局部變量,它和調(diào)用它的程序之間只能通過(guò)全局變量來(lái)交換數(shù)據(jù),子程序內(nèi)部也只能使用全局變量。將子程序和中斷程序移植到別的項(xiàng)目時(shí),需要重新統(tǒng)一安排它們使用的全局變量,以保證不會(huì)出現(xiàn)地址沖突。當(dāng)程序很復(fù)雜,子程序和中斷程序很多時(shí),這種重新分配地址的工作量非常大。
如果子程序和中斷程序有局部變量,并且它們內(nèi)部只使用局部變量,不使用全局變量,因?yàn)榕c其他POU沒(méi)有地址沖突,不需作任何改動(dòng),就可以將子程序移植到別的項(xiàng)目中去。
1756CPR2
1756DH485
1756DHRIO
1756DNB
1756DPALEN
1756EN2T
1756ENBT
1756EWEB
1756HSC
1756HYD02
1756IA16
1756IA16I
1756IA32
1756IA8D
1756IB16
1756IB16D
1756IB16I
1756IB16ISOE
1756IB32
1756IC16
1756IF16
1756IF4FXOF2F
1756IF6CIS
1756IF6I
1756IF8
1756IF8H
1756IG16
1756IH16I
1756IH16ISOE
1756IM16I
1756IN16
1756IR6I
1756IT6I
1756IT6I2
1756IV16
1756IV32
1756JMPR
1756L55
1756L55M12
1756L55M13
1756L55M14
1756L55M16
1756L55M22
1756L55M23
1756L55M24
1756L60M03SE
1756L61
1756L61S
1756L62
1756L62S
1756L63
1756L64
1756L65
1756LSP
1756M02AE
1756M02AS
1756M03SE
1756M08SE
1756M12
1756M13
1756M14
1756M16
1756M16SE
1756M22
1756M23
1756M24
1756N2
1756OA16
1756OA16I
1756OA8
1756OA8D
1756OA8E
1756OB16D
1756OB16E
1756OB16I
1756OB16IS
1756OB32
1756OB8
1756OB8EI
1756OB8I
1756OC8
1756OF4
1756OF6CI
1756OF6VI
1756OF8
1756OF8H
1756OG16