粉丝4765获赞1.7万

它的四字一行图里面怎么嵌套 s c 语言?很简单,先插入一行,直接右键插入,执行快,这样就行了,然后直接在这个里面就能写了。这样的好处是 复制的时候它比较方便一点,木指令态占用屏幕面积了,直接用 at 的话一下就复制过去了,看起来也更紧凑一些。

s t 语法定时器的 it 表达,这里有个例子,这个是定时器,定时器在用之前需要实力化,这个是定时器,所谓实力化就是给它起个名字,比如说 t 零 t e t 二,然后在 s 器当中具体使用的话, 直接这样敲打出这个括号,它会自动有提示,这是输入参数。就是说这个 t 零 q 没有导通的时候, 它就开始计时,这个是设定的一个时间,比如说这里是三秒钟,三秒钟一到这个 t 零 q, 它就会导通。


用 codesis 啊,做的一个十级滤波啊,可以选择我们的滤波等级,一般应用于我们的一些化工行业,避免他的一个频繁的通断啊,可以我们选择,比如说五级的时候,对,前面啊, 十十字数据啊,求职求平均值。然后用的是我们合川的一个 plc 啊,是不是长得很像欧姆龙呢? 看这是一个视觉的一个界面, 用的是一个 cold size 平台,然后也是做了一些很多的一个功能块。

二幺七的宝子们,大家晚上好,这里是一个口罩机的程序啊,可以看到全部用的 scr 语言, 有时候我们写的不只是程序,写的更是我们的人生,写程序的态度决定了我们对人生的态度,严谨的编程逻辑, 信杰汇川永远的宿敌, 都是用的一次开的总芯啊。

