1.确认连接
是否连接PLC并非编程的必要选项,但是建议完成组态后就连接PLC并下载,确保组态正确性。
在我们通过online和setting连接到PLC后,在AS软件右下角会出现明显标志:绿色RUN。
如果出现的是OFFLINE,说明未连接上PLC:
如果出现的是红色SERV,说明PLC故障,需要排查:
SERV状态排查方法:
点击Tools中的System Diagnostics Manager(SDM)
即可跳转到对应网页并展示设备状态:
点击HardWare中的error可发现缺失设备,再检查网线确实有断开,即PowerLink未与X20BC1083连接。
如果在SDM中发现没有明显Error,可以通过热重启或者冷重启来重新连接试试。
下面是热冷重启按钮:
2.拖入编程项目
点击左侧逻辑视图空白区域后,在右侧Toolbox中,找到Program并勾选,即可筛选出编程项目。
将自己需要的语言的编程项目拖入左侧逻辑视图即可。
这样Program和Program All in One的区别在于:
一个是初始化程序、循环执行程序和结束执行程序放置在不同cpp文件(推荐);而另一个是放置在同一个cpp文件。具体用法差别不大。
另外需要介绍的是,贝加莱中C或者C++编程和传统C和C++编程最不一样的是:
传统C语言一定有Main函数,而且从Main函数开始执行,但是贝加莱中是先执行Init函数,再一直执行Cyclic函数,最后执行Exit函数。
3.变量定义
插入项目后,我们需要定义变量(建议变量尽量定义在变量表中,因为程序中未在变量表中定义的临时变量无法被监视,难以查找bug,而且尽量定义在变量表中可以避免 变量重名的风险隐患。)
在Variables.var处右键可选择变量定义模式,可以选择自己喜欢的定义方法(比如表格也就是类似C语言定义 或者 文本也就是类似西门子数据块定义),可以自己尝试,这里使用表格举例。
打开Variables.var后右键添加变量Add Variable:
可以通过直接在Type处输入定义类型,也可以通过右侧小点的弹窗来选择类型:
简要介绍一下常用的类型和命名规范:
Type | 意义 | 变量命名前缀 | 命名示例(变量类型+意义) |
---|---|---|---|
INT | 整型 | i | iNum |
UINT | 无符号整型 | ui | uiGrade |
REAL | 浮点型 | r或者f | rCurrent |
STRING | 字符串 | str | strSchoolName |
BOOL | 布尔型 | b | bIsTrue |
全局变量 | g | gTime | |
结构体变量 | 结构体名 | 结构体名_VariableName | |
指针变量 | p | pRegister | |
数字量输入 | di | diCurrent | |
数字量输出 | do | doCurrent | |
模拟量输入 | ai | aiCurrent | |
模拟量输入 | ao | aoCurrent |
除了内置类型外,我们还可以封装自己定义的类型,比如结构体类型。
点击Types.typ,然后右键空白处,选择AddStructureType:
创建StructType后继续右键添加成员变量Add TypeMember:
比如定义如下MyTimeStruct变量:
记得定义以后,一定要Save All或者save,保存!否则在变量表中找自定义类型时可能没有。
定义完成以后我们需要去变量表中去定义它:
点击变量表,添加新变量,再点击类型中的省略号,在窗口中选择StructureType,右侧找到自己定义的MyTime,点击下面OK即可。
再点击保存。
4.使用变量
打开某cpp,比如Cyclic.cpp,在其中会一直循环执行的函数void _CYCLIC ProgramCyclic(void)中将,Variable.var展开的变量拖入cpp函数体中即可(或者手敲打字也可),结构体的成员变量需要使用成员变量指向符“.”来使用。
结果如下:
对于Cyclic的周期,可以通过在物理视图中,双击5PPC3100来修改,在右侧弹出中,拖动Program到对应Cyclic下保存即可。
一切都准备完成后可以下载:
下载完成后:
5.监视变量
打开监测模式
将鼠标置于变量上方即可监视变量数值:
或者是在程序中点击变量然后选择Open然后选择Watch,打开Watch窗口
再将变量拖入Watch窗口即可,如右侧所示(但是如果只看到变量,没看到Value,最大可能是Watch栏Name栏太宽,把分割线往左拉一下即可: