首页 > 其他分享 >ST入门笔记1

ST入门笔记1

时间:2023-04-10 09:44:28浏览次数:36  
标签:定时器 END 入门 笔记 ST M0 Y1 Y0 OUT

ST按钮点动控制灯的应用
//梯形图 内嵌ST框插入(Ctrl+B)
//ctrl+鼠标滚轮可以放大缩小画面
//键盘调到大写
//:=1; END_IF; 自动缩进功能
//IF M0=1 THEN
Y0:=1;
END_IF;
当 M0等于1时,Y0永久置1
//新建触摸屏
//位 点动 按下为1 松开为0
//F4编译 调试模拟
//启动触摸屏 模拟器启动
//没有安装GX Simulator?
可能是模拟器连接方法设置不匹配
工具→模拟器→设置→选择匹配的GX模拟器
转换+全部编译 编译输出错误 红色 少了英文;
图标 监视开始 监视停止 回到编辑状态
ST语言语法讲解
Y0:=1 :=是赋值语句 类似C语言== 梯形图SET Y0 置位
IF M0=1 THEN
Y4:=1;
ELSE
Y4:=0;
END_IF;

Y4:=M0; 直接对应赋值 好耶!(运算结果赋值给左边)
本节讲了if else语句应用 还有赋值语句:=


ST电机的启保停控制的应用
//启动保持停止(自锁 保持状态 置位 复位 SET RST)
//都是点动开关m0 m1 开、关 单独的
IF M0=1 THEN
Y0:=1;
END_IF;
IF M1=1 THEN
Y0:=0;
END_IF;
本节课结束

ST电机正反转控制应用
// 灯 中间继电器 交流接触器 控制电机启动保持停止
//Y0 Y1 电机正、反转 3个信号 两个输出才行
/*
m0 m1 m2
正 反 停
*/
IF M0=1 THEN
Y1:=0;
Y0:=1;
END_IF;
IF M1=1 THEN
Y0:=0;
Y1:=1;
END_IF;
IF M2=1 THEN
Y0:=0;
Y1:=0;
END_IF;
(互锁)
//另一种方式互锁 利用输出的方式 正转状态中 按反转无效 必须先按停止才能再按反转
//垃圾设计 应该自动化一些,在按反转中自动先停止(这里是不是应该加一下停止多久?)
//手动界面控制需要这么做 用输出作为并列条件
IF M0=1 AND Y1=0 THEN
Y0:=1;
END_IF;
IF M1=1 AND Y0=0 THEN
Y1:=1;
END_IF;
IF M2=1 THEN
Y0:=0;
Y1:=0;
END_IF;
(互锁 并列条件 满足它且满足它 and 且 C语言逻辑符号&&它 其余或非 || !=)
本节课结束 ~