今天我们继续学习第六章系统库的应用,我们今天要讲的内容是内存快的这么一个操作, 内存快乐操作在我们一般的项目使用中使用的不是很多,但是会在处理某些 应用场合的时候会非常的方便。比如说我们当前有一个 around bite, 一个自觉型的数组,或者是一个自定义的结构体的这么一个数组,那如果按照一般的方式呃对他进行一个复位操作的话, 可能会像我们当前 ppt 页面第四到第九行这样去写,用一个方循环,然后依次的对它进行零复 fast 这么一个处理。那么如果我们知道这个 system memory 这么一个库的话,直接使用那第 幺零幺的这两两段就可以完成上面有方循环的一模一样的这么一个操作,看上去会非常的简单,那我们就这就是我们需要讲的第一个 this this memory set 内存区域的这么一个设置,那它 是一个方形,首先需要指定一个目标的一个地址,那地址我们使用在这当前的程序使用 adr 取地址, 然后要把这一块地址你要设置多少多少长度,那使用个 size of around bite, 那这个数组占用了多少个字节?比如说他占用了一百个字节,那么 size of 它的范围就是一百个字节,也就是说从 adr 开始的地址, 然后把所有的内存往后从这个地址开始,后面全部设为零,那设多少个为多少个自己,长度是多少,那就是一百个自己,那这个就是 system memory set 这么一个操作。 另外这一颗是内存串的内字节复制的这么一个操作,也就是说我们可以使用当前的这个把 s e 这个轴串的内存内存字节的内容直接复制到这个 run bite, 复制这个 run right, 呃,当前这个操作可以干一些什么事?达到什么什么样的后一个效果呢?就是说我们可以清楚的看到每一个字母串,它实际在内存中存储 处的那个实际的单元是什么,也就是可以完成一个字串像 x 个码的这么一个转换的这么一个处理。那还有个就是内存比较的这么一个操作,需要用到一些 特定场合的时候,我们可以使用这个比较可以比较任意的两个注册类型,只需要给一个地址就可以了,只需要给定一个第一个地址,第二个地址,然后设定比较多少个。 那下面我们直接在程序中看一看这几个有关内存块的操作,那这个是上次说讲的这么 有关字幕上的操作,那今天我们可以直接把这边做一个剪辑,按照我们之前所讲的可以创建一个 action action, 这是刚一百左右的 string, 我们今天要讲这个内容内存块的操作,我们把它放到从两百开始,然后同时把这个杠一百的像这种操作在这里做一个调用。 首先我们先定一个这个串,呃,那个数组 by they are bite 这么一个数字, 啊啊,零说九九九 of bite, 它定义一个结构体, s t, 杠 d u t, 把这里面的所有的数据复制一下放到这里来, 然后再定一个 d u t 的这么一个数字, s t, 杠 d u t。 我们编一下,把这两个不要的删掉留下来哈。 下面如果我们需要对这个,比如第六行的这个 a r d o t 做一个复制的话,那一般的操作我们可能会用到一个 for 循环,那我们先用 for 循环, i e 等于零 two 九九九 two, 那么这就 a r d u t r e 点 bite, 也就这个 bit 里面它又是一个数组,那也就是说我们需要再嵌套一个 phone 循环,那有关这个 bit 你先不写 i e 等于等于零,那依次要写很多, 那这个操作的话肯定是可以实现我们的一个方法,那在这里我就不再做演示了,因为写完太复杂了,我们直接用我们第二种方法使用这个 s y s m e m state。 有人喜欢这个,他并没有自动跳出来这个 memory 库啊,在我们新建完这个工程以后,默认他是不加载这个库的,那需要让我们 添加库的时候主动去搜一下,就是这个库默认是不勾选这个显示高级库的,你也是找不到的。单机显示这个高级库,然后就可以看到他点确定, 我们可以看见。我们今天主要介绍的就是这个复制 set, 还有一个 compare, 其他的用的不多,有兴趣的可以自己去验证验证 括号。第一个就是一个地址,我们从哪里开始去设置这个边料取地址 a d r a r d u t, 然后再把它把它设置。为什么东西既然是 对于这个 ar dot 做一个复位呢?所有的轻微的轻多少个自己是一个 size of ar dot, 也就是说不管你做的这个 dot 有多么复杂, 我们只需要在一行之内就可以做到对这个很复杂的结构体做一个内存复位的这么一个操作运行起来,下面我们随简单的 对,比如第零号的这个,这个数据一二三四,然后对他的一十号幺零幺幺幺二,做一个 q, 做一个写入,这是第零号元素。同样我们对 d 版也是做同样的一个操作, 十号、十,十一、十二,也就是当下我们需要对这个一千个的这么一个 复杂的这个结构体的输出做一个复位的这么一个操作。那些我们只需要触发二零一就可以触发二零一,在触发二零一之前,先把这个点开, 先我们单击调试写入,可以看到所有的都被已经复位掉,十,第零号,看到第十号所有的都被清空了,那这个就是 system memory, 然后比较常见的这么一个复位复杂结构体的这么一个用法,那另外一个叫 system copy 二零二, this m, e, m, c, p y copy。 有时候我想看看 s e 这个珠串,它的阿斯科马对应的都是多少, 你可以 destin p, d, e, s t 就是目标。我们把这个内存复制到哪里?复制到我们的字节数组 a, r, bite 从哪里开始复制?从 s e 开始复制,复制多少个多少个字符呢?我们复制使用这个 land 字符数 数据去复制。在这里我就没有用这个 size of, 因为诶对于 s e 来讲,它是一个 string, 它 morn 占用的是可以最大可以传八十个字符,也就是整个 s e 的 所占用的内存地址,其实八十一个字体,也就是说你使用 size of s e 的话,它其实要复制八十一个,那么如果你 s e 后面都是一些空的,那就好毫无意义,所以我们只复制有效的有字符的这么一个数据。使用这个 land 下面我们对这个 s c 给他做一个复制,比如一二三是 五六七八九九个,那出发二零二二零二。好,已经复制完毕,我们检查一下这个 质量数组,可以看到那一对应的斯格码其实就四十九,所以说零到八,总共复制了九个,我们就可以 看到当前的这么一个操作。 那有关这个 system memory 这么一个用法。先讲到这里,我再看最后一个 system system companion, 就是这么一个比较,你先看一下这个比较这么一个接口,它有个返回值,它是一个 d i n t 的,那在这里我们有些 要把用到的这个数据定义好, d i 一 d i 二 d i 三, d i 四,多定义几个 d n t。 我们比较什么呢?我们把这个 我们定义两个,我们直接比较 s e s 二, d r e 等于 d r e 等于 s s memory c m p。 比较第一个这个 buff e r 就跟上面的没有一个前后关系,就没有,就没有一个呃目标或者语言什么一个差别,它就是比较两个内存, 但是返回这个结果跟你写的这个顺序是有点关系的, 比如说当百分之是一的时候, buff 一的变量是大于二的,那负一是小于等于零的话,就两个的内存是一模一样。他这个比较完全是按照 ask 码的这么一个顺序。我一会演示一下 a d r, s, r 比较多少,那我们使用一个变量,比如说呃 i r 好了, 报错重复 s 一是一二三四五六七七九八,那我们这边输一二三四五六七八九, 第一是七九八,第二个是七七八九。我们比较几个字符呢?比如说比较六个,就是一二三四五六,一二三五,前面六个都是一模一样,那这个反过去应该是零,我先默把它改成八八八, 免得触发完感觉这个零到底是防伪值是零还是怎么着?我们输入二零三, ctrl qq 写入,那它直接等于零,也就是说前六个字符是一模一样的,那如果改成九,那两者肯定是不一样, 七九八肯定是大于七八九,所以它的反应是应该是一,我们看一看二零三,反应是一,它是完全按照阿斯科马的。那我们又刚刚我们说的这个 i r bide, 它里面就是一二三四五六七八九。如果我们使用, 因为它只是一个 disc, 对是你的数据类型来讲是完全没有任何关系。我们再看看 后面这个是七,后面这个是看看七九八还是七八九, 应该是七九八七九八,所以他应该反问就是零,因为比较的是九, 我们再触发一下二零三,应该是零,果然是零, 那这个就是比较在一些特定场合的一些用法,就是说可能你的项目在当时还用不到,用不到类似于这种这种这种操作,那就是, 但是你要知道,然后这个内存操作有这么些功能。那下面我们来另外看两个方形的函数。 有上节课我们讲过这个切割,切割一个,按照一个分割符切割一个输入的字符串,但是我们希望把这个音谱的字符串,它可能有很多个元素, 我们把它切完以后放到一个数组里面,那第一种实现方式呢?就是我们新建这个方格形的返回值,就是一个数组零到九的这么一个数组,那这是一个输入的轴串,这是一个分割符。 下面我们看一看这个具体的视线,先清理两个计数器,这个是缩影值, 使用发音的函数找到这个,这这一步的话跟之前写的那个是一样,那如果反复字等于零的话,那就是没有找到,那没有找到就直接把 输入的 s input 的这个直接给到我们的元素数组,这个是一个数组,当前看的可能是零,我们先 先先放在这里先,也就假如说我给的是一个一二三,逗号四五六,那么 i index 范围是应该是一个四,那此刻我使用 index 减一,使用 left, 就把第一组元素然后 切出来,放到这个数组里面去,那紧接着使用 as input, 然后删除这个 as input, 就是把 as input 这个字串 本身做一个删除,删除多少默认,比如说我们一二三四五六七八九,删除多少?首先是先把前面这三个删完, 那前面有三个的数据,那就是 index 减一,剩下再把我们当前的这么一个分割符删掉。分割符删掉为什么不用直接是一?因为我们的分割符有可能是两个字符,有时候有可能是像这个, 所以说我们使用了一个 land spot, 这就是取分割符的长度,这是分割符的长度加上分割符前面的这么一个长度,我们删掉这么多,从第一个开始删除,这是之前讲的这个 delete 的函数,也就是说那么剩下的元素 再复制给 s import, 然后把这个技术题加一,等着 y 循环,再来到第二次循环,然后再重复一模一样刚刚的动作。那这个是 第一种实现这种方式,这种实现方式,嗯,它的返回时本身就是一个支付成数组,那我们需要在面函数里面再定一个支付成数组,然后使用 十七号二零四的这么这么一个操作。在这里有一个限定,就是我们的反,我们的这明显是定义的这个,比如说我定义是十九,嗯,编一下就会报错,就是说当前的这种切割方式,必须要求 你定义的这个类型跟方形函数里面一需要一模一样,否则就会报错。我们看看,再看看第二种实验方式,第二种实验方式我们就用了,今天学到这个 member copy, 我们可以想象,想象一下这个 main handle 的这个 a r string, 那么它是有十个元素的这么一个 string 型, string morn, 它的元素,它 string morn 占用了这么一个 元素大小,我们可以用这个算一下,二零六, r 一 就等于 size of string, 这个末日应该会等于八十一。我们同样再计算一下, size of a r string 应该是八百一。 首先触发二零六,看一下,二零六啊,八十一,八百一有十个元素,所以说 那么第七行 a s 菌就是一个八百一十个字节的这么一个变量,那每一个元素占用八十一个字节,所以我们可以利用这个, 这些都一样,那也就是说等于零的时候,我们先不看,我们先看第九号,如果他不等于零,我们需要复制,复制第一个是目标的这么一个 地址,目标地址就是我们给进来的这么一个呃数组的这么一个地址, 数组的地址加上这个计数器乘以 size of, 也就是说 more i count t 是从零开始,那就是说我第一个元素组的目标地址就是对应数组的第零号元素从哪里开始? as input, 从这个地址复制,复制多少个,那就是 index 减一也跟跟刚刚的那个元素数量也是一样的,那这一步也是一样。删除,那就是加一也是一样, 那像这种的话有什么好处呢?我们使用这种实现方式以后,对于美函数来讲的话,因为你在调用的时候像二十行这样去调用,我们只是给了一个地址过来,那么对于你的这 air string, 你定义成九或者十九都是都是可以的。 嗯,像 a r 像这种方形的话,还有个什么包,它是比较耗内存的,因为也就是说你为了完成一个 呃制服串,然后切割成数组这么一个操作,你需要在 fans 里面定一个八百一十个字节的这么一个变量,那在面前的时候你需要再定一个八百一十个字节的这么一个变量,当这个多了以后,他确实对你的内存消耗 比较大。下面我们直接登录测试一下,首先每天测试二零四, 那第一步之前讲就是把这个清空看,当前是有数据 新调 boss 加二进入我们写的这个四四不等于零, 直接 left 四减一等于三,取一二三,然后复制给这个零号元素,此刻你只是把这个值复复制给了 方形这边,那外面的这个 a r string 这个数组它还都是空的,我们继续运行,来到第二次循环,同样再去查找四五六点七八九,那依然四五六, 一次做完等于零,等于零的话就最后一个,直接把七八九这一个就不用做任何的给到七八九,这个时候, 那我们的返回值其实就是这个数组啊,再给它 a r s g, 这边可以看到一二三四五六七八九, 我们再看一下二零五,二零五 alt q。 出发再清空进入 此刻当前的方形里面是没有的,我们只给到给了一个地址,进来先找一下等于零,此刻我们复制从取地址 s input 这个地址,取三 三个字迹,那就是取一二三放到零号元素里面,我们注意看一看,明显说里面的这个 as 菌灵,它直接一二三就进了, 下面都一样,然后第二次切割,此刻啊 count 变成了一那一乘以它 p h p around, 这个是他的地址,加上个一乘八十一,那就刚好指向第一号元素,那么我们再复制就四五六 g 依次同样操作,这个是二,在这一步的时候需要做一个变更,因为他就不是 index 减零了,那就是把剩下的七八九是用 lane, 有几个 字符你就复制几个字体,你自己把七八九复制过来,那就可以。他要完成我们的这么一个操作, 举了这么一个例子,就是侧面的,然后想讲一讲这个 system memory copy 这么一个操作符的这么一个概念,它在于我们特别是处呃跟指针搭配使用的时候,会让你的程序 比较灵活,那有关,今天 memory 操作内容我们就讲到这里。


