粉丝11.7万获赞117.9万

嗨,大家好,咱们前面讲了很多 ab 的一些基础的知识啊,比如说他这一些编程的方式,那么咱们常用的是这个啊,提音图,那么咱们还有一些这个啊,高级的一些编程语言,比如说这个结构化文本 st 啊,他就是一种这种高级的文本语言,可以用来描述功能呀啊,功能块,或者说是一些程序啊控制,那么也可以利用这个 st 语言啊,在顺序功能这种流程图啊,描述这个不动作,或者说是一种转换的一些行为。 那么 s t 与 s c l 啊,西门子的 s c l, 其实它表面上非常相像啊,与这个 c 语言也是非常相像的啊,但是呢,它是一个专门为工业控制应用开发的一种编程语言啊,具有很 强的一种编程能力啊,对于一些这个变量的复制呀,还有一些创建一些功能块啊,创建一些表达式啊,编写一些条件语句,以及这个啊迭代程序等等。那这个 st 语言也是非常适合用在一些复杂的计算中。 st 语言呢,它的这个程序的格式非常的自由啊,也可以在一些关键词与这个标识符之间啊,任何地方查一些,比如说制表符 啊,换行字符和注视。那这个对于熟悉计算机高级语言开发的人员来说,其实这个结构化文本这种 st 的语言 啊,非常容易学。那么今天呢,咱们通过一个小小的启动停止的案例来大概的先简单的了解一下 st 的语言。这边呢,已经进入到了一个编程的环境,咱们创 建一个这个 st 的文本编程啊,咱们就命名为 st 啊 st, 然后选择类型啊,第一个听图以及这个啊功能块啊,以及最后这个 st 啊编程语言, 咱们确定,那就创建了一个 st 的一个子程序,那当然呢,也是需要在这个主程序里做一个调用啊,做一个调用, 不然的话他的 st 是没有办法执行啊,没有办法执行,那咱们选择 st, 然后这些参数都不要啊。 好,那咱们进入这个 st 编程这个子程序啊,其实 st 的这个用法也非常非常的多啊,非常非常的灵活啊,比如说对于一个点位进行一个直接的复制,比如说 a 等于 b, 那么 b 字就直接复制于 a, 那么还有一些这个高级的语句等等, a 服的语句啊,常用的还有一些否循环等等,那非常非常的多。那简单的一些呢?比如说 a 服的一些应用,那咱们简单的做一个启动,如果,比如说咱们有一个 启动为一的时候,咱们比如说有一个输出啊,就等于一,那么咱们就是 t、 h、 e、 n 啊, 它的,比如说咱们建立一个 out, 那就等于一个一, 好,那么等于好,那么咱们最后再结束这个 if 延 d 啊, if 好,那么这就是一个啊,最基本的一个启动,咱们看一下它的实际的一个效果啊,下载到咱们的仿真里面看一下,然后下载完之后 呢,这边呢是可以去,咱们可以看到这边有一个切换内置内连值的显示啊,咱们可以点一下,然后就可以得到当前的这个值是多少。比如说咱们这个啊,启动为一, 那现在还是一个零,那咱们这个还没有切换到运行模式啊,那切换到运行模式啊,如果说这个 啊, star 为一,那么咱们确定啊, out 为一,对吧?那么这就是是吧启动了啊,如果为零的话,那是不是他还是为一,他就是保持一个啊,一个自锁的状态,那咱们再做一个,再做一个 if 啊, s t o p 啊, stop 则为零,一的时候为真的时候,则咱们的 out 啊为 零啊,为零,结束这个 if。 好,那么咱们把这个 stop 变量创建一下。 好,这个时候呢,咱们这啊,这这个结束符啊,结束符啊,好,咱们接受这个待定 啊,当咱们这个启动为一的时候,咱们这个输出为一啊,这边归零啊,是不是他保持一个自锁状态,当 stop 停止为一的时候,对吧? out 为零, 那这样就是一个啊启动停止的这种控制,那么我这边也做了一个简单的画面,咱们来运行一下,看一下实际的效果啊,启动它可以看到现在的 out 为这个为零啊,是吧?这个亮红灯,咱们点一下启动,是吧?现在 out 为一啊,然后的话, 这边是一个运行的状态,当咱们点击停止的时候啊, stop 为一,是吧?他就停止了啊,其实用法非常非常的多啊,甚至于说呢,咱们想实现这个功能,其实是只需要一行的程序啊,大家可以自己下来啊,研究研究, 还有更多的功能呢,请大家持续关注我,然后呢点点赞,加个关注,谢谢大家,咱们下期再见。

和 all 啊,还有一个 not 逻辑算符,就是我们在大学中学的数数数电中的雨或飞,这三个逻辑门 按的逻辑与与运算,然后多个条件要同时成立这个表达式才能为真。二的话就是 并列条件里面只要有一个成立,那我们这个表达式就为真。 note 的话就是对条件进行一个取法, 我在后面呢有一个简单的一个语句的应用,就是 if a 大于零,按的 b 小于零,任就代表 a 大于零, a 大于零的时候必须要满足 b 也要小于零,那这个条件才能成立,才能进入这个 e 这个语句里面,否则的话只能进入 ls 里面了。然后这里 e 服 a 大 大于 b, o a 大于零, o b 小于零,只要这三个条件中任何一个条件满足的时候,我们都能进入这个衣服语句里面,然后下面呢就是衣服 note, a 大于零,人在这个语句里面大于的时候,就就那个 逻辑判断语句呢,主要也有两种使用方式,第一种方式呢,就是与衣服语句进行配合,就按我刚刚上面说的这个,呃 呃。然后第二个鱼呢,是作为复制语句的右边部分表达式的一个连接符,比如说变量 a 冒号等于号,变量 a 大,变量 b 大于十,按的变量 c 小于零。然后后面是一个英语情况下的一个分号变量 a 的结果呢,就是这个复制语句左侧的一个表达值。最后是求啊,放死 下面衣服语句的一个判断的用法,我们可以看一下衣服,男人的个数减去女人个数大于零,同时呢男人的个数大于三 三十五个,那么我们就可以处理在这个 if 语句里处理相应的这个逻辑代码了。 好, s t 中的自卫和复位运算服这个用的也比较多,所以给大家介绍一下。 呃,字尾和负运算符呢,就是 s 等于和 r 等于,这个相当于我们梯形图中的 set 和 reset。 s 等于呢就是变量 as 等于变量 b, 应用状态下的分号。变量 ar 等于变量 b, 也是应用状态下的分号。他的意思呢,就是说如果变量 b 为真的时候,则将变量 a 字位为 q, 然后下面这一句这一行呢是如果变量 b 为正的时候,则把这个变量 a 复位为 force, reset 为 force。 啊,那我们 我们看一下这个程序怎么写的。如果这个慢大于屋慢,也就男人的人数大于女人的人数 s 等于就是自卫,这个 v i 面减去屋面的人数大于零,也就大于零的时候,就把这个这个标志位一个变量给 boy 型变量给设置成设置为那个求,他等效于下面的这这这句话,这三句话, if 这个大于零,认这个什么什么等于求。 那我们用这个字位和复位的时候,会发现是不是这一行代码就解决了这三行代码所要实现的一个功能啊,这就是我们字位复位的话也是一样的,不多说不多说了,大家自己可以在程序里面练一下。好,有技术问题就上我们。

