codesys 简单案例_第一章:初识Codesys-1.4从一个示例程序讲起
上一章節,我們給出的功能塊源碼實現的功能是輸出一個占空比以及周期可調的脈沖信號。這個功能,我們可以映射成IO的高低電平功能,控制蜂鳴器報警。
全局變量-Main
Python
//{attribute 'qualified_only'} 這句要注釋掉,否則有范圍限制,需要使用Main.變量VAR_GLOBAL//------2種報警功能聲明----------------------- FB_啟動報警 :
YJ_BeepAlarm; FB_缺料報警 : YJ_BeepAlarm;
END_VAR
上面屬于全局變量區,在全局變量區,我們有兩個全局變量,它們的名字分別是“FB啟動報警”和“FB缺料報警”,他們指向的類型都是YJ_BeepAlarm類型。實際上“YJ_BeepAlarm”我們稱之為功能塊。
接下來,咱們看看“YJ_BeepAlarm”功能塊里面的內容。
//--代碼作者: 朱子文------------------
FUNCTION_BLOCK YJ_BeepAlarm
//---局部變量-------------------------
VAR_INPUT
ib_報警啟動 : BOOL;
ib_報警停止 : BOOL;
if_報警周期 : REAL;//周期設置,單位ms
if_報警占比 : REAL;//0-1,代表周期中高低電平的占空比
id_報警次數 : DINT;//報警次數為0,則報警輸出一直輸出報警信號
END_VAR
//---輸出變量-------------------------
VAR_OUTPUT
ob_報警完成 : BOOL;//如果報警次數為0,則報警完成無效
ob_報警輸出 : BOOL;
END_VAR
//---程序自用局部變量------------------
VAR
vt_Time : TON;
vb_Out : BOOL;
vr_RunTrig : R_TRIG;
vr_AlarmTrig : R_TRIG;
vr_StopTrig : R_TRIG;
vd_報警次數 : DINT;
vb_報警啟動 : BOOL;
vb_報警停止 : BOOL;
END_VAR
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
34
35
//{attribute'qualified_only'}這句要注釋掉,否則有范圍限制,需要使用Main.變量VAR_GLOBAL//------2種報警功能聲明-----------------------FB_啟動報警:
YJ_BeepAlarm;FB_缺料報警:YJ_BeepAlarm;
END_VAR
上面屬于全局變量區,在全局變量區,我們有兩個全局變量,它們的名字分別是“FB啟動報警”和“FB缺料報警”,他們指向的類型都是YJ_BeepAlarm類型。實際上“YJ_BeepAlarm”我們稱之為功能塊。
接下來,咱們看看“YJ_BeepAlarm”功能塊里面的內容。
//--代碼作者:朱子文------------------
FUNCTION_BLOCKYJ_BeepAlarm
//---局部變量-------------------------
VAR_INPUT
ib_報警啟動:BOOL;
ib_報警停止:BOOL;
if_報警周期:REAL;//周期設置,單位ms
if_報警占比:REAL;//0-1,代表周期中高低電平的占空比
id_報警次數:DINT;//報警次數為0,則報警輸出一直輸出報警信號
END_VAR
//---輸出變量-------------------------
VAR_OUTPUT
ob_報警完成:BOOL;//如果報警次數為0,則報警完成無效
ob_報警輸出:BOOL;
END_VAR
//---程序自用局部變量------------------
VAR
vt_Time:TON;
vb_Out:BOOL;
vr_RunTrig:R_TRIG;
vr_AlarmTrig:R_TRIG;
vr_StopTrig:R_TRIG;
vd_報警次數:DINT;
vb_報警啟動:BOOL;
vb_報警停止:BOOL;
END_VAR
上面這功能塊變量部分代碼包括:輸入變量,輸出變量以及功能塊里的局部變量。這三種變量類型里面,我們可以看到,聲明了很多變量。每個變量都有“單獨唯一”的名字,而他們的類型使用的是“:”后面跟一個數據類型。代表的是這個變量到底是什么數據類型的數據。這里就涉及到數據類型了,常用的數據類型有“BOOL、REAL、INT、DINT、TIME”等等。
接下來的功能塊里的內容,使用了RTrig上升沿功能塊的調用。以及IF-ELSE等基本語法。
接下來的PRG函數文件下,我們也有變量區,都是局部變量,也有變量賦值,變量類型,以及功能塊的實例化調用等等。
PRG函數中局部變量
Python
g
r_停止RTrig(CLK:= vb_停止信號, Q=> );
vf_啟動報警周期 := 1000;
vf_啟動報警占空比 := 0.4;
vi_啟動報警次數 := 5;
//------啟動報警功能塊的調用--------------------
FB_啟動報警(
ib_報警啟動:= vb_啟動信號,
ib_報警停止:= gr_停止RTrig.Q,
if_報警周期:= vf_啟動報警周期,
if_報警占比:= vf_啟動報警占空比,
id_報警次數:= vi_啟動報警次數,
ob_報警完成=> vb_RunAlramDone,
ob_報警輸出=> vb_RunAlarmOut);
//-------缺料報警停機功能--------------------------
FB_缺料報警(
ib_報警啟動:= vb_缺料信號,
ib_報警停止:= gr_停止RTrig.Q,
if_報警周期:= 500,
if_報警占比:= 0.3,
id_報警次數:= 3,
ob_報警完成=> vb_ShortageAlarmDone,
ob_報警輸出=> vb_ShortageAlarmOut);
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
g
r_停止RTrig(CLK:=vb_停止信號,Q=>);
vf_啟動報警周期:=1000;
vf_啟動報警占空比:=0.4;
vi_啟動報警次數:=5;
//------啟動報警功能塊的調用--------------------
FB_啟動報警(
ib_報警啟動:=vb_啟動信號,
ib_報警停止:=gr_停止RTrig.Q,
if_報警周期:=vf_啟動報警周期,
if_報警占比:=vf_啟動報警占空比,
id_報警次數:=vi_啟動報警次數,
ob_報警完成=>vb_RunAlramDone,
ob_報警輸出=>vb_RunAlarmOut);
//-------缺料報警停機功能--------------------------
FB_缺料報警(
ib_報警啟動:=vb_缺料信號,
ib_報警停止:=gr_停止RTrig.Q,
if_報警周期:=500,
if_報警占比:=0.3,
id_報警次數:=3,
ob_報警完成=>vb_ShortageAlarmDone,
ob_報警輸出=>vb_ShortageAlarmOut);
贊賞作者
微信贊賞支付寶贊賞
喜歡 (5)or分享 (0)
總結
以上是生活随笔為你收集整理的codesys 简单案例_第一章:初识Codesys-1.4从一个示例程序讲起的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: router vue 动态改变url_v
- 下一篇: git 删除本地仓库中的分支_本地 Gi