ST语言程序注释
// (*程序段注释1*)
方便日后自己他人理解 (比如一个月后.. 必要说明文档
本节结束


ST定时器的应用
//定时器 T0 T1 T100... 定时范围不同
//通常使用100ms毫秒做定时
//自动化程序中不建议应用
(影响机器工作节拍,通常用传感器做信号.
不会说我按下按钮之后需默认10秒气缸完成动作
这个默认就慢了 应该使用传感器实时感知...)
//OUT 线圈输出指令 _ T Ctrl+F1 帮助!使能?
M0延时启动正转
/*
OUT_T( ?BOOL_EN? , ?BOOL_TCoil? , ?ANY16_TValue? );
OUT_T( M0 , TC0 , 30 );
OUT_T( 使能(梯形图计时器前常开触点) , 指定定时器线圈(TC0也就是T0线圈) , 指定定时时间(100毫秒定时器指定10 就是1s));
*/
//TC0是T0的线圈,TS0就是定时器T0的触点
//M0是外部触发定时器的线圈,TS0是定时器是否对外接通状态0与1
(* 定时器的使用 *)
OUT_T(M0,TC0,30);
IF TS0=1 THEN
Y0:=1;
ELSE
Y0:=0;
END_IF;
//按钮按住延时启动
//读取
//TC TS TN
//线圈 触点 当前值
(* 定时器的使用 *)
OUT_T(M0,TC0,30);
IF TS0=1 THEN
Y0:=1;
ELSE
Y0:=0;
END_IF;
D0:=TN0;
**定时器不能写在if循环?的里面(绝对不能)
(*定时器的使用*)
IF M0=1 THEN
Y0:=1;
END_IF;
OUT_T(Y0,TC0,20);
IF TS0=1 THEN
Y0:=0;
Y1:=1;
END_IF;
OUT_T(Y1,TC1,20);
IF TS1=1 THEN
Y1:=0;
Y0:=1;
END_IF;
IF M2=1 THEN
Y0:=0;
Y1:=0;
END_IF;
//定时器循环? 前一个的输出作为后一个的输入.
//间隔显示电路
时间继电器? 总之本节课完成!


ST任意设置定时器定时时间的应用
//常数20 2s 改成存储时间的地址D0...
**PLC初始上电的一瞬间 M8002 梯形图上电初始化一瞬间
**属于上电一瞬间特殊脉冲指令 特殊辅助续电器
(*定时器的使用*)
IF M0=1 THEN
Y0:=1;
END_IF;
OUT_T(Y0,TC0,D0);
IF TS0=1 THEN
Y0:=0;
Y1:=1;
END_IF;
OUT_T(Y1,TC1,D0);
IF TS1=1 THEN
Y1:=0;
Y0:=1;
END_IF;
IF M2=1 THEN
Y0:=0;
Y1:=0;
END_IF;
IF M8002=1 THEN
D0:=20;
END_IF;
//数值输入 bin_16 有符号16位
//因为T0是100ms单位定时器,所以输入监视控件要做一定数据运算
//监视$$/10 写入$W*10 在触摸屏软件内(组态软件内做)
//本应该出现2,为什么会出现数字1,因为在控件数据运算上面的选项移位不小心选中了**要注意
(*定时器的使用*)
IF M0=1 THEN
Y0:=1;
END_IF;
OUT_T(Y0,TC0,D0);
IF TS0=1 THEN
Y0:=0;
Y1:=1;
END_IF;
OUT_T(Y1,TC1,D0);
IF TS1=1 THEN
Y1:=0;
Y0:=1;
END_IF;
IF M2=1 THEN
Y0:=0;
Y1:=0;
END_IF;
IF M8002=1 THEN
D0:=20;
END_IF;
D1:=TN0;
D2:=TN1;
本节课讲了可以实时修改定时器值并实时监视定时器数值
本节课结束


ST计数器的应用
//计数器与定时器类似。。
//m0按下5次才可以启动Y0
OUT_T 定时器 OUT_C 计数器 Ctrl+F1 帮助(提示代码范式)
/*
OUT_C( ?BOOL_EN? , ?BOOL_CCoil? , ?ANY16_CValue? );
OUT_C(M0,CC0,5); (*M0线圈通电5次*)
OUT_C(使能,计数器C0,计数次数);
*/
//CS0 触点
**记住要复位C0 RST Ctrl+F1 帮助
RST(使能条件 1,清除 C0)
//使能条件可以写1,也就是任何时候都使能,
PLC一上电就执行
// 当前值 CN0
//上升沿点动触发..
OUT_C(M0,CC0,5); //M0上升沿计数直到条件满足5
Y0:=CS0;//计数器接通y0
D1:=CN0;//显示当前计数
RST(M2,C0); //M2按钮清零计数器当前值

OUT_C(M0,CC0,D0);
IF M8002=1 THEN
D0:=5;
END_IF;
Y0:=CS0;
D1:=CN0;
RST(M2,C0);
//普通计数器c0 c1 c2 我们是不会使用的???
//代替它 下节讲 本节结束


ST实际工程中的计数器实现
//实际项目中不会使用c0123这样的普通计数器
(实现一个加计数 会有CC0线圈 CS0触点 .
流程对 但复杂 通常用+1 -1 指令去做计数器 比C0方便)
//PLC参数→软软件设置→数据寄存器→锁存起始D200-511
锁存(掉电自动保存)
**指令 INC DEC
//减计数 加计数
INC( M0 , D200 );
DEC(M1,D200);
一个严重问题*一直按的话会一直计数+1/-1 传感器
INCP( M0 , D200 );
DECP(M1,D200);
//加个P将连续执行型改成脉冲执行型!!!
计数器清零 按钮计数清零
/* 工程中经常采用这种方式 无论梯形图 还是ST语言 */
INCP( M0 , D200 );
DECP(M1,D200);
IF M2=1 THEN
D200:=0;
END_IF;
下节讲解D0:=D0+1;这种公式算式方式
36727 (D200是16位存储器)
超过这个数值怎么去处理
DINCP( M0 , D200 );
DDECP(M1,D200);
//前面加D 选择一个double就可以了
本节结束

标签:定时器,END,入门,笔记,ST,M0,Y1,Y0,OUT
From: https://www.cnblogs.com/ihoi/p/17301823.html

相关文章

  • 庄懂的技术美术入门01笔记
    前言:unity的全英文对我真的是劝退XD这算是真正意义上的第一篇博客,是以笔记的形式,主要是怕自己忘了,或许之后不定时还会对笔记内容进行总结再水一篇1.一般简单的渲染过程模型——输入结构——顶点shader——输出结构——像素shader——渲染结果①模型——输入结构将原模型转化......
  • Python ORM Pony PostgreSQL数据库 常用操作
    Pony是一个高级的对象关系映射器ORM框架。Pony它能够使用Python生成器表达式和lambdas向数据库编写查询。Pony分析表达式的抽象语法树,并将其转换为SQL查询。支持SQLite,MySQL,PostgreSQL和Oracle等数据库,本文主要介绍PythonORMPony中PostgreSQL数据库常用操作,及数据增加、删除......
  • @Cacheable和@CachePut存入redis的数据使用redisTemplate取出时为null的解决
    当使用@Cacheable和@CachePut注解存数据到redis中时如果使用spring默认的rediskey序列化方式时,使用redisTemplate取数据为null@CacheConfig(cacheNames="users")存入redisusers目录下取数据时的key为users::usernamepublicinterfaceUserRepositoryextendsJpaRepos......
  • 软考笔记(9)--计算机组成原理4--总线系统
    前言总线是多个系统部件之间进行数据传输的公共通路。所谓总线就是指能为多个功能部件服务的一组公用信息线,并且能够分时地发送和接收信息。通过总线连接,计算机可在各系统部件之间实现传输地址、数据和控制信息等操作。计算机系统中存储器、CPU等功能部件之间必须互联才能组成计......
  • stable diffusion打造自己专属的LORA模型
    通过Lora小模型可以控制很多特定场景的内容生成。但是那些模型是别人训练好的,你肯定很好奇,我也想训练一个自己的专属模型(也叫炼丹~_~)。甚至可以训练一个专属家庭版的模型(familymodel),非常有意思。将自己的训练好的Lora模型放到stableDiffusionlora目录中,同时配上美丽的封面图。......
  • java并发编程(1):Java多线程-基本线程类-基础知识复习笔记
    复习资料:《同步与异步:并发/并行/进程/线程/多cpu/多核/超线程/管程 》基本线程类基本线程类基本线程类指的是Thread类,Runnable接口,Callable接口继承Thread创建线程继承java.lang.Thread类创建线程是最简单的一种方法,也最直接。publicclassMyThread1extendsThread{}种......
  • Semantic Kernel 入门系列:
    理解了LLM的作用之后,如何才能构造出与LLM相结合的应用程序呢?首先我们需要把LLMAI的能力和原生代码的能力区分开来,在SemanticKernel(以下简称SK),LLM的能力称为semanticfunction,代码的能力称为nativefunction,两者平等的称之为function(功能),一组功能构成一个技能(skill)。SK的基......
  • Lighting System Design uva11400
    设计一个照明系统,一共有n(n<=1000)种灯泡可供选择,不同种类的灯泡必须用不同的电源,同一种灯泡则可以用一个,输入为一个n,以下n行,每行四个数值,代表电压V,电源费用K,每个灯泡费用C,所需灯泡数量L。n=0为结束标志。为了省钱,你可以把一些灯泡换成电压更高的以节省电源的钱,但不能换成更低的,......
  • elasticsearch
    elasticsearch1、安装mkdir-p/opt/elasticsearch/configmkdir-p/opt/elasticsearch/datamkdir-p/opt/elasticsearch/pluginsecho"http.host:0.0.0.0">>/opt/elasticsearch/config/elasticsearch.ymldockerrun--nameelasticsearch-p9200:9200-......
  • Rust编程语言入门之cargo、crates.io
    cargo、crates.io本章内容通过releaseprofile来自定义构建在https://crates.io/上发布库通过workspaces组织大工程从https://crates.io/来安装库使用自定义命令扩展cargo一、通过releaseprofile来自定义构建releaseprofile(发布配置)releaseprofile:是预......