用 st 语言到底怎么做流程图控制?这是我反复讲的第五种超级流程控制方法当中的 st 语言 case off, 这个方法 我用二十分钟的时间完整的从零开始把这个流程图,用 st 语言把它做出来。这个视频可能有点长了,想要学习 st 语言的朋友可以关注我,点赞收藏,这个视频比较长,耐心一点看完对你绝对有很大的帮助。 都说 st 语言比较高级,我们来用 st 语言做这个程序,做这个终极 p r c 钻孔机程序,我们来做一下完完整整的程序怎么做 st 语言? 好,我们打开,我们打开这个软件 g x works to, 然后新建一个,新建一个 f x c p u, 然后 f x 三 u, 然后结构化工程。你要写 s t 源的话,只能用结构化工程去做啊,简单工程是解不了的。结构化工程里边有 f b, d 和 s t, 我们选择 s t, ok, 选择 x t。 之后我们要新建你的全局标签,我们要新建一个全局标签,比如说我们选第一个啊, global 全景, global 全球的意思,全局标签对不对?然后呢?我们这个有什么?有什么输入?输出对不对?我们这个有什么输出?有一个启动对吧?启动 还有呢?提前啊,提前还有呢?头一头一原位, 从二原位,从一到位。好,我们按照这个所把所有的这个全局变量的作用就是把把这个 每个,然后我在程序里边就可以不用这个 x 音和 x y 对多少,直接就是文字了,对不对?然后复制,复制啊,然后呢?投 三投三原位,投三二位,然后呢?还要输出,对不对?输出是什么?投一电机是吧?投二电机对不对?投三电机,然后投一进几对不对? 因为我们这个中级下层我已经笔记的比较清楚了,是吧?啊,静姐,就说输入输出点有哪些东西。哦三,静姐, ok, 输入输出全部写完,还有个还有个卡蓝,对吧? 好,考完写完。然后还要写什么呢?还要流程拨号对不对?我们要用 st 语言, st 语言这个流程拨号呢,就可以用我们的复制语语句,就跟那个我们的那个呃,低频复制法差不多的,对不对?那我们这这写的流程不好,流程流程, 流程布,流程一,布号对不对?然后流程二,我们有三个流程对不对?好, 然后呢?流程三,这可以时尚可以复制哈。好,好,这里呢?这里的流程这个地方都是。然后这个数据我们填一下啊,数据是 be 的,这个是未数,未数据对不对?我们复,直接复制啊, 好,再复制多一点。好,这里也是并。然后这个呢就是 word 了啊, word 字 好,现在我们先选择把这个全局变量写进去,然后呢?这个是什么? x 零对不对?然后 x 一啊,是不是 x 二, x x 二, x 三, x x x x x x x x x x x x x x x 好, x 七到位。然后呢,头一电机是 y y 零,对吧? y 一 y 二, y 三, y 四好, y 五好还是 y 调好? 哎,写错了吗? x 零一二三四五六七七七是 x 三。对啊, y 零 y 一啊,找了个一啊,好,我这里把它那些直接复制下来。好,这个改成一 好,可以就这样。然后这边这边软元件呢?就不设啊,这边就软件,我这里可以软件也设。这个设为第一啊,对应的是第一、第二,第一个流程,然后呢?第三三个流程啊,也就也就是说我标签名,我可以直接用标签名来代替这些这些数据啊,因为我可能记不住 x 名是对应哪一个? s 二,对应哪一个, 是吧?这个就是有这个好处,对不对?然后保存啊,保存到桌面啊,保存啊,比如说我这里写,呃,三分终极项目、终极项目、 风景项目三工位大统计 s t 语言 s t 程序 ok, 确定 好,然后我们就要开始写这个程序了啊,开始写这个程序了啊,我们这个程序我们要首先要对它一个初始化,对不对?初始化是什么情况?初始化我按启动的时候,我要对它的一些一个数据的一个初始化,对不对?启动,我们用 if 字典啊, if, if 把衣服衣服启动按,要按启动启动的一个上升源。上升源是什么? l、 d、 f 上升源啊,上升源,然后呢?括号 好里面有个 d 个 q, 然后呢?直接启动启,直接输入启动好,刚才启动出来了,直接确定,然后这个是它的上升源。 if 这个如果为真的话能 好?你看我们把这个方块删掉。好,然后下一步,下一步干什么好?下一步第一、第二、第三,我们要对他进行进行哪个布号分析,对不对?对他,你说当前布的布号,我们要对他复位,比如说,呃,流程 我们要一定要注意一下啊,在输入程序的时候一定要英文的界面输入,英文的输入法输入,如果说你是中文的输入法输入的话,它是编辑不了的啊 啊?流程好,流程 pro 一,流程 pro 一,我们第一步是什么?我们看一下第一步是留到多少?第一步是二十一号, 好,我们就把它由二一复制为冒号,等于号好,我们写那个的时候,我们是写文中文的时候要挑到中文,然后写其他的符号的时候要挑到英文啊,这个注意一下,冒号负等于,然后呢?等于多少?二十一,我们也可以写 k 二一, k 二一或者二十一都是可以的啊。然后这个 然后呢,我们要,对,因为第一步他还没有到第二步,对吧?我们把第二步啊改成零啊,改成零 啊,第二个流程改成零,然后第三个流程度啊,三个,你看他也改成零,对不对?然后呢?我们这个程序当中会用到一个什么?一个卡完夹紧延时时间和电机启动延时时间,对不对? 来这个时间呢,我们给它定为多少呢?定为两百,我们直接输入嘛。呃, d 两百啊, d 两百啊,等于多少呢? 等于五十也是五秒钟啊,好,第一,两百零一等于多少啊?等于也是等于五秒钟,好,然后呢?然后就是 s, 然后就结束了,就等于二十,然后 s, 我不做任何处理,然后我就这样摁着摁着摁着下划线啊, if 对不对?好,这个是初始化好,我们加个柱时,柱时是括号,两个冒号,然后加个柱时就启动初始化启动按钮,按下数据,初始化 好,数据出转化之后呢,我们要来再来按一个,再摇,再有一个东西,是不是有个什么东西呢? 然后呢?我们要用到一个什么指令? kiss, kiss, 是不是 kiss? kiss 是什么状态? kiss, kiss, 比如说流程部,对吧?流程 流程,流程拨号一啊,流程拨号一等于一的时候,对不对?等于 case, 流程步啊,它的流程步一来,比如说我现在要写流程步一的程序啊, off off, 对吧?加上我现在流程不一,流程不一等于二十一,比如说等于二十一的时候,我要做什么动作?等于等于三十,我们来看一下,这个 等于三十,流程过等于主流程,主流程第一个得二十一、三十,三十一,三十二、三十三,对不对?是不是?然后我们来就把这些写上去,冒号全部,然后呢要仔细下一个动作,然后在下面写三十一冒号,三十二冒号,三十三冒号,还有呢?三十三过了之后呢?还有个什么 二十二对不对?最后一个二十二,好,然后呢?这个呢?结,结束了吗? 是不是?那我们要摁的下划线 case 好,也是我们第一个流程布写好,对不对?我们第一个流程布写好,然后我们在那里写这个框架,相当于是搭好了,对不对?框架,这个是第一个流程布,就我们再写个注时 好,注写是流程流程一的动作程序,对吧?然后我们写二十一,二十一的地步是什么?我们看一下二十一的地步啊,如果说变成二十一,我们按启动的就变成二十一了, 我们来看一下,我们按了启动,我们是不是把二十一复制为流程一拨号,对吧?流程一的拨号是不是复制给他?复制给他之后我们要指引什么动作呢?我们来看一下,指引什么呢?卡牌讲解对不对?到这里呢,我们就直接用 cat 指引 cat, 我们卡牌讲解是不是 cat, 什么 cat? 括号 这个块什么卡牌?我直接就是卡牌夹紧啊,就不写条件,条件为直接为真啊,为真的一句话,卡牌输出,输出卡牌 卡啊,输出卡完,这个叫卡完,字为 off 了,对不对?是不是?这这个叫卡完,输为字为 off 了。 然后呢?下一步要做什么呢?项目,我们字安了之后要要延时,对不对?我们要延时, alt 延时, alt 下划线 t 啊,下划线 t, 这个是延时指印 ok t, 然后括号延时。什么时候延时呢? d 啊,什么时候延时, 什么时候延时?流程流程拨号等于一的时候,对不对?流程拨号等于二十一的时候,等于二十一的时候延时, 对吧?然后呢?延时哪个时间呢? t c t c 二十一二十一号延时时电死器,然后延时多少时间呢?低两百低两百。我们这里没写标签啊,直接就是延时啊。 延时时间到之后呢?我们要直接下步动作延时时间到,如果延时时间到,我们要做下部跳转,要跳到三十号去,对不对?要跳转到三十号去,是吧?然后我们跳转到下步。跳转是什么?用木指令对不对?木木片 好。木木什么指令呢?木好,你看一下。我如果用汉文输的话,他输库输出来的就不一样啊,他的括号要小, 比如说 t s 二十一,二十一号出,二十一号继电器,如果说时间到了,然后呢?把三十三十复制给谁? d, 复制给流程过一号流程,流程一,对不对?好,这一项 复制这个,对这个进行复制啊,好,这样说,我现在要跳转了,对不对?如果延时时间到,我要跳转到三十,还有一个要跳转,这里有一个并列关系,对不对?我们直接复制过来就可以了,并列到哪里呢?要跳转到四十,然后呢?跳转到五十, 对不对?五十。然后这里是三号,流程部三号对吧?这里是流程部二号,对不对?好,跳转对不对?然后我们这里写个注释啊,注释是什么呢?然后并列分支,并列分支的跳转 啊,并列分支的三个跳转,跳转三个分支啊,相当于他三个分支的入口,对不对?然后到三十,三十之后呢?是什么呢?打开电机对不对?好?打开电机 shift 还是 shit 好?打开电机,如果没有条件的话直接写错,错是什么?真,真的话就直行,对不对? 写错了啊? t r u。 就说你如果说这个值,比如像我们这个,你如果写的队友全局标号,它的颜色会变或者字体会变得大些,如果不对的话,它就不会变啊。 to 然后,然后投一,打开,投一电机对不对?投一 电机对不对?出来好,打开同一电机,然后这是第一个动作,然后呢?又要又要干什么呢?同一电机打开之后又要延时,对不对?延时,下划线踢延时多长时间好说?括号,第一个,第一个什么时候延时呢?流是流程不等于三十的时候延时,对不对?流程 流程拨号等于等于三十的时候好,等于三十的时候延时。延时什么呢? t c 啊,三零啊, 我们跟着他的步号走啊,所以说我们定时器跟着他的步号走,然后延时时间写到哪里?第二零幺,对不对?延时时间,这个是电机开的时间,然后呢?结束封号啊,封号。然后在这里呢,我们要注意一下,在这里呢,我们要注意一个什么问题呢?啊?我们要注意一个什么问题呢? 好,延时。时间到之后我们要做什么?要木调转,又要跳转,对吧?又要木跳转,对不对?好,我们要木跳转。 好目,跳转,跳转到哪里呢?嗯,跳转到哪里呢?比如说 t s t s 三零,三零,如果时间到了,然后跳转到 k 多少? k 三幺复制给谁? k 三要复制给谁?复制给好流程,实际上我们这里用的多的话,我就直接复制吧,复制的话 快点,每次都来打好复制,有的不?一号对不对?跳转,跳转之后呢?封号啊,封号,封号。跳转之后我们要把上一步的上一步的这个 out 指令复位,所以说我们二上一步的这个 out 指令呢,还要在这里再出现一次。啊?为什么呢?他, 他这个奥德指令,如果说我们二十一跳到三十之后,奥德指令他这里这条指令他是不执行的,不执行的话他 这个 tc 二幺就会一直倒通,我们要来下来再跟一条这个指令呢?到三十的时候他这个条件不满足了,他就自然把这个复位了啊,当然你可以用 rst 把他复位,也可以啊, rsttctcr 零啊,复位也是可以的。 好,我们这一步写完了啊,这就是我们这一步。然后呢,我们把这一步呢直接复制到下一步来就可以了。好,下一步什么呢?啊?这个好像没变过来,是不是?这里没变?没没,没有变,大写,是不是。好,改一下?好变成 大侠。 st 好变成大侠。然后呢,我们这一步呢?投一电机打开是吧?投一电机打开之后下,不是投一晋级,这里是投一晋级啊,投一晋级,对不对?投一晋级打开之后,他如果等于三十一的话,然后这里就没有延时了啊, 这里没有延时,但是我可以加个延时,然后把上一度的导通的关掉啊。投一近几,然后跳转,这个跳转都是什么意思啊?这个跳转跳转呢?就是什么呢?投一到位了,对不对?这个跳转就不是定时了,投一到位好,跳转到什么?三十二? 好,我们可以把这个呢,这个呢?把它拿到后面来,你好看一下这个,因为是一个复位的意思,我们把这个加时间,加一个,加一个注射,好,加一个注射啊,是什么?复位复位 定时器,好,这里这一行,这个都是属于复位啊,下面这个都属于复位,然后我们再做下一步啊,下一步是什么?加了三十二,比如说投一到位之后,要把 r s t。 复位了,就是说投一晋级要到位之后 r s t 了,这里改为 r s t。 r s t。 好啊,到一个之后把图一进去复位,然后呢再跳转到三十三,跳转到三十三,他的跳转,跳转是原位了啊,这里就是原位了。 投一复位之后,原位之后跳转到下一步,对不对?然后再复制,然后跳转到这一步之后呢? 做什么?在复位电机,对不对?投一电机,在复位,投一电机,对吧?退回来之后,投一电机再关闭,然后呢复一复位,投一电机,这里就没有跳转,没有跳转了,因为要复位。投一电机之后,我们要等待,要一个汇合了,对不对?然后 十二的时候是 r s t。 什么?二十二号是复位卡牌,卡,卡牌 好,卡盘对不对?看一下二十二的时候是不是复位卡盘,卡盘松开对不对?复位卡盘好,这个就是投一的流程一的一个动作顺序完成,我们把它复制,复制一下,对吧?这是投一,然后呢我们复制一下,到下面,这是投二,改成投二。 好,然后头二,这里是头二,对不对?好,考完。然后这里呢,头二呢?就没有二十一号,把二十一号删除掉,对吧?然后呢头二的话他是三四十,把这些相应的改一下, 好,这些就相应的改一下就可以了,好,也没有二十二,对不对?图二就相对简单。然后呢,这个是呢二,你看把所有的一号全部改成二, 对不对?好,投二,原位,看,这样是不是很轻松?你第一个写完是不是后面就好乱了?好,流程不二。好,这个呢也是没有的啊,这个是二十一号复位 好,这个电,这个关闭删除。然后呢这里个布号是四零啊,把相应的改一下四零,这也是四零。然后定时器呢?也是定时器是 ok 的啊, 好,二,看吧,同二电机 alt 进十啊,这里是括号二,对不对?然后四零 t c 四零 d, 二零幺, 然后流程二,然后这个二二,这个三四十二,四十二,四十三啊,这个流程不二,对吧? ok 吧?然后这里是四四十,好,这个也对,对不对?这个就对,这个就是二啊,这个这是二, 然后我们再把复制为复制一下,改成三,好,改成三,动作改成三,看错了,改成三,然后这个也改成三,好,三的话,这里是五十五,五十五十五十,然后三三,然后三 三三,这个三三, 所以说这个标签的作用还是蛮大的啊,这里是五,是吧?五好,这是三三号。流程好,这里是五,这里是,这里是五, 然后我们看一下这里还有这里还是五,这里是五好,三五零五零 t 二零幺好, k s f 五零五一 r 十三图三电机三,电机五 p 图三原位,这个是五,这个是五好,还有吗?啊?这个如果是这个是颜色的话,这个颜色就不对啊,这个显示的绿色颜色就不对。 好呢,我们看一下在哪里?从三到尾 k a 五二,由三由成三。呃, 哎,这个是哪里?哪里?标点符号不对,三号五号五十二十一, 好, ok, 那个撇那个现在对了啊,现在对了啊,颜色显 是对正确。然后呢,我们这里有一个问题啊,就是要把这个什么呢?有一个合并的状态,比方对不对?我们这里都到十,都到三十三,四十三的,五十三的时候要合并啊,要合并对不对? 那我们要这里要再写一个合并,或者写到下面啊,再写一个合并好,合并是什么? if, if, 什么? if, 就是说三个流程,流程, 流程,流程拨号一,然后呢?都要按的流程拨号一,等于啊,等于三十三的时候按的呢?按的什么?按的流程好?流程 按的流程流程括号二 x 括号二等于多少?等于四十三。 留着 bro 三等于五十三的时候,这个时候我们来做什么动作,这个时候要我知道做什么动作,要把 d 流程符号一再归为二十一号,对不对?再归为 二十二号啊?要归到二十二号对不对?流程拨号二,我们要把它复制为二十二。流程拨号一,要冒号等于二十二,好,封号对不对? 然后 airs 空,直线空,然后 and if 括号,对不对?然后这个呢?是什么呢?这个什么意思呢?这是什么意思?合并,合并三个并列分支, 并列分支的合并,对不对?让这个的成绩都写完了,这个成绩就写完了, 好,我们把这每一个将来每一个图层给它分开,对不对?这个就写完了,对不对?这样好,对吧?这个是性启动按钮初始化啊,对吧?然后我们来,我们来编一下,有没有问题,保存一下。好,如果是红色的话就不对啊。 word, word 好,然后我编一下,好, l, l 为零, ok, l 为零, l 为零的话就说明 ok 了,没有错误啊。这里颜色也变了,变成黑色,黑色表示正确。然后我们来编一下,模拟一下啊, 好,模拟啊,模拟之后他这边就跳出来了,我们这边的执行结果,对不对?然后我们这个动作是什么动作?是按了启动按钮,按了启动按钮之后呢?然后卡牌置位 滋味之后延时五秒钟,电机啊,开电机开,延时五秒钟,开始静静,对不对?然后我们来当前值更换,然后呢?这个呢?当前值更改的话,我们直接点一下启动,然后就到这里来了,然后我们这里有按 off。 好的,我们来看一下。启动之后,现在拨号全部是零啊,拨号全部是零,我们按一下启动拨号,这个拨号就变成二十一,按一下启动。 哎,启动,启动不对啊,启动没启动,是吗?好,我们来看一下监控。 好,这里启动了哈,启动了,启动了,你看卡牌亮了啊,卡牌亮了,好,延时五秒钟,电机亮了,电机亮了,再延时五秒钟会变成多少?三十、四十一,好,对不对?三十一到四十一,五十一了,好,相对来说这里的分支已经到结束了 啊,现在拨号三十一、四十一、五十一到哪一个了?三十一、四十一、五十一。因为前面这两个步骤都是延时,所以说他隔五秒钟,我们这里是隔我们的隔 五秒钟跳转,然后在这一步就卡住了,这一步卡住了,投一没到位啊,那我这里把投一点一下,投一到位,他就会跳转到位,好,是不是?然后投一到位了, 投一到位,对吧?然后呢?投一进去就把进去复位了,三十二,把进去复位。复位之后我们要投点投一原位啊,投一原位要亮的话投一原位,如果亮的话,他就把电机复位,跳转到三十三。电机复位,你看电机现在是这样子的啊, 复位好,电机复位了吧,对不对?电机复位了,然后呢?要卡盘,要复位的话要到二十二步,二十二步的话要这个都到三十三,现在我们这个是流程不一才到三十三, 流程不二是四十一,五十一,对不对?那我们把流程不二来模拟一下,然后投一,投二到位,走一下。哎,可以了,流程投二到四十二了,然后呢?我把投二复位掉到位,复位,然后投一元,投二原位点啊,跳转到四十三,跟上四十三,四十三,跳转了,然后我们再看一下,投五,不是投三。 头删头删到位,现在是五十一,我点一下到五十二啊,五十二,对不对?然后呢,我们再把头删到原位,退回来,头删退回来,原位要亮点一下原位啊,头删原位,五十二要跳到五十三,看一下这个数据。好,五十二跳到五十三,对不对?结束 好,是不是卡文也复位了,对不对?当这三个都那个的话,都到 o s r 的话,卡文是不是复位了,对不对?是不是? 好?下面整个程序又结束了,对不对?然后我们再点一下启动,我们再循环启动,点一下启动,看看他这个二十二变成二十一,然后这边延时卡盘锁紧,二十好, 哎,他这个可能刚才是反应没过来啊啊?现在可以玩二十一,然后看加多大,马上加到三十四十五十了,对不对?这就是他的一个 s t 语言啊, s t 语言做的一个这个项目。

那我们就开始啊,今天晚上,今天的话我们就是给大家先做这个 st 语言的这个呃简介部分,一个是它的一个概念性的东西,还有就是它里面涉及到的一些关键字啊,以及标识符有哪些,还有就是它的一个呃常用的一个 st 指令。 第四部分的话是今天的一个重点内容,然后 st 语言的话,它就是属于一种高级语言嘛, 然后像其实跟那个 c 的话也是类似的,然后他在这个 codesys 软件里面的话,是算是一种比较常用的语言嘛,像我们可能用的多的,比如说有有用那个梯形图, 呃,用这个 st, 有的人可能还用这个 c f c 这种呃功能块儿来去做都可以,就是根据自己的 一个需要吧。你像 st 的话,在我们一般比如说编写一些比较复杂的一些运算啊,什么你用它写的话就会简单很多,你如果用梯形图的话,可能你要写很大一串逻辑上面控制的话可能也不太好,不太好弄。然后用 st 的话,我们可以减少这个代码的量、 编写量,但是就是有一点的话,就是他调试的时候不是很直观哦,就是有优点,有缺点。 然后像我们用这个我们三百呃, c 系列的这个 p l c 嘛,然后就是可以基于这个 q c 的平台然后去编程的,呃, 这个是通用的,像我们用的这个,呃,你用这个 quartz 的平台,它这个都是呃标准的,标准的这个 st 语言的。 看一下像下面这个这个图的话,就是用 s t 去写的一些东西嘛,直接就是一行一行代码这样子去写的, 然后这就是它的一个特点的一个总结,然后它是符合这个 i、 e、 c 六幺幺三幺杠三标准的。 然后我们看一下它的一个执行顺序,执行顺序的话大的方面来说的话,它就是从上到下,根据这个行号, 从这个呃这个行号的小的这个行号开始,从上到下这样子依次去执行的。那关于像,比如说每一行里面,比如说我还有一些什么加减、乘除啊等等这些怎么样?他的一个顺序怎么样确定这个就是我们表达式里面 它会涉及到的一个执行顺序,它也是有这个顺序的。我们后面看,我们先看一下我们的这个 s、 t 这个整个的程序嘛,它是由这个指令来进行构成的,然后每条指令之间的话,它就是由这个呃分号进行分割的, 就是由分号来进行分割,然后指令他又是由这个关键字和这个表达式组成,其中的话表达式里面又涉及到了这个操作术还有操作符。然后我们先看一下啊,这个操作术是什么东西? 操作数的话就是可以是常量,也可以是变量,也可以是一个功能调用,或者说是一个其他的这种表达式都可以的。你像下面列的这个呃常量,比如说我们就是直接给一个这个数值,二十、三十、四十等 这种这种数字,他就是常量,然后像这个的话是一个时间常量,呃,踢警二十秒,就是一个二十秒,这是一个时间常量。然后像在那个 st 里面的话,他的这个时间的这个写法的话,你就要按照他的这种格式去写,你不能直接写个二十 这种它识别不了的。然后后面这个用这个单引号引起来的话,这个就是一个字符串常亮, 然后下面的话就是变量,变量的话你像这个的话就是一个普通类型的这种变量,给给他一个这个变量的一个名称就可以。然后后面的话这个带这个括号的话,这个是一个呃数组数组变量, 然后这就是功能调用,像这个是一个函数,函数的话,它都会有一个返回值的, 然后像他的话也是可以作为这个呃操作数的。然后还有就是一些其他表达式,像这个进行的一个加减乘除运算呀,逻辑呃或啊雨啊这些运算都可以。 然后像这个表达式里面他就会有这个优先级吗?然后看这个表括号的话,他的这个优先级是最高的, 就跟我们数学里面的是一样的吗?有括号的先计算括号里面的,然后基本上基本上和数学里面的这个呃优优先级的这个顺序是一样的啊。然后第二集的话就是有这个函数的,然后这就是求密,然后什么求求反啊这些,然后是 呃乘除属于一级吗?一级还有这个区域,然后加减的话就是再次一级。所以就是你遇到比如说 乘除跟加减同时都有的情况下,那肯定就是三,先算这个乘除后算加减吗? 然后向右边,向右边这个例子啊,这个是一个定时器,这个是一个定时器 ton 的一个定时器,你看定时器里面它有两个这个输入引角,你像这个引角里面它给它复植了吗? 这边的话我们就涉及到了一个运算的,他有一个雨运算,然后还有一个求反的一个运算,你看这个表里面他的这个求补的这个运算的话,他的优先级是高于这个雨的一个运算级的。所以我们这边去计算的话,就是先给这个 y 二这个变量 给它求反之后,然后再去和这个 y 变量进行与,然后再把与的结果,然后给到这个 in 变量里面去, 然后刚才讲了这个操作术,呃,操作术嘛?然后下面我们来看一下这个操作符,像这些的话他都是属于这个操作符的,然后加减,刚才在那个表达式里面的那些加减这些他都属于操作符的,或者说你的符号的正负这些, 然后像这个注释,注释的开始结束啊,然后还有刚才这个数的一个,比如说二进制十六进制数的一个表示的一个井号的这种分格符,它都是属于这种操作符。 就大家看一下都有哪些操作符, 然后像数组的话就是用这种,呃,这是这叫什么?括号中括号把它引起来的这种,然后这个的话百分号这 格的话就是,呃,可以把它就是相当于关联到这个就是我们变量的一个前前缀,直接地址的这种变量的一个前缀,然后像这个这样子的一个符号的话,它是用在这个输出上面的,你像这边这个就代表着输出,然后输出复制给这个变量 alt, 然后我们再来看一下这个,呃里面涉及到的这个关键字是什么东西, 关键字的话你可以把它理解成这个呃, st 语言里面的一个固定词汇,就是它这个词放在这个里面,它它就是有特定的这个含义的。 然后我们只要记住就是这些关键字,我们不要把它用来去做这个变量名称呀等等这些或者说是你的呃,像 像这个数据类型这些,比如说我们有这个 interreal、 boar 等等这些数据类型,像他这种的话都是属于这种关键字的,他只能用来做,只能用来表示这个对应的这个数据类型。你不可能说我取一个叫 inter 名称的这种变量,这个是不允许的, 就是我们就是记住这个关键字,呃,不要把它作为这个普通的这种呃名称来用就好了。你像我们在这个软件里面,在软件里面我们去 呃可以看一下输入助手里面,然后他这边也会有这个关键字的,就是关键字有哪些他都可以列出来。而且在我们这边去进行这个声明或定义的时候,比如说这边这个 what 就是在在这里面就是可以 去定义这个本地的一个变量嘛,在这个空间瓦跟 under 瓦之间,我们可以去定义这个本地的一个变量,然后像他的话这个是成对出现的嘛?成对出现的,然后他是就是关键字,然后在这个软件里面他直接帮你用这种蓝色的这种字体帮你标识出来了, 所以,所以你也一般不会去把它用错。这个呃,我们核信的话,暂时的话是我们三百 c 系列的 plc 支持这个 st 语言的一个编程,然后用的是这个 codesys 的这个软件, 然后我们自己那个平台的话,呃,后续的话也会有这个语言出来的,所以大家可以先在这个上面基础上学习一下,因为他语言都是通用的嘛,你到时候去其他的这个平台上面也是可以用。 像刚才我们这个看,这就是内部变量段的一个开始以及结束,他他他这些的话就是属于关键字, 然后输入类型、输出类型等等,这些在软件里面都可以帮你这个,呃,列出来的就是用那个蓝色的这个字体会会区分的。

