日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

倍福BECKHOFF PLC:自动化编程入门1

發布時間:2023/12/10 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 倍福BECKHOFF PLC:自动化编程入门1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄
一、編程基礎 - 掌握核心概念,降低入門難度
1.1 TwinCAT2 編程入口 - POUs(Program Organization Unit)
1、PRG
2、FUNCTION
3、FB
4、其他入口
1.2 常用功能塊簡介
1.3 程序編寫實例 - 流水燈
1.4 附錄
一、編程基礎 - 掌握核心概念,降低入門難度
我初學倍福PLC,學習過程的一些總結:
1、熟系編程環境,多操作幾次就熟系了。
2、了解一些功能塊,資料主要在官方幫助系統中查找。
3、理解程序執行流,從代碼第一行開始一步一步執行,再套上周期循環,簡單來說 在PLC中寫代碼就是在周期中斷服務函數中寫代碼。
4、還是與理解程序流有關系,就是plc程序的機制是不斷循環的(周期掃描機制),在PLC中要實現順序控制/狀態機,有固定的套路,有的廠家會提供順序控制功能塊,使用倍福plc + st語言編程,就借助于case語法實現。
1.1 TwinCAT2 編程入口 - POUs(Program Organization Unit)
新建POU程序文件(Ctrl+N / File>New POU)

界面區域功能

1、PRG
新建PRG


ACT子程序


2、FUNCTION
可重入問題(如何開啟多線程)
3、FB
類似高級語言的類
4、其他入口
Data Types(數據類型)
Visu(可視化)
Resources(資源)
1.2 常用功能塊簡介
R_TRIG/F_TRIG
TON/FON
CASE … END_CASE
1.3 程序編寫實例 - 流水燈
在我看來,理解程序的執行過程是編程的重要一步。

PLC程序執行流的常見描述如下:

采用不斷循環的順序掃描工作方式,從上往下,從左往右,每一次掃描所用的時間稱為掃描周期或工作周期。

通過資料查詢,經常會看到如下圖所示的執行順序解釋。這對不熟悉梯形圖語言設計意圖,又習慣文本程序編程的人來說,理解PLC程序如何被執行就比較困難。

習慣文本語言編程(比如用C語言來描述plc程序的執行流),可以簡單的這樣理解:PLC程序 一直是在死循環中的。
如果了解嵌入式,可以用中斷服務函數更準確的模擬PLC執行機制(比起c語言用死循環模擬,中斷的方式可以表達 plc程序是在被周期性循環執行)。如果你倍福plc開發環境中,設置PLC task (掃描周期)是10ms,那么PLC就能做到程序執行一次的時間一定在10ms(掃描時間)以內。(那如果在PLC里面寫一個死循環呢? 程序當然會卡住吧(系統利用率會飆升))。
所以,在PLC的循環機制的作用下,一個典型的一步步執行的加工流程怎么寫出來?舉個栗子,讓變量i從1一步步的變到10000

寫法1:執行的效果的i始終是10000,看不出來從1變化到10000的過程。這種連續賦值的思路,相當于只寫了最后一句 i:=10000;

那如果用延時功能塊TON呢?結果是可以實現流程控制的效果,但如果流程很長,TON功能快會越用越多。。。(這里,需要了解TON延時功能塊);PLC實現流程控制的主流方式肯定不是這樣的,借助TON實現流程控制太繁瑣了。通常,借助ST語言的CASE OF 語法,來實現流程步數的控制。
i :INT;
tDelay1 :TON;
tDelay2 :TON;
tDelay3 :TON;
tDelay4 :TON;
tDelay5 :TON;
START : BOOL; (輕叩按鈕,tap,非自鎖)

tDelay1(IN:=START,PT:=t#2s,ET:=)
IF tDelay1.Q THEN
i:=1
tDelay1(IN:=FLASE,PT:=t#2s,ET:=)
tDelay2(IN:=TRUE,PT:=t#2s,ET:=)
END
if tDelay2.Q THEN
i:=10
tDelay2(IN:=FLASE,PT:=t#2s,ET:=)
tDelay3(IN:=TRUE,PT:=t#2s,ET:=)
END
if tDelay3.Q THEN
i:=100
tDelay3(IN:=FLASE,PT:=t#2s,ET:=)
tDelay4(IN:=TRUE,PT:=t#2s,ET:=)
END
if tDelay4.Q THEN
i:=1000
tDelay4(IN:=FLASE,PT:=t#2s,ET:=)
tDelay5(IN:=TRUE,PT:=t#2s,ET:=)
END
if tDelay5.Q THEN
i:=10000
tDelay5(IN:=FLASE,PT:=t#2s,ET:=)
END
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
實現流程順序控制 - 流水燈。借助CASE OF語法(類似與C語言的 switch case) + 信號上升沿功能塊,
rt_Execute(CLK:=Execute , Q=>Execute_Q);
IF rt_Execute.Q THEN
iState:=0;
END_IF

rt_Restart(CLK:=Restart , Q=>);
IF rt_Restart.Q THEN
iState:=iStateSave;
END_IF

rt_STOP(CLK:=STOP , Q=>);
IF rt_STOP.Q THEN
iStateSave:=iState;
iState:=-1;
END_IF

rt_RESET(CLK:=RESET , Q=>);
IF rt_RESET.Q THEN
iState:=1000;
END_IF

CASE iState OF
-1:
;
0:
el2809[0]:=TRUE;
iState := 1;
1:
el2809[1]:=TRUE;
iState := 2;
2:
el2809[2]:=TRUE;
iState := 3;
3:
el2809[3]:=TRUE;
iState := 4;
4:
el2809[4]:=TRUE;
iState := 5;
5:
el2809[0]:=FALSE;
el2809[1]:=FALSE;
el2809[2]:=FALSE;
el2809[3]:=FALSE;
el2809[4]:=FALSE;
iState := 0;
1000:
el2809[0]:=FALSE;
el2809[1]:=FALSE;
el2809[2]:=FALSE;
el2809[3]:=FALSE;
el2809[4]:=FALSE;
END_CASE

1.4 附錄
倍福幫助系統

官方PLC編程手冊

IEC61131-3 代碼風格(編程約定)

常見數據類型

文件后綴名解釋

總結

以上是生活随笔為你收集整理的倍福BECKHOFF PLC:自动化编程入门1的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。