啊,大家好,这节课我们来通过写代码的方式来验证一下单片机的 gpl 口模拟这个窗口的发送 啊,我们用的是庆恒威的一款单片机来模拟。好,我们打开代码, 现在代码里面啥也没有,这个是包含的一些头文件,然后这个是 l 口的发, 设置高低电瓶的函数,这是 l 口的初始化,我们用 p b 十二去模拟创口这组函数,这十种初始化, 嗯,机票要出手快啊,我们现在来携带嘛, 先写一个发送一个字节的函数, i o u a r t, 剩的一个 bat 九八 dat, 九八 i 等于零,我们通过一个破循环, 哎,小鱼吧,哎,佳佳通过过血糖八次发送这个字节的每个位。 我们首先要发送开始位,然后是发送数据位,然后是发送 嗯,消炎位,最后是发现瓶子位,起始位,低电瓶 固定的第一电瓶,然后我们用九六零零的波特力去做,九六零零就是一百零四个微秒, 如果改其他的波特率,改一下这个延时就好了。然后我们发送要从 l s b 先发第一字解贝特按的零叉零一,如果最低位是一,我们就发, 把 l 口吃高,否则我们就把 l 口吃低。然后我们来一个延时, 再把这个数据移个位,因为最低位已经发了,又移位,哎,八个位发完之后就发校园位,因为我们没有用校园位,所以这里就不发,就要发停止位, 停止位默认他就是高电瓶啊,这样就结束了一个字节的发送,我们还可以发送一个,一个 buff 也是可以的,先画画,再来一个长度,要画多长 也是通过一个循环把每个字节发出去, 把这个发送 bad 的函数拿过来就好了, 我们就发生了八, 也可以发送一个支付串, 这幅串就是所谓的试卷,我们要用恰新号 求字不串的长度,我们可以用使劲认识这个函数去求 发生死心的爱就好了。然后这里就是有的同学还想用这个凹口去调用普林台辅函数, 比如说要打字不串啊,要打十六斤字啊,要打符点数啊,不方便,所以要写一个普天特符的函数, 零点五,零点五,我们也是来一个可变仓可变 函数,我们要利用库函数微的历史生命,一个变量,再生命一个数字,用来做格式化的,这个数字放大一点吧, 然后有一个 spa, 再来一个 vs 平台,嗯,把这个格式画到这个时间里面, 最后就是通过发送死菌, 要把这个,要把这个丝巾格式坏了,要把它扒出去,最后就是结束, 到此为止就写完了,我们编一下,看有没有错误,没有错误我们调这个函数来打一, 我们先定义几个辫辫好了,六三二,对头等于零三一二三四五六七八, 再来个抢新号, spr 等于 随便再来个 float 啊,我们把这三个变量给它打出来啊, pnf 这可变餐。首先打试卷吧,试卷是百分二 s, 然后是 dat, dat 是 inter 型的,用整数打,也可以用十六金字打, 现在加个零 x 吧,后面还有个小数 像素的话摆放 f, 我们再把这几个参数填, 每加个延时吧,每隔五百毫秒打一次 变异没有错。然后我们 solo, 下回结束,我们打开窗口更新一下,哎,这里就打出来了。 好,这些快就讲完了。
粉丝1310获赞1536