sd 语言逻辑运算语,也是语句步行运算。 plc 最基本逻辑是遇逻辑和或逻辑,也就是梯形图的串联和并联。 ng 就是和的意思,及两个条件同时具备时,逻辑运算结果才为真,提醒,图里面的串联就是与关系挥霍,就是或者的意思,两个条件只要具备一个逻辑运算结果就为真,提醒,图里的并联就是和的关系,那就是取反的意思,也就是梯形图中的长臂 x。 二、一货,他是一种特殊的货逻辑,一登双控就是一货逻辑。下面是逻辑运算关系的真指表。 无符号数的逻辑运算,参与逻辑运算的不仅限于波子形变量,也可以是无符号数极位型、多型、老人型, 即不爱停电量。当参与逻辑运算的微型变量时,会把这个微型变量转换为二进之数。不过型与微型的逻辑运算由于数据类型不同,不能直接进行运算,需要进行数据类型转换。干货总结, if any 语句,它是非常重要的语句,可以说是万能语句,几乎所有的计算机都给语言都有一份 indiff 语句 s 英文,否则其他的意思,如果判断条件为特,则执行语句一,否则执行语句二。第四语句的综合英语以经典的其保庭程序为例,讲解如何用 s g 语言实现第四语句与逻辑运算语 句。例子如下,智维与复位,在卡特 cs 平台的 plc 中是 visat 和复位 rst, 除了用复制语句合一复语句实现外,还有专门的运算服务,即用 d 等于和按等于分别实现智位和复位。点个赞,关注一下呗!

