当前位置: 首页 > news >正文

1200 SCL学习笔记

一. IF. 如果。下面是一个起保停

IF #I_start AND NOT #I_stop THEN //如果I_start接通  和  I_stop没有接通#Q_run := 1;                 //输出Q_run 接通
ELSIF #I_stop THEN               //如果I_stop接通#Q_run := 0;                 //。。。。。。
END_IF;

二. CASE

CASE #NUM OF1:                  // 如果NUM=1#Q_run_1 := 1;2..4:               // 如果NUM = 2 到 4#Q_run_2 := 1;ELSE                // 否则...#Q_run_1 := 0;#Q_run_2 := 0;
END_CASE;

三. for

1. 首次循环时,循环变量被赋起始值,然后执行代码。结束后,循环变量的值与步值相
加,然后判断是否超出结束值,如果没有超出,则执行代码;如果超出,则跳出FOR循环,继续执行END_FOR后面的代码。
注意以下几点:
① 起始值与结束值在循环过程中不能更改;
② 步值可以是正数,也可以是负数,不能为0;
③ 如果步值是正数,则结束值要大于等于起始值;
④ 如果步值是负数,则结束值要小于等于起始值;
⑤ 如果没有使用BY关键字指明步值,则默认为1

2. 如下图所示,num一直到了6(1,2....6)。 但是内部的程序只执行了5次。

#sta_sum := 0;FOR #num := 1 TO 5 DO#sta_sum := #sta_sum + 2;END_FOR;// 0-2
// 2-4
// 4-6
// 6-8
// 8-10  

四. 上升沿检测 和 下降沿

1. 举个例子:假设使用I0.0(变量名:start)连接的按钮的上升沿来启动某个电机。启动
按钮连接常开触点,正常情况下I0.0的值为0,当按下按钮时,I0.0的值为1;继电器线圈连
接输出地址Q0.0(变量名:motor),中间变量M0.0(变量名:interFlag)用来保存上升沿
的状态。SCL程序代码如图8-3所示

"R_TRIG_DB_1"(CLK:=#start,         // start----I0.0Q=>#P_Start);        // P_Start--脉冲IF #P_Start THEN                   // 监控#P_Start 来控制输出#Q_RUN := 1;
END_IF;

五. 定时器

以延时接通定时器为例

#T.T1(IN:=#start,      // IN 启动信号PT:=#TimeSET,    // PT 设定值Q=>#Q_RUN,       // Q  输出ET=>#Q_ET);      // ET 定时器当前值

六. 计数器(ctu加计数器为例)

七. 移动指令

1. MOVE_BLK指令。 

(1). 该指令可以从一个存储区地址拷贝一定数量的数据到另一个存储区,拷贝的数据必须是
相同的数据类型.

(2). MOVE_BLK指令移动的数据必须存放在数组中。

MOVE_BLK(IN:="数据块_1".ARR_1[0],    // 源数据中的第一个元素COUNT:=3,                   // 要拷贝的数据的个数OUT=>"数据块_1".ARR_2[0]);  // 目标数据中的第一个元素

2. UMOVE_BLK: 指令与MOVE_BLK指令的参数及用法都相同。唯一不同的地方是:
UMOVE_BLK指令的执行过程不会被中断,这使它很适合用于一些重要的、不希望被中断的数据拷贝。

3. FILL_BLK指令
该指令用指定的数据来填充存储区中的某段区域,操作的目标是数组。

该指令有3个参数:
① IN:用来填充的数据,可以是整数、实数、字符、日期时间等数据类型。
② COUNT:要填充的数据个数,可以是USINT、UINT或者UDINT类型。
③ OUT:要填充的目标地址(数组)。

FILL_BLK(IN:=16#ff,COUNT:=10,OUT=>"数据块_1".ARR_2[0]);

八. 转换指令

1. ROUND: 取整

// ROUND指令. 将[实数]四舍五入,变成[DINT]
"Tag_22" := ROUND(real#1.8);     // 返回2

2. CEIL : 向上取整

// CELL 向上取整 返回值:2
"Tag_22" := CEIL(real#1.1);

3. FLOOR : 向下取整。 如1.8,返回1.

4. TRUNC : 截尾取整。 如1.5,返回1.

http://www.dtcms.com/a/347720.html

相关文章:

  • 机器人控制基础:串级PID控制算法的参数如何整定?
  • 11.Shell脚本修炼手册---IF 条件语句的知识与实践
  • 无线数传模块保障智能立体车库多设备实时通信的可靠性
  • 二、BPMNJS简介
  • share logic in core or in example
  • 【typenum】 23 倒序存储的无符号整数(private.rs片段)
  • Linux mount 命令
  • PyInstaller将.py文件转为exe,执行文件在不同的电脑出现字体大小不一致问题原因分析及解决办法
  • Spring:IOC(控制反转 )、DI(依赖注入 )、AOP(通知类型、事务、拦截器)
  • 主流.NET 平台的NuGet 生态正在积极拥抱 AOT
  • 【84页PPT】智慧方案某著名企业某集团协同OA整体解决方案(附下载方式)
  • MySQL索引原理与优化全解析
  • 【每天一个知识点】训推一体机
  • 13.Shell脚本修炼手册---玩转 CASE 语句(应用场景与实践技巧)
  • GitHub Actions workflow最佳实践
  • 提问:温度不改变 logits 与概率的排名,为何还会影响模型输出?
  • Linux 进程间通信之System V 共享内存
  • 深入探讨集成学习:Bagging与Boosting的核心原理与实践
  • RAG系统开发中的12大痛点及应对策略
  • SVG.js 一个轻量且强大的图形库
  • Sql server的行转列
  • word——表格跨页显示表头
  • PCL点云库入门(第24讲)——PCL库点云特征之NARF特征描述 Normal Aligned Radial Feature(NARF)
  • VGG改进(4):融合Linear Attention的高效CNN设计与实践
  • 遥感机器学习入门实战教程|Sklearn案例⑧:评估指标(metrics)全解析
  • 机器学习案例——预测矿物类型(数据处理部分)
  • 如何在wsl2+Ubuntu中安装Eclipse
  • 第七章 利用Direct3D绘制几何体
  • 一个简洁的 C++ 日志模块实现
  • AI + 医疗:智能诊断如何突破技术瓶颈,走进基层医院?