大家好,这里是一起学单片机,今天我们继续实验啊,今天我们就来实现一下,用普通的两个艾欧口来模拟创口。 先看一下硬件连线,我这边呢是 p 一点零和 p 一点一这两个 l 口,同时我把它扩展了一下,就是并了一条线,把这两个线通通并了一下,分别接入到逻辑分析的两个引角,逻辑分析这边的两个输入啊, 那么这样的话,我们就可以边通过窗口发送或者接收数据,同时我们用逻辑分析来读一下发送数据跟我们接收数据是否一致, 然后这按键部分不用看没有用,这次没有用到,再复习一下,我们窗口发送默认的情况下是这样的状态啊,就是检测到接受 引脚变成低电瓶,然后连速连续减减,呃,接收八倍数据,然后创口引脚发送完,送完了以后呢会被拉成高电瓶啊。创口的接收引脚。好,我们就是用这个定时器来实现这样的功能,那我们来计算一下啊, 我们打开计算器计算一下,如果我们发送呃,波特律是九六零零的话,我们就用计算器啊来计算一下,如果波特律是九六零零,是我们定时器的定时时间是多少,那么一除以九六零零,对吧?那么再乘以十个三次方就为秒,是不是啊? 那么应该就是一百一百零四个微秒,乘以一千的话,换成好秒吗?零点一四一四,零点 一零四微秒,那么就是一百零四个啊,一百零点一零四个毫秒就一百零四个微秒,对吧?好,我们定时就把它设置为一百零四微秒, 那我们来看一下主程序啊,主程序其实很简单,我们就来设置一下这个波特率为九六零零,那么看一下这个函数是如何设置的, 那我们就把定时器定设置为自动重装的模式啊,我们用的是 t 零定时器。雨上零 s f 零,是不是后四位轻零啊?前面不受影响,对吧?货上零 s 零二,是不是八位自动重装模式,然后我们的 t 尺零呢?定时时间我们刚才算过了,对吧? 其实九六零零的话,这边可以看出来,这一个数是不是幺幺零五九二零零除以十二,那么再除以波特率,那么这边就是你的重装值,是吧?二五六减去, 好,这就是波特力。九六零零,那我们来在主循环看一下,主循环的时候就来判断这个银角是否被拉成低电瓶。接收银角接收银角是 p 零一点零,如果是被拉成低电瓶,我们开始接收,我们看看接收程序是做了什么接收程序呢?我们先把这个 重新复的这个值啊,每次因为是八倍重装模式, t 就是 tl 零溢出完了以后会 th 零自动重装进去,我们先上来把 t 二零呢,这个值啊,又减小了一半,哎,这是为什么?大家可以看一下这个图啊,理解一下。 那么每次发送是一百零四微秒读一次,对不对?每过定时期中到一百零四微秒会产生个中断,一百零四秒产生中断,那么我们如果读的时候是不是应该尽可能的在这个中间 部分去读啊?对吧?如果你每次都在一百零四微秒这个中段的地方去读,是不是这个是进行数据交换的地方,数据进行变化的时候,那是不是有可能读到是错误的结果? 所以话我们一上来把这个中段的这个时间啊,再把它刚才定了一百零四,是不是我们第一个时钟变成低电瓶了以后我们把这个时间改成,改成了什么?第一次一出我们改成了那个 五十二个微秒,相当于就在这里一戳,然后后面呢?在 th 零,因为 th 零我们被没被更改对不对? 所以 tr 零只会影响第一个接受的数据延时了,相当于五十二位秒,后面又会变成一百零四位秒,这样的话我们每次读是不是在这个数据的中间部分去读啊?这样是不是会准啊?我们连续读八次对吧?好,要理解这里啊 里设计的这个,这宋雪生老师发的这个这个程序啊,微妙就在这里啊, tl 零充分利用了 thtl 零溢出以后会被 th 零这个 th 零再复制,复制进去啊,所以我们只会影响第一次,那么第一次的时间会被缩短一半, 那么打开定时器中段,打开定时器,同时设置两个标志位,接收是否结束?还有现在是接收还是发送接收是为零啊?好,我们来继续看主程序, 那我们刚才说的这个开始接收,然后是否到接收结束啊?那我们先看一下在中段里进行接收啊,我们所有的接收都是在中段里, 我们看一下定时器中段,我们刚刚设置两个标志位是接收的,中段接收的话是零是不是?那我们就跳到零 l 四这一块, 好,二四,如果接收我们向来是因为是拉位低电瓶,这是我们计数器是零,对不对?我们默认要接收十十位数据吗?包括标志位和七十最终的停止位, 因为是零,我们上来这个衣服,这个银角是被低电瓶的,那我们把一个最终接收数据的这个缓存清零,我们往里头装数据啊, 然后 cnt 这个技术值开始加价,如果变成如果我们这个 cnt 还是零的时候,这个银角的电瓶又不是低电瓶了,说明我们在这一瞬间产生了个干扰,是不是? 那我们就把定时器关闭啊,我们这样的话在下一个重新下一个,下一个轮回里继续接收啊,是因为这是有可能您脚突然受到一个低电瓶干扰,拉成低电瓶,那么你会进入接收循环,但是 这时候你又引脚变成了高电瓶,那我们就认为这是个干扰,我们把计定时器关闭啊,这样的话方便第二次循环,对吧?因为每次我们循环的时候可以看出来我们定时器重新打开的啊,所以不用担心, 那么就是开始顺序接收第一位,然后我们如果小于八位的话,那么每次把这个缓存只向右移一位啊,这是这一定要大家一定要掌握,这以后 spi 通讯或者 iphonec 接收数据都是用这种方法,接收的时候,我们先把这个数据向右移一位或者向左移一位, 然后接收的位数呢,再把它装进来,这样的话接收八次这个数据就是不是你要的数据啊,可以看出来,先移出来,这样把,因为创口他是低字节发送,先把低字节发送出来,所以我们先放的高位,这样的话装装装,对一次往后往左移,一次往 右移,对不对?先装第一位,当移满八次了,你第一次装的数据是不是移到最后面了?是不是变成真正的第一位了?就要理解这里啊, 那么我们开始又移又移完了,如果这个银角是高电瓶,那么说明结束数据是一,我们就获上零 s 八零,把这位置一对不对?然后 cnt 加加 我们下一位,如果还没到结满八次,那么继续往后移,这个引脚再判断,如果不是不过不过是高电瓶的话,那我们往右移移的,往右移的作用不是这边前面就补了零吗?就变成零,对不对?好, 这样的话接吻八次,当我们也不是一夜十八,那就是接满了十次了,是不是啊?那么最后一次了,我们撒入 cnt 清零,定时器关闭,然后如果这时候银角也变成高电瓶了,因为数据接收完之后,这个接收银角会变成高电瓶啊,好,我们就认为接收结束了啊,这就是我们一针 一个自己的数据,整个十位接受结束了,对吧?好,那我们再看一下发送啊, 我们在发送做了个什么实验呢?就是接收的数据,我们刚才不是放在八分里的吗?我们把这个八分的这个值加一再发送出去,我们发送,我们来看一下 style tst 呢,我们这边就不需要那个 呃, starts 在这啊,发送的时候我们就不用再延时半个周期才开始了,因为发送我们就按照 这段时间里都保持这样的高或者低电瓶啊,所以把这数据付给 tsd, 然后这个 th 零的值呢?就 tl 零的值就等于 th 零啊,上一个我们不是把 tl 零给改成了一半吗?对吧?第一次一出会只有一半时间,这次我们上来就让他等于原来这么长,要不然会会被这句语句干扰,对不对? 我们还是保证一个,就是一百零四微秒的长度,然后打开接收中段,这时候接收银角,嗯,接发送,银角先清零,然后发送是否结束?清零,然后接收,发送是,这次我们是发送,说是一好发送开始, 我们让这个数据加加,因为第一个字节我们是只是接受了判断啊,把这个银角制成拉成了,刚才我们是拉成低电瓶,对不对? 低电瓶以后我们就开始真正的要发送八位数据了,当他小于八的时候,我们就让这个 tsd 引脚与上零 s 零有一种发送低位,对不对? 所以这个就是跟刚才刚好相反,我们先发送的第一位是雨上零 s 零,一发送完了以后,你再把这数据向右移,是不是次高位就变成了第一位啊?这接收回这个接收和发送是刚好相反的,你刚才发送是先移,然后再 接收,然后这边呢?是发送完了以后人再移,对吧?这样的话你才能保证数据正确,这样的话一次移动八倍,是不是把这个八个数据发送出去了?当他等于第九的时候,认为就是说我们发送第十个就是第十个,拜托的时候,我们把这个银角制成高列平,这样的话单平就知道了,或者 你对方的接收就知道了,我的整个发送已经完成了,然后那么如这个发送如果全部完成了,可以看出来,我们就把这个 ct 清零,然后电视机关闭,然后发送已经结束啊,对吧?好,这就是发送啊, 发送完了,然后我们再判断是否已经发送完了,没有,发送完了,就在这个程序在这等着啊,整这位为零,发送完了,这位就跳出来,又会重新开始,等待下一轮接收,对不对?好, 我们来看一下实验的效果啊。好,我们来看一下实验形象,我现在发送五五对不对?那么对方应该是 回传一个五六,对不对?我再发送是不是?好,我们改一下啊,如果我发送的是 a a 的话,那么那边应该回传的是个 ab, 是不是啊? 这样发送都是害死吗?啊?就是十六禁止数据对不对?那么我发送 f f 的话,对面应该会变成零零,是不是?我们都加一操作对吧? 二五六就一出了,就变成零零。好,我们把它还是发送五五,我们逻辑分析抓一下啊,首先打开逻辑分析, 然后我们发送数据。好,我们把逻辑分析停掉,我们来找一下。 嗯,我去分析,没找到数据吗? 我们再发送一次啊,首先打开逻辑分析 发送数据, 大家看到在这里啊,非常非常小,是吧?我们把它放大,因为整个发送过程就是 一个一个数据,为不是一百零四微秒,十个嘛?才多少?一点四个毫秒是吧?可以看一下啊, 我们上面发送的是零 x 五五,是不是?如果是 xxc 码指就是 u 字符 u 啊? 我看一下 我们这边的接收,接收就是零 s 五六,是不是 回传过来是零 s 五六,再看一下这里头看的是不是直观,首先被拉成低电瓶,然后第一位开始是不是一零一,一零,这是不是六啊?然后 d 零一零,那么是不是五啊?是不是五六啊?然后引脚变成高电瓶对吧?然后同样的看着我们的,我们的接收引脚是不是接收的数据,首先这个天 rsd 被拉成低电瓶,对吧? 完,完事了以后整个八位结束了, rsd 变成高点接受的数据,我们到这看零一零一是不是五啊?零一零一是不是五啊?这 s 五是不是啊? 好,非常直观啊,好,关于创口通信呢,这个原理就给大家讲到这里啊, 那么最后我们是通过以剩下的实验,都是通过他本身的这个创口啊,单片机自带创口来完成的,不用挨我口来模拟啊,用挨我口模拟只为大家了解啊,那么聪明的人就把这些功能都集中在一个外设里,就不用 这个定时器中断这种方式来实现,本身就是一个完整的外设啊,有发送缓冲和接收缓冲来完成啊,然后有专门的这个计算器,我来配置这个波特律,好,我们下一节实验再继续啊,欢迎大家对我的视频评论,转发、点赞,感谢大家。

