plc的程式語言有哪三種(plc程式設計程式碼指令表)

一、西門子PLC程式語言

PLC的程式語言包括以下五種:梯形圖語言(LD)、指令表語言(IL)、功能模組圖語言(FBD)、順序功能流程圖語言(SFC)及結構化文字語言(ST)。不同型號的PLC程式設計軟體對以上五種程式語言的支援種類是不同的,早期的PLC僅僅支援梯形圖程式語言和指令表程式語言。目前的PLC對梯形圖(LD)、指令表(STL)、功能模組圖(FBD)程式語言都以支援。比如,SIMATIC STEP7 MicroWIN V3.2。

(1)梯形圖

在西門子PLC實際程式設計使用情況中中,梯形圖語言是PLC程式設計中最常用的程式語言。它是與繼電器線路類似的一種程式語言。由於電氣設計人員對繼電器控制較為熟悉,因此,梯形圖程式語言得到了廣泛的歡迎和應用。

梯形圖程式語言的特點是:與電氣操作原理圖相對應,具有直觀性和對應性;與原有繼電器控制相一致,電氣設計人員易於掌握。梯形圖程式語言與原有的繼電器控制的不同點是,梯形圖中的能流不是實際意義的電流,內部的繼電器也不是實際存在的繼電器,應用時,需要與原有繼電器控制的概念區別對待。

(2)指令表

松下PLC程式設計

指令表程式語言是與組合語言類似的一種助記符程式語言,和組合語言一樣由操作碼和運算元組成。在無計算機的情況下,適合採用PLC手持程式設計器對使用者程式進行編制。同時,指令表程式語言與梯形圖程式語言圖一一對應,在PLC程式設計軟體下可以相互轉換。

指令表表程式語言的特點是:採用助記符來表示操作功能,具有容易記憶,便於掌握;在手持程式設計器的鍵盤上採用助記符表示,便於操作,可在無計算機的場合進行程式設計設計;與梯形圖有一一對應關係。其特點與梯形圖語言基本一致。

(3)功能模組圖語言(FBD)

功能模組圖語言是與數字邏輯電路類似的一種PLC程式語言。採用功能模組圖的形式來表示模組所具有的功能,不同的功能模組有不同的功能。

功能模組圖程式語言的特點:功能模組圖程式設計語言的特點是:以功能模組為單位,分析理解控制方案簡單容易;功能模組是用圖形的形式表達功能,直觀性強,對於具有數字邏輯電路基礎的設計人員很容易掌握的程式設計;對規模大、控制邏輯關係複雜的控制系統,由於功能模組圖能夠清楚表達功能關係,使程式設計除錯時間大大減少。

(4) 順序功能流程圖語言(SFC)

順序功能流程圖語言是為了滿足順序邏輯控制而設計的程式語言。程式設計時將順序流程動作的過程分成步和轉換條件,根據轉移條件對控制系統的功能流程順序進行分配,一步一步的按照順序動作。每一步代表一個控制功能任務,用方框表示。在方框內含有用於完成相應控制功能任務的梯形圖邏輯。這種程式語言使程式結構清晰,易於閱讀及維護,大大減輕程式設計的工作量,縮短程式設計和除錯時間。用於系統的規模校大,程式關係較複雜的場合。

順序功能流程圖程式語言的特點:以功能為主線,按照功能流程的順序分配,條理清楚,便於對使用者程式理解;避免梯形圖或其他語言不能順序動作的缺陷,同時也避免了用梯形圖語言對順序動作程式設計時,由於機械互鎖造成使用者程式結構複雜、難以理解的缺陷;使用者程式掃描時間也大大縮短。

(5)結構化文字語言(ST)

結構化文字語言是用結構化的描述文字來描述程式的一種程式語言。它是類似於高階語言的一種程式語言。在大中型的PLC系統中,常採用結構化文字來描述控制系統中各個變數的關係。主要用於其他程式語言較難實現的使用者程式編制。

結構化文字程式語言採用計算機的描述方式來描述系統中各種變數之間的各種運算關係,完成所需的功能或操作。大多數PLC製造商採用的結構化文字程式語言與BASIC語言、PASCAL語言或C語言等高階語言相類似,但為了應用方便,在語句的表達方法及語句的種類等方面都進行了簡化。

結構化文字程式語言的特點:採用高階語言進行程式設計,可以完成較複雜的控制運算;需要有一定的計算機高階語言的知識和程式設計技巧,對工程設計人員要求較高。直觀性和操作性較差。

在PLC控制系統設計中,要求設計人員不但對PLC的硬體效能瞭解外,也要了解PLC對程式語言支援的種類。

二、西門子PLC指令表功能彙總

指令( 英文全稱意思 ) :指令含義

1、LD ( Load 裝載 ) :動合觸點

2、LDN ( Load Not 不裝載 ) : 動斷觸點

3、A ( And 與 動合) : 用於動合觸點串聯

4、AN ( And Not 與 動斷 ) :用於動斷觸點串聯

5、O ( Or 或 動合 ) :用於動合觸點並聯

6、ON ( Or Not 或 動斷 ) : 用於動斷觸點並聯

7、= ( Out 輸出 ) : 用於線圈輸出

8、OLD ( Or Lode): 塊或

9、ALD ( And Lode): 塊與

10、LPS ( Logic Push ) :邏輯入棧

11、LRD ( Logic Read ) :邏輯讀棧

12、LPP ( Logic Pop ) :邏輯出棧

13、NOT ( not 並非 ) :非

14、NOP ( No Operation Performed ) : 無操作

15、AENO ( And ENO ) :指令盒輸出端ENO相與