好,今天咱们给大家讲解一下那个 st 语言,它那个 case 语句它的一个使用的一个用法,咱们先把它它的一个整体的一个架构,咱们给它讲解一下, 咱们前面 sd 语言咱们重点给大家讲解了易辅语句啊,今天咱们给大家讲解一下 case 语句它这个使用用法。首先这是一个 case, 是一个关键字, case off 是一个关键字,还有这个 s and case, 这就是它整体的一个架构,中间是咱们定义的这个 tw, 咱们定义的它的一个数据类型,是一个整形的一个变量, 它属于这个 inter 型,根据这个 inter 的一个数字大小选择它的一个语句。如果这个 tw 为一的时候,咱们这儿执行一个复制语句,把一复制给一个二, 然后如果它为二的情况下,然后咱们复制给一个二,呃,把这个 i 复制一个二的一个数据,然后除了以上两种情况,咱们让这个三复制给 i, 然后结束这个 any case, 这是它整体的一个架构。所以说大家学这个 s t 语言的时候,语句的时候,先把这个语句的一个整体的架构掌握了,它包括 case, off, else, at case, 这就是四个关键字。 然后接接下来咱们根据利用浙大中控 ecs 七百,咱们给他组态上一个那个逻辑,咱们在用户功能块当中,咱们给他新建一个用户功能块,比如说咱们在这给他新建一个 c a s e 零幺, 这是咱们的一个定义,它的一个功能块,然后确定, 然后咱们再双击进入他那个逻辑组态的一个界面,咱们首先给他添加一个注视,注视的话是那个括号,加两星号,一定要切换到这个英文状态。 然后今天咱们给大家讲解的是 case 语句, 它这个 st 用户功能块的一个创建。 然后接下来咱们首先第第一步定义他的输输出仓数,咱们在这比如说定义他这个输入仓数, 输入仓数的话,他这个数据类型咱们给他一定要这个数据类型,他必须是 inter 型整形,然后确定咱们在这再定义一个输出仓数,输出仓数的话,咱们给他定义成 real 型 啊,也就是浮点数 float。 然后接下来咱们利用这个 case 语句给它进行个那个逻辑组态,咱们比如说 case, 咱们这个选择变量,咱们选择的是 r n 一,然后它整体的价格 就是 case off。 然后如果它为一的情况下,比如说如果那个 rne 为一的情况下, 咱们让它执行一个复制语句,把这个 alt 一,咱们比如说给它复制一个十的一个数据, alt 一复制冒号,等于号十的话是十点零,这个数据类型一定要相匹配。 如果它为二的情况下,咱们把 alt 一 复制复制一个,比如说三十点零, 然后除了以上两种情况, airs, 咱们让它那个,比如说这个 alt 音用来控制这个变频器的一个频率频率指令,除了以上两种情况,咱们让这个变频器相当于公屏运行,给它复制一个五十点零的一个数据, 我们前面这个 alt 有问题啊, 然后结束这个 anne case, 然后咱们编译看看咱们这个逻辑有没有语法错误。 现在出错的情况下,咱们就可以那个双击这个出错的这一行,然后咱们那个双击他就会锁定到这一行,然后他会那个有一个错误的一个提示, 错误 case 一第三行,然后它这个是冒号,这个是一个非法的,然后这个一定要是英文状态啊,比如说它唯一的情况下, 然后咱们再编译,你看这个分号的这个大小也不一样 啊,现在也没有问题了,这就是它整体的一个 case 语句它的一个架构。所以说大家学 s d 语言的时候,一定要先把 把它整体的一个语句的一个架构整体掌握了,把它这个数据类型一定要搞明白,然后利用咱们这个组态实际的一个组态,然后验证他这个语法错误 啊,然后这样咱们那个经过练习就可以把这个 s d 语言进行一个掌握。 s d 语言创建好以后,在咱们实际程序当中,咱们就可以调用它完成咱们实际的一个,比如说设备的一个控制,实际的一个变频器的一个控制。