大家好,今天我们来看一下老外用 factoryl 搭建的一个模拟组装生产线,主要分为以下几个工位,一、机加工位。二、组装工位。三、打包工位。四、仓储工位。下面我们看一下各工位的具体硬件设备以及运行方式。 机加工区主要设置四台机床以及机械臂进行原料的加工,加工好的零件经过输送线输送到组装工位。进入组装工位前有四个视觉传感器对零件进行分拣到不同的位置。 组装好的零件分别进入两个打包工位进行打包,然后再经过管轮输送到仓储工位。 仓储工位负责将打包好的零件放入货架。 下面就看一下实际的模拟运行结果。 whoo 好了,实际运行结果就是这样的。我会在下面的课程中对这个虚拟生产线是如何编程的进行详细的讲解,我会将整条生产线进行分集成各个小模块独一讲解,最后进行组合。相信看完我的这一个系列视频,你将 plc 编程有一个全面的了解。这期视频就到这里了,下期我会讲解开始的机加工工位是如何编成的。点击关注不迷路,下期更精彩哦!

很多新手不知道伊泽耐的 ip 总线 io 模块怎么组态,这个视频就告诉你,今天用这个欧姆龙的 prc 读写这个 m 逊伊泽耐的 ip 总线 io 模块, 这个模块后面扩展了开关量和模拟量模块,打开编程软件,新建工程,选择 prc 型号。第二步,根据主模块和扩展模块的点数创建对应的全局变量。这里我创建了两个全局变量,输入和输出,他的数据类型是两个结构体, 这个结构体是输入的,对应了数字量输入和模拟量输入。这个结构体是输出的,对应了数字量输出和模拟量输出。其中数字量部分又创建了对应的联合体,这是数字量输入输出对应的联合体。第三, 在工具栏点击 internet ip 连接设置,这是 prc 的 ip 地址,需要注意的是,电脑的 ip 地址和 prc 的 ip 地址应处于同一网段。四、双击当前的信息栏。五、点击左上角的标签组,点击全部注册, 弹出窗口,点击选中所选的项目,点击注册。六、安装 e d s 文件,右键单击显示 e d s 库, 点击安装在爱慕讯官网下载对应的 e d s 文件,点击打开。 七、点击左侧的连接目标,点击加号,在这里输入远程 io 模块的 ip 地址,如果不知道就查询一下,查询这个远程 io 模块的 ip 地址,这个远程 io 模块的 ip 地址为一点幺二, 在这里输入模块的远程 ip 地址幺九二点幺六八点一点幺二,选择型号 m 讯 eia 版本为一,点击添加 投放这个设备到表格中。九、在目标设备下拉选单中,目标变量输入为一百,输出为幺零幺, 起始变量为全局变量里面的那两个变量。第十步,点击在线下载配置到 prc, 传送到控制器,去掉这两个勾选,点击执行最后一步,打开监视窗口,我们就可以控制这些 io 模块了。选择输出, 我们给开关量输出负值为二五五,你看看从站的输出指示灯已经点亮了,再给模拟量输出负值五千。来,你看看指针的变化。大白话讲公控,一听就懂,关注我,学习更多公控知识!

