什么是CFC: 【差不多10分钟全学会】
CFC是图形化编程,
跟单片机的连线一样,
唯一的区别:功能块右侧是【只能输出】引脚。
只有左侧引脚可以输入输出。
类型:
1bit bool
8 byte
16 word
32 dword
64 Lword
可负数:
8bit sint
16 int
32 dint // 正数 Udint
64 Lint
浮点数:
32bit real
64 Lreal
字符:
8bit x N string
16bit x N Wstring
时间:
Time T#12345m67s89ms
date D#1970-1-1 【D#2106-02-06】
date_and_time DT#1970-1-1-12:34:56
有哪些控件:
1指针:用于拖动功能块。
2控制点:同上。
3输入:填变量,或对象的输出。
4输出:用导线,连接到下级对象输入。
5运算块:就是FB功能块。【左侧:输入输出】,【右侧:只输出】
6Box :在FB原有的基础上,增加运行条件。【用bool控制EN运行】
7跳转:跟goto一样。
8标签:这个跟【跳转】配合使用,能实现循环。
9返回:同于提前结束本轮循环。
10合成器:用于对结构体的成员变量赋值。【结构体的赋值】
11选择器:用于输出结构体的成员变量。【输出结构体的变量】
参考:
12注释:对功能块的说明。
13连接标记:用于出现交叉线的情况。
显示块运行顺序:右键【属性】
常用元件:升降沿,定时器。。。
语法:
F_TRIG 下降沿 多选MUX 等于EQ 不等NE 大于GT 大于等于GE 小于LT 小于等于LE
R_TRIG 上升沿 左移SHL 右移SHR 循环左移ROL 循环右移ROR
ADD 加 SUB 减 MUL 乘 DIV 除
AND 与 OR 或 XOR 异或
SR 置位
RS 复位
BOOL_TO_??? 【转换】
MOVE 赋值
MUX 多路转换
SEL 二进制转换
LIMIT 【限制值范围】
TOF 延时断开
TON 延时接通
TP 脉冲计时器
CTD 减计数【自减】
CTU 增计数【自增】
CTUD 增减器
继承 extends
赋值 :=
输出 =>
引用 REFERENCE TO
指针 POINTER TO
变量声明:
<标识符>{AT<Address>}:<数据类型>{:=<初始化>}:
其中{}中的部分是可选择的。
bTest AT %IX10.3: INT;
数组:
<数组名>:ARRAY [<ll1>..<ul1>,<ll2>..<ul2>,<ll3>..<ul3>] OF <基本数据类型>
纵 横 高
指针
<标识符>: POINTER TO <数据类型 | 功能块 | 程序 | 方法 | 函数>;
VAR
PointVar:POINTER TO INT;
var1:INT := 5;
var2:INT;
END_VAR
PointVar := ADR(var1); //取对象地址
var2:= PointVar^; //取地址对象
指针复习:
指针变量:最大值是CPU能表示的bit数【钞票的张数】
写法 *p
指针类型:光有钞票的张数还无法表示,所以需要类型,是5张十元的,还是5张百元的。
写法 type *p;
二级指针:类似2个储物柜AB,在A柜子里放B柜子的钥匙,这样可以实现有序的地址管理无序的对象。
写法 type后 *后 type先 *先
地址运算方向是:从右到左。
地址值:是将整个内存切割成Type类型后,第n个Type的位置。
%Mb20 跟 %Mw10 是同一个位置【起始位置相同,截取长度不同】
结尾:
功能块有些输入有默认值,可以不用赋值。
维修电工选择 CFC编程,不要用st,高级语法学C#,【因为C# 》ST】而且st语法有些反人类,比如 【你说的语法请说明语法】 num : int := 16#1234;