大家好,我们今天继续讲解入门篇第九章指针机引用的学习。我们今天要讲的是引用和指针的定义。 在讲这两个参数变量之前,我们先看一个 in out 变量和引用的这么一个关系, 就是我们在一个功能块 f b test, 我们定义了一个 in out 变量,然后我们同时又定义了一个 if c y, 这是一个 reference 引用型的一个变量,这两个变量同时都是 数据类型,都是这个 f b c y 这个气缸的功能块。那当我们登录到控制器以后,你会发现我们定义的这个音 out 变成 f b c y, 他其实就会 会变成这个 reference, 那么就得出第一个结论,就是 in out 变量其实就是一个引用的类型, 那第二个指针本身就是一个地址,引用本身是一个特定类型的收集类型, 从当前这个公路看,我们可以看到一个叫 if c y, 那 if c y 它就是一个 reference to 这么一个气缸功能块的这么一个特定的数据变量,那么那个 p c y, 它是一个 point to, 它是一个指针型的变量, 那 pcy 的值,它是一个指针,它是有个值的,是指向了这个气缸实力的这么一个地址,那就 pcy 这个指针变量本身而言,它其实就是一个地址, 我们是没有办法通过 p c y 去操作这个旗杆功能快的,但是应应变呢,是可以, 当然了我们可以使用。就是第四点是讲这个指针调用实力的时候,需要这个符号,三角号也是可以操作指向实力的这个内部的这些变量。 像我们把当前这功能块打开,点到 f b test 这边 in out 变量,这个指针变量 point to f b c y, 这是一个引用型的变量,像我们直接登录上这个控制器, 登录控制器以后,我们发现这 f b c y 它其实就是一个 reference, 那 if c y 其实它也是一个 reference, 我们在 没还说这边实力化了这个 f b test, 而且对他三个接口都复制了同样的这么一个实力,就是这个气缸的实力, 气缸实力是 f b c y e, 然后分别复制给 f b test 功能快的三个接口。 可以看到第一个我们所说的这个婴儿边就是一个 reference, 我们双击点开这个 test, 它其实就是个 reference, 这是一个应用指针,边上本身是一个地址,那 p c y 它就是一个地址, 监控时可见内部变量,引用不可见,什么意思呢?就是说你看我这个 p c y, 我指向了这个地址,我前面有个三角号,我一点开就出现这个, 这个地址指向的真实的这么一个数据就在这里,他有个三角号就可以取真实数据的这么一个,再点开这三角号,可以看到我指向的当前的这个功能块所有的这么一个 状态都是可以看到的。但是这个 ifcy 它是一个 reference, 这么一个引用型的这么一个这么一个变量,他没有办法去看到内部。 但其实在当前的这么一个程序在就是 r f c y 在背负的春开了三的这个环境里面是可以看到的。下面我们比如说把这三个还有这一个复制一下, 把原来这个军开的三里面东西全部删掉,右键直接粘贴,直接登录, 从这里可以看到就是春开的三和 ctrl c, 它们的底色都是一样的,也就是说我所有的 功能快直接粘过来啊,直接运行就可以了。我们双击打开这 f p test, 在这里我们可以看到这个 r f c y, 它前面也是有个加号的,那点开以后就可以看到所有的你的内部成员,这个 p c y 它也是可以 看到。如果 pc 弯要点两次,那 i c 弯就点一次就可以了,也就是说这个 refer reference 这个变量在背负的推开的三 里面会更方便,毕竟在 ctrl c 里面,我认为是没有办法去点开这个 r f 的。 比如说这 f 内部指向的这个实力是什么?我们应该怎么查看呢?你首先要必须知道啊,你是指向他的,你只能来到这个 man 函数这边啊,直接这样点开这个里面才能看到里面这个状态,那既然你这个 c y a 已经复制给了 r f, 其实 r f 里面的状态跟它是一样的,但是我们没有办法这个 test 里面去做一个这么一个操作。 我们继续再看功能块,这个 f b test 内部有两个功能块,就是内部有两个指针型的变量,一个是 f b point, 一个是 r f point 就是它都是之前一个 word。 那第一个 f b point 呢?它是把 f b in out 这个变量的指针取过来, a d r 就是取这个变量的 地址的意思,那这个 point i f 就是把这个 input i f c y 的地址取过来。 由于我们在咩函数调用的时候,我们知道这个 f b c y 跟这个 if c y 指向的都是同样的实力,那理论上来讲,这两个指针的数据应该是一样的, 那以及我们外部也做了一个 pony 功能块,直接把这个十一的地址取出来放给他,我们再观察一下这三个指针型的变量,你看这个字 幺五三八幺八五零,我们点开 test 看一下内部幺五三八幺八五零,以及这个 p c p c y, 它也是幺五三八幺八五零,但是这个 p c y 它指向的是一个 功能块,那么下面这两种指针类型,它指向是一个 word, 那我们把这个 word 点开,它其实就是一个 word。 虽然他们的这个啊,这里要就是有一个问题会比较搞混, 就是我这三个指针我都指向同样一个地址,为什么我把这个指针点开,他不一样?但就是因为我们在定义这个 point 的时候,你需要也给他一个 类型,如果你这个指向的类型是一个整数,那么这个值他取三,用一个取三角号, 用这个三角号来去获取的就是你指向的这个数据,它就是个 word。 你比如说我可以把 if 它 等于零,这样写是没有问题的,那么光标放到这里来,它吸取这个 world, 我们编一下。 但如果你这样去写,比如说啊,还是同样的一个操作,比如说 if c y 取地址, 然后等于零,它就会报错。因为你 p c y 加上这个三角组合起来,它的数据类型其实是以 f b 杠 c y, f b 杠 c y 跟等于零,它是没有办法进行比较的, 一个功能快,怎么能等于零呢?所以这个判断的逻辑就是有问题的。你这个时候如果我点一下,比如说 w i 这样子我们再编一下,那他就不会爆错, 这里会需要说就说明的这个问题,就是虽然我指向的指针都是一样的,但是我指针本身的数据类型是不一样的,那么对于这个指 指针的操作他也会不一样。我们继续看一下。这个 刚讲完。第三个就是监控的时候引用不可见,但是背负着 ten cat 三的环境是可见的。第四个就是实力需要符号引用不必。 什么意思呢?就是我们在调用 p c y 内部的成员变量的时候,我们需要加这个三角号,那当我们使用这个引用去调用的时候, if if c y 的时候,我们是不需要这个三角号的, if 它等于零,在这样就可以了,我们直接登录它 程序是不会报错的。程序是不会报错的的原因是因为我们在 man 函数里面对它都进行了一个复制,你比如说 我只对 in out 型的变量做一个复制,因为这种类型的变量你不复制它变异就会报错,所以必须要复制。那这个时候我们直接在登录这功能看会不会报错呢?不会报错, 因为什么呢?因为我们是属于一个在线的,在线的一个更新,这个 f b test 里面的 if d y 或者是这个 p c y, 它的值都已经被负过了,那如果我们直接热负为 再启动会不会报错?我们再看一下,那直接会报错, 这个 p c y 没有在 man 函数中对这个 p c y 进行一个复制,然然后你在功能框内部直接就取这个地址,那他就报错了。那在这里我们需要做一个判断,怎么写呢?就 if 对于指针做一个判断, a 五 p c i 不等于零,不等于零,它就是指针有效 再做一个判断。那如果对于引用呢?比如说引用这个 r f, 如果我们也没有对它进行复制的话,它其 其实也是会报错的啊。在这里对于引用是否有效的一个判定的,一个有一个运算服务叫两个下划线,你看 is valid reforest, 就是是否是有效的引用, 那把这 i f c y 写到这个里面,像那一个函数一样, then 如果 i f c y 有效的话,那这个返回词就是 true, 也就是说 ifcy 有效,我就执行里面的,如果它无效,我就不执行,不执行它。你只要没有去对 if 做一个读写的操作,不要触发这个 未复制的引用,那么这个功能快也是不会报错的。再次登录这个,这是我们选择完完整下载,因为当前指针已经一出起,你的 prc 已经就死机了, 他已经没有办法进行复位了,只能断电重启。那这个时候我们在运行这个,发现这个虽然是个问号啊,问号就是这个指针没有被复制,那他也当前 plc 一直在跑,并没有被报错。 我们说了说了这个指针跟引用就是大概有有这些个问题,就是按一压的本身就是一个 reference。 指针和引用最大的一个区别就是引用,对于比如说这个气缸 的成员变量的时候,指针需要这个三角号,那也用不必,这是一个最大的一个区别。那我们在实际用这个的时候,比较经典的一些使用的一个场景,我们可以说一下, 比如说我们在这定义了一个轴轴的功能块,轴的功能块里面有有写的就 be trigg, 有状态显示的,比如实际位置速度,那对于这个边上来讲, 假设我这个 be fb test, 他可能他就是一个轴的操作功能块。我们一般情况下对于一个成年变量又读又学,我们就是从基础语法就会知道,我们需要把它定义成音要的形的这么一个变量, 比如说我们定在这里 stax, 那在功能框内部就可以对它进行一个操作,但是这个操作比较讨厌的是什么呢? 你先把这个注视掉,就是说我这个 f b test 的功能快,我想要去我们把这 f b test 也给它改一下,比如说这是一个轴的功能快, 这就是一个轴的功能款,然后我们定义的这根轴角就叫 x a, 我想知道 x a 的它这个轴的引用里面的当前的位 怎么怎么样?在程序里边,程序里面要做一个判断,比如说 if, 我用它等等于二十,然后我想做一件事情,我们编一下,他就会报错, 它就会报错。而且这个时候我们把这个结构体的变量放在 in out 里面,就意味着怎么样呢?我们需要还搞一个全局变量, 然后这边再做一个类似于 s t x a 的状态 st 杠 a x, 然后还要把这个 x 这个玩意儿 x a 叫 f b c y, 这个先不管它 f b c y e, 然后 s t 这个东西等于 x a s t x a 调用这个功能框,我们要这样去写,然后使用的时候这边还不能直接引用这个功能框内部的, 然后还必须要怎么做呢? 你再复习一下, 还要这个样子写, s t x a, 还要这样去写,但是大部分时候我们有时候可能是这样做的, 我们有很多种, 我们有很多轴, a, x, i s, 那这个是这是一个数组, a r r 中括号零零,比如说失根轴 of, 那在使用的时候我们可能是这样写的,中国号零的给过来, 那这边把这个删掉。我们在引用的时候,我们想知道 x 轴的,因为这个零号复制了个 x 嘛,我们想知道 x 轴的当前位置,你还要这样去写, 就是非常的麻烦。那我们这种使用场景的话,我们换一种操作思路,把这个放到哪里?放到这边来,而且把它变成 reformance 这个样子。我们在全区变量里面还是做了一个数组, 在调用的时候把这个数字给过来,这个时候直接变异,我们发现第五行已经不再报错, 就是说我在调用这个 x a 功能快了,比如说我在定一个 y a, the y a 十一号, 我想使用哪个功能快,比如说 y a 的功能快,然后我就直接用点去获取内部的这个 s t x s, 然后再点这个这样的这样的一个写法就非常 非常明确。那不像在使用全局变量的时候,零号到底是对应哪个组,一号到底是对应哪个组?就是你要你要记住,否则写出一个标号就可能会搞出一些问题。 那像这个 reference, reference 这个引用型的这么一个 比较常用的一个使用的一个场景,就是刚刚所讲的这么一个状态,那有关这个指针的一个应用,指针以及引用的一个应用,其实大部分时候我们是能不用就不用, 比如说像刚刚的这种问题,我在下面我使用了这个引用等于二十,那比如说如果我编程我这样去写, 我放在上面去,他就会报错,因为什么呢?因为当我们只有少过第七行,少过第八行的时候,这个应用他才有值, 你从第三号你就开始用,这显然就会报错。我们现在登录一下,我们看一看,直接在线修改, 在线修改直接就保存, 所以我们必须要对这个指针就相当的熟悉,你要其实就是一点,先复制再使用,如果你不确定他有没有被复制,那你只能怎么办呢? 做判定,那最简单就做判定, if is 这样基本上就是万无一失,不会有问题。 有关指针和引用的这么一个关系,我们今天就讲到这里,因为这个指针的应用 太灵活了,可能需要一个具体任务的一个需求,可能才会展现出他实际的一个威力。那我们今天的课就讲到这里。