我们来看一下我们三零五油网如何添加扩展模块,主要有两种方法,第一种方法呢,在这个参数点开往下拉,然后大家可以看得见这边有一个模块信息,这边点击右键, 然后添加新模块, ok, 会有个对话框出来,比如说我添加一个输入模块八点的,然后点击确定, 这个八个输入的输入信号就被添加进来了,那我们在哪里查看呢?大家注意啊,这边点击模块配置图双击, 然后这边点击确定, ok, 这地方能看见吗?刚刚添加的模块,然后在这个位置呢,我们也可以通过他的右手边,这边也可以进行添加, 这边有一个输出,比如说我添加一个输出模块,注意按住不放,左键拖拉过来, 注意这个地方大家看到没有,变成粉红色了,这是不对的,我们要把它拖拽到我们 plc 的旁边模块旁边放开, ok, 这样才是添加模块成功。

f e c 一零零 s 在 linus 环境下使用 g 派,有模拟 spi 驱动七七三五 t f t 屏幕,这个刷新速度感人,因为用的 c 语言操控 s y s class 里面的 g pyo, 所以速度有点慢。 用逻辑分析仪查看时钟频率只有五二 jack 左右,基本上可以肉眼看到的看到刷新的像素点位置,可能通过操作文件来间接控制,效率太低了。驱动上层的驱动程序用的 stm 三二的程序,底层按钮使用的文件写入 还没有写自动化脚本,所以只能暂时手敲 reset 底下 看它缓慢运行。


