本课程为高级编程语言培训,适用于有一定博图编程基础的人员。
目录
SCL概述... PAGEREF _Toc79589284 \h 6
(一) SCL背景简介... PAGEREF _Toc79589285 \h 6
(二) LAD、STL、SCL的样式区别:... PAGEREF _Toc79589286 \h 6
二、 SCL搭建及使用:... PAGEREF _Toc79589287 \h 7
(一) SCL程序新建... PAGEREF _Toc79589288 \h 7
1. 软件安装... PAGEREF _Toc79589289 \h 7
2. 新建SCL程序... PAGEREF _Toc79589290 \h 7
3. 插入SCL语言段... PAGEREF _Toc79589291 \h 8
(二) SCL 的设置... PAGEREF _Toc79589292 \h 9
1. SCL 设置概述... PAGEREF _Toc79589293 \h 9
2. 新块的默认设置... PAGEREF _Toc79589294 \h 10
(三) SCL 的编程窗口... PAGEREF _Toc79589295 \h 11
1. 软件界面概述... PAGEREF _Toc79589296 \h 11
2. 编程窗口的概述... PAGEREF _Toc79589297 \h 12
3. 定制编程窗口... PAGEREF _Toc79589298 \h 13
4. 设置 SCL 代码格式... PAGEREF _Toc79589299 \h 15
5. 展开和折叠代码部分... PAGEREF _Toc79589300 \h 17
6. 浏览到定义... PAGEREF _Toc79589301 \h 18
(四) 使用书签... PAGEREF _Toc79589302 \h 19
1. 书签的基本知识... PAGEREF _Toc79589303 \h 19
2. 设置书签... PAGEREF _Toc79589304 \h 19
3. 在书签间浏览... PAGEREF _Toc79589305 \h 20
4. 删除书签... PAGEREF _Toc79589306 \h 21
(五) SCL寻址与调用... PAGEREF _Toc79589307 \h 22
1. SCL寻址... PAGEREF _Toc79589308 \h 22
2. SCL调用... PAGEREF _Toc79589309 \h 23
(六) SCL区域与注释... PAGEREF _Toc79589310 \h 26
1. 程序区间... PAGEREF _Toc79589311 \h 26
2. 程序注释... PAGEREF _Toc79589312 \h 27
三、 SCL编程语言元素... PAGEREF _Toc79589313 \h 28
(一) 表达式... PAGEREF _Toc79589314 \h 28
1. 算数表达式... PAGEREF _Toc79589315 \h 29
2. 关系表达式... PAGEREF _Toc79589316 \h 31
3. 逻辑表达式... PAGEREF _Toc79589317 \h 33
(二) 运算符及优先级... PAGEREF _Toc79589318 \h 34
(三) 赋值运算... PAGEREF _Toc79589319 \h 36
(四) 在 SCL 中使用浮点数(REAL 和 LREAL)进行计算... PAGEREF _Toc79589320 \h 39
(五) 使用 SCL 中的常量进行计算... PAGEREF _Toc79589321 \h 43
四、 SCL 指令基础... PAGEREF _Toc79589322 \h 46
(一) SCL指令的输入... PAGEREF _Toc79589323 \h 46
1. 指令的规则... PAGEREF _Toc79589324 \h 46
2. 手动输入 SCL 指令... PAGEREF _Toc79589325 \h 47
3. 通过“指令 ”(Instructions) 任务卡插入 SCL 指令... PAGEREF _Toc79589326 \h 48
4. 使用结构化元素包围程序代码... PAGEREF _Toc79589327 \h 49
(二) 使用区间 (Region) PAGEREF _Toc79589328 \h 50
1. 使用区间... PAGEREF _Toc79589329 \h 50
2. 插入区间... PAGEREF _Toc79589330 \h 52
3. 复制和插入区间... PAGEREF _Toc79589331 \h 54
4. 在区间内浏览... PAGEREF _Toc79589332 \h 55
5. 删除区间... PAGEREF _Toc79589333 \h 57
(三) 定义 SCL 指令的数据类型... PAGEREF _Toc79589334 \h 58
1. 有关 SCL 指令数据类型的基本信息... PAGEREF _Toc79589335 \h 58
2. 更改 SCL 指令的数据类型... PAGEREF _Toc79589336 \h 59
3. 修改 IEC 定时器和 IEC 计数器的数据类型... PAGEREF _Toc79589337 \h 59
4. 更改“解码”指令 (DECO) 的默认数据类型... PAGEREF _Toc79589338 \h 59
(四) 显示或隐藏变量信息... PAGEREF _Toc79589339 \h 60
1. 简介... PAGEREF _Toc79589340 \h 60
2. 显示或隐藏所有块的变量信息... PAGEREF _Toc79589341 \h 60
3. 显示或隐藏一个已打开块的变量信息... PAGEREF _Toc79589342 \h 60
(五) 使用 SCL 中的收藏夹... PAGEREF _Toc79589343 \h 61
1. 将 SCL 指令添加到收藏夹... PAGEREF _Toc79589344 \h 61
2. 通过收藏夹插入 SCL 指令... PAGEREF _Toc79589345 \h 61
3. 删除收藏夹中的 SCL 指令... PAGEREF _Toc79589346 \h 62
(六) 在 SCL 中插入块调用... PAGEREF _Toc79589347 \h 62
1. 关于 SCL 中块调用的基本信息... PAGEREF _Toc79589348 \h 62
2. 手动插入块调用... PAGEREF _Toc79589349 \h 68
3. 使用拖放操作插入块调用... PAGEREF _Toc79589350 \h 69
4. 更新块调用... PAGEREF _Toc79589351 \h 71
(七) 扩展和缩短参数列表... PAGEREF _Toc79589352 \h 73
(八) 插入编译指示 (S7-1200, S7-1500) PAGEREF _Toc79589353 \h 73
(九) 插入注释... PAGEREF _Toc79589354 \h 74
(十) 编辑 SCL 指令... PAGEREF _Toc79589355 \h 76
1. 选择指令... PAGEREF _Toc79589356 \h 76
2. 复制、剪切和粘贴指令... PAGEREF _Toc79589357 \h 76
3. 删除指令... PAGEREF _Toc79589358 \h 76
五、 程序控制指令讲解... PAGEREF _Toc79589359 \h 77
(一) IF:条件执行... PAGEREF _Toc79589360 \h 78
(二) CASE:创建多路分支... PAGEREF _Toc79589361 \h 81
(三) FOR:在计数循环中执行... PAGEREF _Toc79589362 \h 84
(四) WHILE:满足条件时执行... PAGEREF _Toc79589363 \h 87
(五) REPEAT:不满足条件时执行... PAGEREF _Toc79589364 \h 89
(六) CONTINUE:复查循环条件... PAGEREF _Toc79589365 \h 91
(七) EXIT:立即退出循环... PAGEREF _Toc79589366 \h 94
(八) GOTO:跳转... PAGEREF _Toc79589367 \h 95
(九) RETURN:退出块... PAGEREF _Toc79589368 \h 97
六、 特殊SCL指令讲解... PAGEREF _Toc79589369 \h 98
(一) PEEK 和 POKE:数据块的读取或写入(S7-1200)... PAGEREF _Toc79589370 \h 99
1. 项目生成与指令位置:... PAGEREF _Toc79589371 \h 99
2. PEEK 读指令... PAGEREF _Toc79589372 \h 102
1. POKE 写指令... PAGEREF _Toc79589373 \h 107
1. 常见问题... PAGEREF _Toc79589374 \h 111
(二) DB_ANY:任意数据类型... PAGEREF _Toc79589375 \h 113
1. DB_ANY的非优化指向... PAGEREF _Toc79589376 \h 113
2. DB_ANY指向UDT或系统数据类型... PAGEREF _Toc79589377 \h 116
3. DB_ANY变量与数据类型的比较... PAGEREF _Toc79589378 \h 125
4. DB_ANY在运动控制中使用... PAGEREF _Toc79589379 \h 128
5. DB_ANY 隐藏指令... PAGEREF _Toc79589380 \h 133
七、 16.6 SCL 编程示例... PAGEREF _Toc79589381 \h 134
(一) 西门子SCL编程实例-多个灯的逻辑控制程序... PAGEREF _Toc79589382 \h 134
1. 第一段程序:... PAGEREF _Toc79589383 \h 134
2. 第二段程序:... PAGEREF _Toc79589384 \h 135
3. 第三段程序:... PAGEREF _Toc79589385 \h 135
4. 第四段程序:... PAGEREF _Toc79589386 \h 136
(二) 西门子SCL编程实例-计算设备运行时间... PAGEREF _Toc79589387 \h 138
1. 案例思路... PAGEREF _Toc79589388 \h 138
2. 创建用户自定义数据类型... PAGEREF _Toc79589389 \h 138
3. 创建全局数据块... PAGEREF _Toc79589390 \h 139
4. 在系统启动块中获取系统时间... PAGEREF _Toc79589391 \h 139
5. 创建功能FC_Running_Time_Caculate. PAGEREF _Toc79589392 \h 140
6. 主程序调用... PAGEREF _Toc79589393 \h 141
(三) 西门子SCL编程实例-传送带控制... PAGEREF _Toc79589394 \h 142
1. 项目图解... PAGEREF _Toc79589395 \h 142
2. 变量定义... PAGEREF _Toc79589396 \h 142
3. 编写 SCL 程序... PAGEREF _Toc79589397 \h 143
4. 说明:... PAGEREF _Toc79589398 \h 143
(四) 西门子SCL编程实例-一建启停... PAGEREF _Toc79589399 \h 144
1. 工艺要求:... PAGEREF _Toc79589400 \h 144
2. 变量定义:... PAGEREF _Toc79589401 \h 144
3. 编写 SCL 程序... PAGEREF _Toc79589402 \h 145
4. 调用并监控... PAGEREF _Toc79589403 \h 146
(五) 西门子SCL编程实例-传送带传送方向检测... PAGEREF _Toc79589404 \h 147
1. 项目图解... PAGEREF _Toc79589405 \h 147
2. 变量定义... PAGEREF _Toc79589406 \h 147
3. 编写 SCL 程序... PAGEREF _Toc79589407 \h 148
4. 说明:... PAGEREF _Toc79589408 \h 149
(六) 西门子SCL编程实例-检测存储区的填充量示例... PAGEREF _Toc79589409 \h 149
1. 项目图解... PAGEREF _Toc79589410 \h 149
2. 变量定义... PAGEREF _Toc79589411 \h 150
3. 编写 SCL 程序... PAGEREF _Toc79589412 \h 151
4. 说明:... PAGEREF _Toc79589413 \h 152
(七) 西门子SCL编程实例-全局变量和局部变量... PAGEREF _Toc79589414 \h 153
1. 概念介绍... PAGEREF _Toc79589415 \h 153
2. 工艺要求... PAGEREF _Toc79589416 \h 153
3. 新建FB块... PAGEREF _Toc79589417 \h 154
4. 定义局部变量... PAGEREF _Toc79589418 \h 154
5. FB程序编写:... PAGEREF _Toc79589419 \h 155
6. 定义全局变量... PAGEREF _Toc79589420 \h 155
7. 主程序编写(OB1)... PAGEREF _Toc79589421 \h 155
8. 总结... PAGEREF _Toc79589422 \h 156
(八) 西门子SCL编程实例-IF THEN ELSE. PAGEREF _Toc79589423 \h 157
1. 指令解读... PAGEREF _Toc79589424 \h 157
2. 案例分析... PAGEREF _Toc79589425 \h 157
3. 仿真查看结果... PAGEREF _Toc79589426 \h 158
八、 SCL应用技巧提升... PAGEREF _Toc79589427 \h 159
(一) SCL定时器应用(S7-1200)... PAGEREF _Toc79589428 \h 159
1. 定时器介绍... PAGEREF _Toc79589429 \h 159
2. 定时器创建... PAGEREF _Toc79589430 \h 160
3. 使用DB块的SCL指令应用... PAGEREF _Toc79589431 \h 162
4. 使用FB块调用定时器... PAGEREF _Toc79589432 \h 163
(二) SCL实现间接寻址... PAGEREF _Toc79589433 \h 164
1. S7-300/400实现间接寻址... PAGEREF _Toc79589434 \h 164
2. SIMATIC S7-1200/1500实现间接寻址... PAGEREF _Toc79589435 \h 165
(三) SCL选择跳转程序编写... PAGEREF _Toc79589436 \h 167
1. 说明... PAGEREF _Toc79589437 \h 167
2. 解决方法... PAGEREF _Toc79589438 \h 167
3. 编程示例... PAGEREF _Toc79589439 \h 167
(四) 按字节、字和双字数据类型访问变量... PAGEREF _Toc79589440 \h 168
1. 说明... PAGEREF _Toc79589441 \h 168
2. 举例... PAGEREF _Toc79589442 \h 169
(五) PLC 数据类型 (UDT) 的基本知识... PAGEREF _Toc79589443 \h 172
1. 说明... PAGEREF _Toc79589444 \h 172
2. 使用... PAGEREF _Toc79589445 \h 172
(六) S7-SCL 字符串的比较和转化... PAGEREF _Toc79589446 \h 173
1. 说明... PAGEREF _Toc79589447 \h 173
2. 参数含义:... PAGEREF _Toc79589448 \h 173
3. 字符串比较SCL编程方法:... PAGEREF _Toc79589449 \h 173
4. FC 程序示例... PAGEREF _Toc79589450 \h 173
5. 仿真结果:... PAGEREF _Toc79589451 \h 174
(七) 读取SCL代码中某个变量的特定位... PAGEREF _Toc79589452 \h 175
1. 说明:... PAGEREF _Toc79589453 \h 175
3. 举例... PAGEREF _Toc79589454 \h 175