16、S ( Set 放置 ) : 置1

17、R ( Reset 重置,清零 ) :清零

18、P ( Positive) :上升沿

19、N ( Negative) :下降沿

20、TON ( On_Delay Timer ) :接通延時定時器21、TONR ( Retentive On_Delay Timer ) : 有記憶接通延時定時器

22、TOF ( Off_ Delay Timer ) :斷開延時定時器

23、CTU ( Count Up ) : 增計數器

24、CTD ( Count Down ) : 減計數器

25、CTUD ( Count Up/ Count Down ) :增減計數器

26、ADD ( add 加 ) : 加註意

//ADD_I (_ I 表示整數)

ADD_DI( DI表示雙位元組整數)

ADD-R (R 表示實數)

它們都是加運算只是數的大小不同。

27、SUB ( Subtract 減去,減少) :減

28、MUL ( Multiply ) : 乘

29、DIV ( Divide ) : 除

30、SQRT ( Square root ) : 求平方根

31、LN ( Napierian Logarithm 自然對數 ) : 求自然對數

32、EXP ( Exponential 指數的 ) : 求指數

33、INC_B ( Increment 增加 ) : 增1

//其中_B代表資料型別 還有W(位元組)、DW雙字後面幾個都是這樣的。34、DEC_B ( Decrement 減少 ) : 減1

35、WAND_B ( Word and 與命令 ) :邏輯與

36、WOR_B ( Word or 或命令) : 邏輯或

37、WXOR_B ( Word exclusive or 異或命令) :邏輯異或

38、INV_B ( Inverse 相反 ) : 取反

39、MOV _B ( Move 移動 ) : 資料傳送

40、BLKMOV_B ( Block Move 塊移動) :資料塊傳送

41、SWAP ( Swap 交換 ) : 位元組交換

42、FILL ( Fill 填充 ) : 字填充

43、ROL_B ( Rotate Left 迴圈 向左) :迴圈左移位

44、ROR_B ( Rotate Right 迴圈 向右) : 迴圈右移位

45、SHL_B ( Shift Right 移動向左) :左移動

46、SHR_B ( Shift Right 移動向右 ) : 右移動

47、SHRB ( Shift buffer 移動快取) :暫存器移位

48、STOP ( Stop 停止 ) : 暫停

49、END /MEND ( End /Mend ) : 條件/無條件結束

50、WDR ( Watch dog reset ) : 看門狗復位

51、JMP ( Jump 跳) :跳轉

52、LBL ( Label 位置 ) : 跳轉標號

53、FOR ( For 迴圈 ) : 迴圈

54、NEXT ( Next 再下去) :迴圈結束

55、SBR ( Subprogram Regulating子程式控制 ) : 子程式呼叫

56、SBR_T ( Subprogram Regulating Take ) : 帶引數子程式呼叫

57、SCR ( Sequence Control 順序控制 ) : 步開始

58、SCRT ( Sequence Control Transfer 順序控制轉移 ) : 步轉移

59、SCRE ( Sequence Control End 順序控制結束 ) : 步結束

60、AD_T_TBL ( Add data to table 新增資料到表格中) : 填資料表

61、FIFO ( First in First out 先進先出 ) : 先進先出

62、LIFO ( Last in First out 後進先出 ) :後進先出

63、TBL_FIND ( Table Find 表格查詢 ) : 表查詢

64、BCD_I ( Binary Coded Decimal _I 二進位制編碼的十進位制 ) :BCD 碼轉整數

65、I_BCD ( I_ Binary Coded DecimaL ) :整數轉BCD碼

66、B_I ( Bit to int ) :位元組轉整數

67、I_B ( int to bit ) :整數轉位元組

68、DI_I ( Double int to int ) :雙整數轉整數

69、I_DI ( int to double int ) :整數轉雙整數

70、ROUND ( Round 取整 ) : 實數轉雙整數

71、TRUNC ( Trunc 擷取 ) :轉換32位實數整數部分(捨去小數取整)

72、DI_I (double int to int ) :雙整數轉實數

73、ENCO ( Encode 編碼) : 編碼

74、DECO ( Decode 譯碼) :譯碼

75、SEG ( Segment decoder分斷譯碼器 ) : 七段顯示譯碼器

76、ATH ( ASCII碼 turn hex ) : ASCII碼轉16進位制

77、HTA ( Hexadecimal to ascii) : 16進位制轉ASCII碼

78、ITA ( // int to ascii) : 整數轉ASCII碼

79、DTA ( // double int to ascii ) : 雙整轉ASCII碼

80、RTA ( // real to ascii) : 實數轉ASCII碼

81、ATCH (//attach ) : 中斷連線

82、DTCH ( Depatch ) : 中斷分離

83、HDEF ( High speed counter definition ) : 高速計數器定義

84、HSC ( High Speed Counter 高速計數器 ) :啟動高速計數器

85、PLS ( Pulse 脈衝 ) :脈衝輸出

86、READ_ RTC ( Read real time clock 讀實時時鐘 ) :讀實時時鐘

87、SET_RTC ( Set real time clock ) : 寫實時時鐘

88、XMT ( Transmitter ) : 自由傳送

89、RCV ( Receive 接收 ) : 自由接收

90、NETR ( Net read 網路讀 ) : 網路讀

91、NETW ( Net write 網路寫 ) : 網路寫

92、GET_ADDR ( Get address 獲取地址 ) : 獲取口地址

93、SET_ADDR ( Set address 設定地址 ) : 設定口地址

94、PID ( Proportional Integral Differential 比例、積分、微分 ) :比例積分微分調節器。

如有不妥,歡迎指正!