factory io 是 一款虚拟仿真软件,它可以模拟现实工业生产线上的各种工位和工序,如输送线、产品加工、视觉分拣、产品组装、产品分类、 产品装箱仓储、入库、出库分拣等,拥有众多仿真工位,能够完全模拟现场工业实际产线的运行。 这款软件对学习 p l c 可编程逻辑控制器是有帮助的,它可以与各种 p l c 进行仿真通讯,将虚拟场景与真实的 p l c 控制器相连接,实现实践操作。 对于 plc 初学者而言,通过使用 factory io 进行实时仿真学习,能够大大加深对 plc 工作原理和应用技巧的理解与掌握。学习者可以在虚拟的数字化工厂里组建自己的场景,并通过 plc 编程联合仿真来完成设计。 例如,在 factory io 自带的场景中,学习者可以认识各种部件,如滚筒传送带、物料开关、液罐控制柜、双轴搞履带传送带 传送机、横向移动器、电梯堆垛机、三轴机械手加工中心、视觉传感器、气缸换向器、高度传感器、重量传送带等,并了解它们的功能和工作原理。 同时,学习者还需掌握如何进行 i o 配置,将软件中的按钮信号指示灯信号传感器信号驱动器信号等与 plc 程序中的变量地址一一对应。 不同场景中的部件和功能可以帮助学习者更好地理解工业自动化中的各种控制逻辑和工艺流程,从而提高他们在 plc 编程方面的逻辑控制能力。不过,实际的学习效果还需结合个人的学习态度和努力程度。