今天的话主要是有三个变量啊,这个是整形的变量,一个是 b 八分,八分一,然后 f 二 shift 加 f 二之后,然后可以设置这个变量。然后今天主要是呃用衣服 l c 活动, 呃这个指令啊,就是做一个呃从零到一千,然后从一千到零, 然后这个他会就是多次加,加到一千,加到一千之后他会减,然后就是如果这个数的话就是小于二百的话,这个设置八乘以一是一,但小于五百的 他是二,小于八百的话他是三,那那么假如他是八百到一千的话他是四,所以说我们要执行一下按 log 一,我们执行一下程序 啊,当然这个我们我直接点的是转,假如说没有点转的话,我直接点 f 点转,然后这个程序才能运行。大家可以看看这个数字, 看八千,你可以看看这个八千一代表了这个。

大家好,今天我们学习一下 ton 计时器的用法,在 st 语言中, ton 计时器已经被官方封印成功能块的形式供大家调用。 在山顶中,我们在导航栏部件选择窗口,然后 fb 打开,这边有 ton, 好,我们把它拖出来, 然后这里我们命名,就跟替邻梯形图里边的替邻 t 一给他一个名字,我们应用关闭,然后 这个定时器跟下面的定时器这样就一样了,我们 in 是启动定时器, pt 设定时间 q 输出, et 是倒计时就是定时器,我们设置五秒倒计时,五秒后就启动。 好,我们现在模拟一下 边翼没有错误,反着 启动, 五秒后输出,输出输出,我们看下一边一段程序 启动 也输出了,是不是比上面少了什么?少了 q 跟 et。 在 st 语言中,我们大多数都是下面这种方法使用,节省了一个输出变量,直接用 ton 点 q 输出 作为一个输出变量,我们不用在变量表中创建运行这个变量,省了一个变量。