大家好,我们今天继续讲解入门篇第九章指针机引用的学习。我们今天要讲的是引用和指针的定义。 在讲这两个参数变量之前,我们先看一个 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 这样基本上就是万无一失,不会有问题。 有关指针和引用的这么一个关系,我们今天就讲到这里,因为这个指针的应用 太灵活了,可能需要一个具体任务的一个需求,可能才会展现出他实际的一个威力。那我们今天的课就讲到这里。

我们从今天开始学习第三章控制器的硬件组态,大概从几下几个方便,首先是主站的配置,然后是重站,最后我们讲一讲如何把程序中的变量跟我们配置的这些重站 i o 模块的做一个变量这么一个关联。 那首先配置主战,配置主战之前我们要扫描到控制器,我们要知道控制器的一个末的那个作为一个地址,比如说会传 m 系列的,就是在幺点八八那幺段的,那合成 q 零是在八八段。 呃,我们连上 p l c, 连上这个控制器以后,我们可以把它的默认的 ip 地址改掉,但是在连上之前,我们需要把我们本机的网口配置到同一网段,那连接 控制器,首先呃双击这个 device, 然后选择扫描网络,那一般都配置 ok 的话,我们单击完这个扫描网络,就会看到我们的这个控制器,那有时候看不到原因,基本上就是 网断 ip 断了问题。还有就是你工程中选择了这个 q 零,但是你实际连的是一个 q 一,那么就是这个控制器的型号不匹配,他也找不到这个控制器。 那像如何去添加这个,呃汇川的这个 esca 的主钻, 我们单击这个 network configuration, 这是汇川腰,汇川这个呃 in innovation, 这个 can uh code says innue pro shops 开发环境,然后呃自主定 制的这么一个组件,那像一般的原生的 codesis 开发环节是没有这个东西的。双击 network, 然后勾选 easter 开的主战,就会它自动生成这个 easter cat master soft motion 这么一个东西, 他会把我们的这个 eastcat 这个网口的网络名称,然后自动配置好,那当我们登录控制器或者是扫描重站的时候,他就会使用这个叫 e t h e 的这个网口去,然后扫描所有的重站。 那当然也可以选择 mac 地址啊,这个就是汇川主战的这么一个。呃,添加,下面我们打开这个,我们使用的是幺七三版本的 这么一个。嗯,开发环境单机扫描网络,我们可以看到看到有一个 a m 四零一,然后正常只是合穿了这么 q 零,我们可以看到是一个灰色的,我们无法单机确定。那是如何能看到这个 q 零的呢?是因为我们在设备这边 按目标 id 筛选网络通信,我们没有勾选这个,就是说你不筛选的话,它会把当前 cusice 的控制器在当前网端内所有的都给你显示出来,不管是你,嗯,回传的还是合算的,或者是其他家的。 那我们在这边把这个 id 筛选勾上,那再次单击扫描网络,你就只能看到跟四零一相关的这个控制器。比如说我当年网站的还存在 在一个 m 四零二,四零三,或是六百,或是 a c 八百,那么你也是看不到的,你只能看到 m 四零一的这么一个 p r c, 那当然了,如果有两个 m 四零一,那你也是会看到两个的。 勾选扫描扫描网络以后,然后那么在这边有一个叫 east cat 主杖,勾选一下 就会自动生成这个 east cat master soft moose, 自动帮我们把这个网络名称配置好,那这个当前的会传的这个 east cat 主张就建完了。 在此在此前我们可以在这个页面可以看到它默认勾选了这个 modebus t c p 的重战,那在早期版本呢?比如说连幺三级二幺三二版本以前它这个都是默认没有勾的,那这个 mode bus t c p 虫呢?是用来干嘛的呢?就是我们现在大部分部分的这个触摸屏都是支持以以太网,那它基本上都可以通过这个 modebud t c p 跟触摸屏做一个连接,那么如果希望连接,这么就要开启 你当前控制器的这个 tcb 重站,也就是服务器的这个功能,那所以会算在新建工程,新建完工程的时候,他就把这个默认的 tcb 的重站给你勾上, 就不呃,免得你忘记,然后再连上,出门发现怎么也通行不上。这就是为什么要默认勾选这个 tcb 重战的这么一个概念。对于添加主战就是一键点一下勾就可以了, 那对于会穿的这么一个组装配置还是比较简单,一一键勾选。 那如果添加合穿呢?我们首先要首先跟要右键选择 device, 然后单击添加设备选择这个 master soft motion 和上面这个 mass 有何区别?上方微信支持运动控制,他的这个 east cat, 这个这个扫描周期就根据你设定的这个四毫秒啊,或者是一毫秒,就是每次的这个所有任务执行完,比如说我这个任务只用了 我扫完周期设定了四毫秒,但是我所有的程序我只用了一毫秒,那么他也会等三毫秒,然后再进入第二个循环这么一个刷新。 也就是说他要保证所有主战跟重战的这个这个同步都是一致的,但是对于上面这个 escat master 不一样,他不管这个, 然后他只是按照你 p o u 任务的程序,任务执行完,他只要执行完,他就会进入下面一个扫描周期。所以说我们一般在有运动控制的时候一定要使用这个 soft 模型, 那么当你即使你 plc 里面没有运动空手,我们还是推荐使用这个 soft motion, 因为它的周期是稳定可靠的。 呃,狗选择这个 soft motion, 然后会出现这个这个这个这个主站,但是呢主站这边所有的配置需要我们自行额外的完成,比如说它默认使用的是 mac 地址, 然后要单击四浏览这个主战网卡,要选择网卡,我们下面实际操作一下,我们选择这个合创的 q 零,右键 选择扫描网络。同样我们这边也可以看看到这个 m 四零一,同样也是它这个选位置不太一样,它有个选项,那对于这边的话, 他有设备没有那个选项,这是幺七三版本,他们嗯会传做了一些额外的不一样的这么一个东西选项,这边勾选这个筛选目标网络,那么再次单击,那你就看不到 m 四零一了。 右键选择添加设备,在主站这边选择 escat master soft motion, 然后完了以后这边就可以看到了,出了这么一个主站,主站我们这边要给他添加这个 m c 地址, 我们勾选这个 e cat e 就是这个网口,如果你选这个,那就会使用 q 零上的这个普通 internet 网 口,然后去连接重展,那肯定是连不上了,所以我这个不能选错,那选完了以后,我们发现这个网络名称就会自动变成了一开的一,那我们推荐 在此呢,再次单击下这个使用名称,选择网络有什么好处呢?如果我们使用 macd, 那么当你当前的这个 这个哎保存好了这么一个程序,如果连另外一台 q 零,那么由于你这个地址跟另外一台又不一样,那么他就会出现 啊通信失败的这种问题,那我们如果使用使用网络名称来去做做那个通信的话,那不管你是哪台 q 零,他这个呃 主站的这个网口的名称都是叫 e k 的 e 的,它虽然地址不一样,但是名称都一样,但是我们使用的是名称 去连接的话,就不用担心我们同样一个程序去连接不同的 q 零,会出现通讯失败的这个这么一个问题。那么至此发现那合川 q 零的这么一个主钻添加, 那是要需要自己稍稍多配置几部,那当然了,你像这个呃刚刚讲的这个重战 这个 modelbox tcp 的存在,那 q 五零默认他也是没有的,那我们其实也要手动去添加,添加设备,找到杂项,这边有一个 modelbox tcp, 那至此我们所有的步骤就完成了,跟会算一模一样,但是会算只需要一步,那合算这边需要做很多事情,那 这就是今天我们讲的这个添加 e z k 的主战的这么一个那个那个步骤,那这次课就到这里。