什么是CFC: 【差不多10分钟全学会】
CFC是图形化编程,
跟单片机的连线一样,
唯一的区别:功能块右侧是输出引脚。【只能输出】
只有左侧引脚可以输入输出。【引用类型】赋值操作用【MOVE】
类型:
字符:
【 1】 bool
【 8】 byte
【16】 word
【32】 dword
【64】 Lword
8bit x N string
16bit x N Wstring值类型:
【 8】 sint // 正数 Usint
【16】 int
【32】 dint // 正数 Udint
【64】 Lint浮点数:
32bit real
64 Lreal时间:
Time T#12345m67s89ms
date D#1970-1-1 【D#2106-02-06】date_and_time DT#1970-1-1-12:34:56
RETAIN 保持变量【断电不丢失,重启会初始化变量】
PERSISTENT 永久保持变量【靠电池保持】
控件:
1指针:用于拖动功能块。
2控制点:调整两个模块之间线的路径【连线】。带有控制点的连接线不再自动布线。
3输入:填变量,或实例对象的属性。
4输出:用导线,连接到下级模块的输入。
5运算块:就是FB功能块。【左侧:输入输出】,【右侧:只输出】
6Box :在FB原有的基础上,增加逻辑运行条件。【用bool控制EN运行】
7跳转:跟goto一样。跳转到指定的标签位置。
8标签:这个跟【跳转】配合使用,能实现循环。
9返回:同于提前结束本轮循环。
10合成器:用于对结构体的成员变量赋值。【生成实例对象】
11选择器:用于输出结构体的成员变量。【输出实例的属性值】
参考:
12注释:对功能块的说明。使用快捷键 [ Ctrl ] + [ Enter ] 插入一个换行符。
13连接标记:用于解决出现交叉线的情况。名称不区分大小写。
显示块运行顺序:右键【属性】
常用元件:边沿,定时器。。。
语法:
赋值【MOVE】
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 <基本数据类型>
纵 横 高
RETAIN 保持变量【断电不丢失,重启会初始化变量】
PERSISTENT 永久保持变量【靠电池保持】
指针
<标识符>: 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;