今天我们继续学习 ctc 使入门篇常用开发环境调试技巧的如何触发中断调试。 中段调试的菜单都位于调试,调试下面有下面几个菜单可用 默认这个设施以及清除断点默认快捷键是 f 九,我们这边已经改成奥特加一,那奥特加一是设置程序停在哪一行, 那么下面的跳阔,跳入,跳出运行到光标处,设置下一条语句,分别的按一下的一个功能是触发从当前 的中断了这一行程序往下直行的动作。那跳过, 跳过指的是什么呢?跳过指的就是不管你是下一行是简单的复制一句,还是调用了一个功能快,他都会把内行的程序完全执行了。如果是一个功能快里面有一百行程序,那么他也会执行一百行, 那跳入就是如果你执行了这个功能框,他就直接跳到跳进这个功能框里面,那么跳出是相对于跳入来讲, 跳出就是相对跳入来讲,他们俩是一对,就是我按一下奥特加跳进这功能块,但是我又不想一步一步完整的直 新玩这个文化可以就利用这个跳出功能。那运行到光标处有点特殊,我们一会用历史去做一个讲解, 那下面就是有两个点,就是触发中断的这一行会变成黄色,那么只有前段有圆点的这个灰色圆点的才可以设置中断。那么下面我们开一个程序, 这一个 program 是我写了一个简单的灯,三种状态控制了这么一个程序。 i state 是一个 interesting 是一个状态,零一二代表关灯、开灯、灯闪烁,这是个电视器,这是一个 灯的波亮的这么一个输出,输出信号,下面我们已经出一个仿真模式登录这个程序,奥特加一 登录完成以后,当前的程序是属于一个停止的状态,我们需要单击这个启动或者是在线 调试,这边有个启动默认的快捷键,就是 f 五,这个是没有改的,我们按一下 f 五 上学已经属于一个当前是一个运行的状态,但是当前的所有的变量看上去好像没有任何的反应,这个也很简单,因为 is 在的状态是零,那么他一直在执行这个灯等于 fast, 灯原来就是 fast, 所以你看上去好像这个程序并没有动一样。 那下面为了让看的更清楚一点,我们加一个计数器,这个计数器在这个程序是一直属于一个累加的状态,那么如果程序在运行的话, 你可以很明显的看出来程序到底有没有在跑 那虽然我们刚刚讲完了这么一个零一二,零是关灯,开灯,灯闪烁,这是个定时器, 定时器默认等一处开定时器,定时五百毫秒,定时器到达,进入衣服语句,衣服第一行先把灯取反,然后再关闭定时器,由于你当时的 ice starred 还是等于二,那么他 趁以后再回到第七行,再开定时器,然后再出发定定期到时,然后再去返。有这么一个流程,我们如果对刚开始对定时期相关的功能快不是很熟的话, 你还是不是那么清楚,所以说我们就可以用到这个中断的功能,让你非常清晰的看到这个程序的执行的一个状态。下面我们先看第一个,就是设置这个断点,我们要设置断点, 首先有圆圈了才可以设置断点,那么三号是有圆圈的,我们按一下这个调试切换断点,奥特加一为了三号就触发了这么一个断点。程序 触发断点以后,我们发现这个技术已经停掉了,比如说当前程序已经是一个停止的状态,那触发断点的这一行也会变成一个黄色,下面我们如何针对触发断点的下一步的这么一个操作, 那就是奥特二三四,在此之前我们先取消这个断点,再次单击奥特加一,就是切换断点,然后我们继续让这个程序 运行起来,就单击这个启动,或者是按下快速线 f, 我们可以发现程序又继续跑起来。此刻我们光标放在第零行,第二行前面是没有圆圈,我们按一下奥特加一, 所以呢会报这个错误,说不能在第二行,然后失职。断点不是一个有效的断点位置,第四行也同样会报这个错误,那第五行 没问题,但是第五行你设置断点成功,他并没有变黄,程序也并没有停止下来,是因为当前的程序控制了逻辑,他不会停到第五行,所以说不会停到这里来。即使你在这一行试这个断点,他也是不会触发这个断 这个中断程序的,就像第七行也是一样的,我们都可以设置断点,但是他并不会在这里停。下面我们把光标点在第二行, 然后在这里单击这个切换断点,同样触发了这么一个那个疑问, 出发,出发了,刚刚的这个错误让我们再次在第三行出发这个断点下面我们使用调试的这个功能跳入功能奥特加二,我们单机械奥特加二,发现他就直接跳到下面去了, 我们再次单击奥特加二,他就回到这个 reton, reton 的话他就会返到第一行重新继续执行,再单次单击一次奥特加二,他就回到了第一行,我们直接按试用会计进行奥特加二, 奥特加二,奥特加二再回来,这就是当前默认查的程序一,一直在刷,一直在刷,就是这样刷的,那我们 们取消这个断点,让程序一直跑起来, ctrl 加二退出当前的这个程序,因为我们刚刚都是一个单行程序的一个指令,我们下面调用一下这个 program program 跟这个 prom 就是直接复制了一下, 我们在加一之前调用这个杠一的 program, 我们再次在零号这里出发,断点奥特加二, 走到第十三行,十三行是一个 program program, 杠一里面有这么十二行程序,然后我们如果在此刻按 一下奥特加尔,你会发现他直接跳进了这个 program 里面,然后在奥特加尔他还是在一步一步的去执行这边的程序,那奥特加二执行完以后,他会再返回原来的这个吊用点,在奥特加二, 在奥特加二再继续奥特加上跳入,再跳入,再跳进来,那此刻我比如说我到地上,后面的我不想看,我想直接跳出,那就可以用到这个奥特加四,奥特加四直接跳出来, 然后再奥特加二,再奥特加二,那么奥特加二跟奥特加四四就是对于你当前执行行,如果不是一个简单的复制议局,是 功能快,或者是一个 program, 或者是一个函数 f c, 他都会有刚刚的这个功能,会跳进去,然后跳出来, 那奥特加三呢?奥特加三,比如说来到第四站好,我们直接奥特加三,他会直接把整个 pro m 杠一完整的跳过去。 也就是说对于奥特加三来讲,如果执行是像四行这样的通用的非功能化的这样的一个标准语句的话,奥特加二跟奥特加三是一样的一个效果。 那么如果执行的是功能快或者是函数类似的这些,调用了一系列的这么一个程序的这么一个函数块的话,那奥特加二会跳进去,奥特加加三,他就会直接完 完整的执行往里面的所有的程序。那当前我们在从奥德加斯就是跳出这个直接直接跳出来,我们在全速的运行,那对于中段来讲的话, 大概就是这这个样子,我们让程序继续再抛起来,此刻我们取消这些断点, 我们在第七行加一个断点,然后对断点的状态复制一个二,然后再来完整的去看一看这个灯散数到底是如何完成。 ctrl 加 q 写入, 他会来到这个断点,首先首先我们按一下二次加二, 然后呢 t red, 他是一个,他就其实就是一个功能块,但是呢这个功能快的元旦我们并没有,所以你进入一个系统的一个功能块 的话,你是进不去的,因为你没有元代码,所以说他就会谈这个错误,他你找元代码你肯定也没有,就直接点否,点否的话,他就相当于执行那个奥特加三就直接跳过去了,也就是说遇到系统的这种功能块就不要奥特加二了,只要奥特加三跳过, 也就是说在这里直接开启了电视器,然后我们奥特加三当前的 q 是 fast, 他就直接里面的程序就不动了,我们再调回来,在奥特加三一直奥特加三, 再回到这里来,再奥特加三执行一次,你就发现这个 qq 已经亮了,这个 qq 已经亮了, 让我们再次单击二,再加三就会进入到衣服里面,把灯取反,这时候灯取反下面是执行了一个英语等于 fauce, 把这个定时器 现在为了关掉,当我们执行完以后,发现这个 q 会变成 fas, q 会变成 fas, 音乐变成了 fas, 然后我们再次二次加三,再回到二 在这里,然后他就会干什么,再次重新开启电视机,然后再等待电视的到达,然后也就是说如此的反复,如果我们成 去把它开起来,你会发现这个 light 一直属于一个闪烁的这么一个状态,在这里我们把程序改一下,比如说我是一个点,这是出席者学定时器非常容易犯的一个毛病, 那此刻我们还能不能完成这个灯的这么一个 这么一个闪烁的功能?你会发现这个的这个电视器音是 fast, q 在一直亮,因为我们刚刚中断演示的,发现这个音是 fast 的时候, q 一定是 fast, 就感觉拿了这个系统有我就不对了。 然后这个时候我们再二再次加断点,你会发现 此刻 q 是处的,音是处的, q 也是处的,我们在这里把灯取反,我们注意第十行,我们虽然把音等于 fos, 但是这个 q 并没有 fos, 所以为什么呢? 这种吊用的方式跟我们之前执行的不一样,你之前执行的相当于把 tyride 你执行的一个功能快,你是掉了这个 tyride 的功能快,但是 我们改完以后的第十行,他其实只是把这个功能快的银角音把它给 boss 点,你并没有去执执行这个 t read 的功能快。 t read 功能快,就像我们这个 pro m 杠一里面,它里面写了肯定不止一行程序,那么你并没有调用这个 t read 的功能块,也没有执行里面的复位程序,那么对于这个 q 定制器来讲,那肯定是还是一直去的,那我们继续奥特加三, 再回到, 我们在这里再加个断点,奥特加三 这个时刻音是 fast, 我们再回到上面继续执行,再回到这一来,再回到再来。我们发现由于虽然你上次把音写成了 fast, 但是当第七行调用这个 功能快的时候,他的眼角给的还是球,那么对于这个 t red 的功能快来讲, 他当在执行里面的定时语句的时候,对于他的银角音来讲,他其实一直处的,他并没有放肆过, 因为当你 boss 的时候,并没有执行这个 tro 的里面的功能快,也就是第十行,这只是对他那个银角做了一个副词语句,第七行才是真正执行这个功能快,那我们也就是说 在上一个循环对他做了一个 boss, 但是并没有执行功能快,所以定时性并没有复位,那么第再回到第二个周期,再次给他对触,那么这个 q 他一直是处的,那么也就是说你这个取反 他其实是没有对他做一个五百毫秒的延时,他一直在不停的进行去返,然后你看上来好像就感觉, 就感觉他虽然也一直闪来闪去,你就发现他闪的特别不规律,这个不规律是因为你这个他这个显示监控的一个延时所导致的这么一个这么一个现象。 那这个就是我们今天所要讲的这么一个中断的功能。我们大家再来简单的总结一下,触发中断 至少设置断点需要注意的一点就是前面必须要有灰色的才可以设置断点,你设置断点并不代表一他一定会触发,触发这个 断点还需要你实际的程序逻辑,如果能走到这一行,他就会触发断点。你比如说我在这在十三行,你只要处罚断点,他肯定是肯定是会触发了,因为这一行对于程序来讲他肯定是会扫到,扫到这一行除非干嘛?除非你在 第十一行后面加一个方循环,而且这个方循环死循环永远不让他往下走,那在这里他就不会出发。 然后四处触发断点以后会可以利用奥特二三四来做一个跳或跳入跳出的这么一个动作。 那至于运行到光标处以及设置下条语句,我们来再来简单的看一下,比如说我们当前的中段设置在这里,那下面 面我们直接右键,我希望他让他停留在第十四十四行,那么按照之前的这么一个写法,就是现在时常加个断点,然后启动一下,他就会停到这里来。 那么有没有更简单的一些办法呢?就是你直接右键选择设置下调运行到光标处,他就会直接直接停到这里来,就相当于你这一个按一个操作方式,相当于我们刚刚演示的先加锻炼再运行, 我们再执行一次右键运行的光标数,那我们 在运行这次我们移动到这里运行的光标处,我们直接奥特加三,当前的基督期的值是七八 九零,我们发现他就是加了个一吗?那我们再直接走,那在这里我们再回到 设置下一条语句,呃,设置下一条语句,你这样做一个验证,在四行加一个断点,这段断点取消 停留在这里。如果我们使用运行到光标数的话,我们可以看一下当前的这个急速器,七八九幺,他会加一,那我们再次全速运行,再停到这里来。此刻我如果使用设置下调语句,我们看一下这个七八九, 会回家会发现这个光标往上移了一步,但是寄宿器并没有加,也就是说这两个的区别就是运行到光标处, 你使用运行到光标处的时候,从十四行到十三行,他是按照正常的任务的配置,一行一行执行完再返回来,在第二个周期再回到十三行,这叫运行到光标处,所以因为技术就会加一, 但是这个叫设置下一条语序,他只是程序的指针直接往下往上移,他并没有, 并不会做按照成任务执行的这个状态,所以说这个是知道下调一句什么时候会用呢?当我们在调试了一系列的功能块 或者一个方法的时候,比如说执行到了第十三户,我突然想再仔细的看一看我第三行到底执行了一些什么东西,你此刻就可以直接右键选择设设置下一条语句,当前是不可选的,就是我再想返回, 在想返回我刚刚执行过的一句,再看一看到底是怎么执行的,就可以利用这个叫事实的下一条语句,他一会直接直接跳上去, 那有关中断的相关的一些操作,我们今天就讲到这里。