粉丝5.8万获赞17.9万

这是我们摸着八十的功能码,一些通用的啊,不仅仅是用在变频器上,用在别的啊,设备也可以的。第一个,哎,这个零 x 是什么意思,对吧?哎,很多人看到零 x, 哎,头晕了, 十六斤之数啊,你可以把它写成 h 零一 h 零二,哎,这样看就是很好理解了,这是十六斤之数啊,我们通信大部分用的是十六斤之数 哦,零 x 零一就是我们的一号代码啊,这个一号代码是什么意思啊?线圈的读出。什么是线圈呢?比如说我们的三零, plc 的 y 点,对吧? 然后呢,二号功能码,零二输入的读出。输入嘛?什么是输入啊?比如说我们 plc 的 x 点,它就输入,对吧?这些呢,都属于输入啊, 好,零三号功能码是什么?寄存器的读书,保持寄存器的读书啊,可以多点,比如说我们的数据啊,一个 d, 对吧?这种数据类型的啊,这种的一个寄存器的读书 啊。零四号是输入计程器的读出,也是我们的一个计程器啊,这种计程器呢,属于输入计程器。零五号功能码呢,是 线圈的写入,一线圈的写入就单线圈啊,单线圈紧一点相当于什么?相当于我们写票的程序,什么 out, 五二零,对吧,相当于是这个意思, 好,零六号功能码是计存器的写入,也是仅一个点啊,单计存器的写入, 哎,零七号是异常状态的读书啊,仅一个字节,哎,那这么多功能吗?我到底要用什么呢?对吧?到底要用什么?常用的 就这两个,比如说我们做变频器的啊,通信控制就是一个读取啊,一个写入就完 事了,比如说你想让,呃变频器症状,对吧?那你要写入一串数据来控制他的症状, 所以我们要用写入啊,要用六号,六号功能码。如果你要读取变频器内部的一些电压温度啊,你要去读取它,用这个零三号啊,读取它的继承器, 读取便利性内部的计算器的数据,哎,把它显示到触摸屏上来,所以这两个啊是我们经常会用得到的,后面我们也会使用它啊。

好,我们这节课的话来讲一下这个 model box 协议,这个是它的一个通讯的格式了,大家看一下通讯的格式。第一位它是它的这一个一个地址了,一般来说零地址是主机的,零地址是主机的, 其他地址的话一到一二百四十七了,还是其他地址的话会有些特殊的用途,这个是他的一个功能码,功能码大家看一下这我们常用的功能码,这里有六个了, 一零一的话它是读单个或者读个位状态,位状态, 而零五的话是写位状态, 幺五是写多个未状态,这个是针对未操作的。后面零三零六幺六是针对这个计算器操作的,我们这次的话,呃,是使用使用这两个了, 读写一个计算器了,这个后面是他对哪个地址,我们经常这样使用的,当然大家也可以用别的地址,这个也没有什么关系的,这个的话一般按照规范点的话,就按按照他的规范来写,可能会好一点。 再往下的话就是它它的一个一个数数据位了,它是有巴比特的,这个位数的话就也看看协议了。最后的话它有个教练,有个 c r c 教练呢,它是地位在前 高不在后了。当行业里面是比较乱的哈,有些低在前高在后,有些是高在前低在后,这个行业是比较混乱的。 我们当写代码的时候呢,我们就就就兼容一下啊,我们不管他低在前,高在前还是高在前,低在低在后,我们我们呃这个代码的话兼容一下,这样子的话可能能能更好的去适应市面上的一些产品了。 这个是它的豹纹的一个格式,大家看一下,第一个是比如说读 我我,我们就看一下我们今天使用到的哈,比如说读单个或者多个计算器。第一位这个是主机发送的,主机发送,第一个是他第一个是地址了,发重计的地址 重击地址。第二个是它的一个功能码,比如说功能码的话就是我,我们这里这这这里列出来的啊,这是零三了,这个这个是固定的读,而后面这两个是它的一个地址了,就是我们读的计算器一个地址, 我我我们每个数据都需要放放映到相应的一个计算器里面去了,这个计算器的话也是我们定义的一个一个一个虚拟的地址了。 然后接下两位是这个,他读单个或者多个,如果读一个的话,那就那就是零零零幺了,如果我们呃读两个就零零零二了啊, 这这个是每一次呃读读读取的这个 g t g 的个数,后面就 crc 了,然后我们从机它就会返回数据了,返回呢?第一个它这个地址是返回从机的地址了,还是从机地址啊?好比如说零一零一还是返回零一了, 然后呢?这个是它的功能码,然后接下来一位是这个 这个后面这个这个数据的长度了,比如说我们一下子读四个字节,那他就是八了,如果读一个字节就是二了,他他他他他每一个数据他是 呃占占两个字节的啊,这个后面就是跟着数据了,再去 crc 了 啊,这个就是一个一个毒单个或多个计算器了,那大家可以看一下我们这个,看下这个上位机,知道了,我暂停一下,大家看一下。 比如说我这个,我,我这个电脑发了一个啊,就是这个是我们的主板,是地址是零幺了,零三是功能码,然后九 c 四幺的话就就是地址了,这个地址的话就是就是这个四零零幺了, 四零零幺了,也就是我们这这个地址了,从这个地址开始读了,然后我们一下子需要读四个数据,读四个数据的话,所以后面是零四了,就是我们计算器的个数,而这两个是它的 c s c 交接码。然后我们 看一下我们这个,我们我们这个主板返回第一个返回地址零幺功能码零三零八,零八的话,零八,大家看是什么? 零八的话就就就是它这个数据的长度了啊,就是八了。 那后面这八位的话啊,就是我们这个具体的数据了,比如说这个是环境的温度,这个是环境的湿度,这个是我们继电器的状态,他是关的, 这个状态是也是关的。后面这两个是一个 c r c 交易码了啊,这个就是一个一个发送和和接收了,也就对应到我们这个了。还有大 看一下这个写单个计算器,写单个计算器的话地址功能码是零六,写的话他只能写这是,这是写一个了, 那他先先选中地址,再选再写数据了。在 crc 了这个重记的话,返回是一模一样的,返回一模一样的,我们给看一下,比如说我们这里打开一下,比如说我,我们打打开这个蜂鸣器,我打开继电器吧, 我们点一下,大家看一下,这是我们我们封闭器就已经打开了,大家看一下零幺 这个主办的地址,零六功能码九 c 四三,就是我们这个继电器的这个地址了,零零零幺啊,就表示我们继电器要打开了。好, 这这个就是我们这个这个 c r c r c 的啊,我们也可以打个封顶器,大家听下声音啊,关封顶器,打个封顶器,关闭封顶器,我们给的主板呢,打个封顶器啊,他也是可以的啊, 这个就就是我们这个豹纹的格式,大家可以自己去看一下,这些东西是记不住,没关系了,以后大家经常使用的话就是经常用就掌握了,一开始不熟练的话可以打开文档,可以可以看一下就行了。 然后我们这个这次实战项目通讯协议是 moulbox, 然后这个这个是这个不不透率的,我们用的是九千六,九千六里面的,工业里面用最多的,还有个 四千八了,四千八也有用了很多,然后一般一般很少用幺幺五二零零的或者更大的,因为你的这个通讯力了,通讯的速度越快的话,他这个抗杠的能力就比较差一点了,他的传输距离也没那么远,因为工业的环境的话,一般会有些干扰了。 九千六是工业里面用的非常多的,如果再低的话,那全书就太慢了,是不是这个全书的时间我们是可以计算的,大家可以去计计算一下,比如说我们一秒,一秒钟,我们是全全送了九千六百比特位, 那我们去传传一个字节是多少时间呢?传一个字节,一个字节,大家看一下他,他有有一个起始位,有有八个数字位,一个停止位,所以我们 每一字节他是发了十个比特的,那我们可以可以计算一下,可以计算一下,是吧?那,那这个时间,这个时间的话大概计算,那就是十一万一千,那就是 除以九千六百了,这个就是每每发每发送一次的时间了, 九千六百了啊。所以说假如我们这个波波速率越小的话,它的时间就越长了,那这个时间都都超过了一啊一一毫秒了, 一毫秒了,是吧?所以这个时间很重要,所以说我们的豹纹的话,一般都不要太长了, 如果你的如果你的数据特别长的话,那你这个发送的时间就太长了,是不是?比如说我们发一百个字节,那这个时间就一百毫秒,是不是就太长了?所以我们这个一般都都是尽量的,这个,这个读的话,这个数据一下不要读太多了,会影响这个全数的一个时间 数字位。停止位,教练位是没有的。教练位,教练位是指基偶教练位了,因为我们这里有 crc 教练了,所以就这个基偶教练一般是不需要的 啊。还有个地址,这个地址的话是我们自己定义的,一般的话,一般我们实际应用的话,我有时候会通过一些拨码开关来来设地址了,比如说我们通过三个拨码开关,三个拨码我们就可以设置八个地址,是不是啊?当然,如果, 当然,我们如果接成本的话,也可以通过串口来写地址了,方法有很多哎,反正每个设备都都有一个对应的地址了, 那这个是我们计算器的一个定义啊,我们这次定义了啊四个数据了,这个是他的一个一个 计算机地址,然后这个是温度的范围,这个是我们实际温度的一个数据的范围,这个是他的功能码,这两个数据他只能读了,这两个数据可读可写。然后这个这个数据我们需要编码的,因为这里有负,有符号, 有负或或者有,或者是是一个浮脸型的,我们都需要编码了,因为我们传输的话,他是传输,传输 这个是这个字节了,所以我们需要编码,我们这个环境编码的话 这里负四十,这这个编码呢?怎么做呢?看给大家看一下我这个编码,我们这个他是负四十到一百二十五度,精度是零点一的,那这一栏的话我们就进行一个编码了, 我们先加四十,打开一下加四十,那他就是零到一百六十五了,是不是? 然后我们进去了零点一,我们再乘以十,然后我们到时候再进行一个取取整的操作,他就可以进行一个,他数据范围就变到零到一千六百五十了,这一来的话我们就进行了个编码,那那解码就 很简单了,那该怎么解码呢?比如说,比如说我们我们接收到数据是一千四百,那他对应到多多少度呢? 我们先除以十乘十,除以十,大家看一下,除以十的话就是一百四,我们再减四十,那就对应到一一百摄氏度了,是不是一百摄氏度经过编码就一千四,减码就一百这样,这只是这一种编码的方式了, 而这个的话它是零到一百,精度是一了,所以我们这里就直接传输就完了,就不需要进行一个编解码了, 当然编码方式很多种很多种,这个大家要看,如果大家跟别的设备对接的话,要搞清楚他的一个编码的方 是这样子的话,我们才能够正确的进行一个解码啊。这这两个的话就比较简单了,零就是开关,一就是开了 啊,这这个就是我们 model boss 的一个大概的协议,大家如果能把这个掌握的话,应用是没问题的, 如果大家想想了解更多,想更进一步的去学习摸了棒的协议的话,可以去网上或者哪里去找一些资料,可以更进一步的去看一看,这样子的话可以更进一步的加深对这个协议的一个理解,谢谢大家。



大家好,我是今天微课堂的主讲人,润牙座椅局的陈七。今天我们主主要讲一下 modelbox 功能码的介绍,今天我们主要讲的就是 modelbox 纪存希的种类说明,然后 modelbox 部分功能码,还有 modelbox 功能码的实力。 首先我们说一下计算器的种类,大家对 model bus 应该都有一定的了解,我们在工业控制中,很多创口设设备全都是通过 model bus 来进行通讯的,然后 很多小伙伴只是只是会看,但是并不知道 moodbox 这个通讯字字节是怎么用的。然后今天我们要主要讲一下他这个第二位的这个功能码他是怎么用的。然后首先呢我们要说一下 这个计算器的种类说明,然后虽然说咱们 modelbus 这个支持很多功能,但是它主要涉及的也就四种计算器,线圈计算计计算器、离离散型输入计算器、保持型计算器和输入计算器。 我们要想搞清楚这个计算器的本质联系和期,理解功能计算器的本质和功能码的联系。其实理解功能码就很简单了,计算器的种类呢, 他分读和写这个咱们说一下这个线圈计算器,线圈还有个线圈计算器,就是说咱们可以给他理解成开关量, 然后他每个 beaty 他就是一个开关信号的开关状态,然后一个字呢可以同时代表八个信号, 然后基本就是比如控制外部的八路 l 高低,然后他的线圈线圈计算器他呢他也他也他也是支持血的。然后也能同时就是说 相当于咱们模块中的 q 点, i 点, q 点现在是二十型计数器呢,就是刚才对应的功能码有零一、零五, 还有零 f, 然后这个离散型计算器,他这个相于线圈的指指读状态,相当于挨点,然后他不能进行写,就是我我们不能去对他进行控制,就是他说支持读写的 线圈计算器是 i 点、 oi 点、 i 点、 q 点,然后零三型计算器呢,就是相当于单纯的 i 点,然后这保持性计算器,这保持性计算器就相当于咱们的什么样 m 点,他既能读也能写,然后他 他但是他读跟写他跟那个线圈计算器的不一样的,就是说他是那个,他不再是这个 b 特位,而是这个字节,两个两个字节,两个字, 也就是一个字节,一个字节也都是代表一个开关量,然后这个输入型计算器,然后他也是只读模式,他也不能写,就相当于 ai 设定这种模拟量,模拟量 模拟量输入这项我们可以读取外部按键,然后它对应的就是零四控制不了。然后 m 点呢,就是说咱们的 模拟量输入跟输出,这个零一跟零二保持一个计算器,这东西我们把它理解成 m 点,大家应该都能明白,然后零四对模拟量的度,然后下面我们讲一下这个 model bus 的 功功能码,这个功能码就是刚才咱们说的常用的,那这几个就是说蜻蜓计算器、 离散型输入计算器、保持型计算器和输入型计算器,然后这个这个功能码现在就在这写出来了。 零一咱们去来读这个位,然后取得这个 i o i i o 的这个状态,然后零二,然后读这个离散型竞争竞争器,它也是读这个 喂,然后确定他的开关状态,然后零三、零四、零五、零六,这个东西都是比较简单的,大家看一下就行了。刚才咱们应该是讲解的应该是比较清楚了。 然后他这个你看零一,他是读位,然后你看零三零四,就是他他能读什么啊?整形浮点字符啊?是这种,就是说一个开关量,一个模拟量。 然后下面咱们用实力来说明一下这个 model box 这个功能吧。大家都能知道,都是说我 model box 通讯,它是一个主怂,主怂通讯,然后 我们可以把哨位机当做主机,然后我们可以通过轮巡功能,然后读很多计算器,然后他的数据。 现在咱们又讲多了,咱们下次咱们讲这个 modelbox 的这个轮巡功能, 今天咱们就不说了。然后这个功能怎么读呢?因为这个主图模式, 他只有在主机给从机发送读取指令的话,然后从机才会给主机返回,返回那个他当他的当当前状态。 然后呢?这个格式它是一个通用格式,就是存在的地址,然后加上功能码,然后加上计算器的起始地址, 然后加上计算器数量,然后加上这个胶原码,这个胶原码有时间咱们单独讲解一下,这东西也需要算。 呃,然后这东西也可以是用百百度,百度他有那个成,就是说在百度直接搜这个 rc crc 的这个胶原码,他会帮你算出来,然后 直接输就行了。然后咱们假设这个存账地址为零一,然后这个线圈地址,线线圈计算器的地址从这个二一二十一开始,然后结束地址是二十二, c, 这个是十六,这个二三就是咱们十六,十六进制的这个数字,然后计算器地址范围为二十一到三十二, 然后咱们读读,总共读取十二个连续线圈的值,咱们应该怎么给主机发发指令呢?就是这样, 首先是从占地址零一,对吧?功能码,功能码,咱们刚才也知道了,功能码是零一是什么呀?零一就是咱们读这个线圈计算器的位,然后取得这当前状态,然后计算器的 锡纸地址在哪啊?在前面大家说了,计算器的锡纸地址是多少,是零零, 然后计算器的第一位地址是这个二十一,在这呢,计算器的开开始地址是二十一, 然后计计算器的数量是多少啊?重占地址,功能码,计算器的高位地址,计算器的低位地址, 结束的计算器的,然后这个从从这返回都是从从,这就是说咱们的窗口设备,然后给咱们发的这个,他跟这是一样的 重占地址,功能码加返回四,结束,然后加数据加胶原码,这这个胶原码 其中返回的数值对应一下,现在状态 on 是 on 是为一,然后 off 为零。 数据以小端的形式进行储存,即最新有效位存放于内存地址的右侧,然后每八个位组成一个字节,这大家应该都知道,当线圈的数量不是八的倍数时,余数的用零填补, 然后输单地址零零,功能码零一,刚就是咱们输入的功能码,然后返回的字结束,因为咱们读了十二个,对吧? 所以说返回数学数它应该是大于一,小于二 ah, 然后他所以说他需要两个字节来进行计算,然后第一个字节 第一个字节 c b, 第二个字节零 b, 然后交易码, 然后他这个怎么说呢?就是说 字节一存放的是二十一到二十八,然后字节二存存放的是二十九到三十这个数剩余的。而且从小端字节开始的线圈二十八存在于 b 的七,然后二十一它是存放在 b 的 零,就是说如果上投币的一 如上秒中这个 deta 一就是数据一,然后它表示的是二十一到二十八的线条状态,然后它的最低位表示的是历史的线条状态。 如果把这个 c b 十六禁制转化为二禁制,就是幺幺零零幺零幺幺,然后在线圈线圈中的值, 就是说嗯,从右往左左读,从二十一、二十二、二十三、二十四、二十五这样,然后咱们读出这个状态来,这个顺序的,你看像这个 beta 二它是读的什么呀?三十到三十八, 他不够八倍,然后其他的字节呢?就全部用零来填充, 然后这个这个功能码零二,这个跟这个其实是一样的,然后这个功能码零三, 这个咱们这个零三 功能他可以读单个,也可以读多个,然后每个保持计算器他占两个字节,就是,然后他们主机发送的指令也是地址加功能码,功能码就是说零三,然后加上计算器的地址,然后加计算器的数量,然后加 专业码,然后假设咱们这个存单地址为零三,然后这个公众码他也是零三, 这个计算器的地址咱们不要,不需要高位地址,咱们这因为咱们是走 低位往高位读的,所以这个计算器的高位地址全部都写,全部写零零就行了,然后低位地址三 b, 计算器的起始地址就是三 b, 开始的计算器的低位地址三 b, 然后咱们需要 读几个呢?然后吸尘器的数量,咱们需要读三个,对不对? 我们不需要看这个结束地址是什么,因为我们可能是说用不到那么多,然后咱们需要读三个,然后咱们在这个计算器 d 位,然后就读 零三,写三个,然后气候效压这个东西,这个东西咱们咱们可以直接算,然后有一些呢,咱们是从高位往低位涂的,然后是咱们从写高位的起始地址, 然后然后低位的,然后写其他的,然后返回,返回的功能码,然后加次结数,然后加数值,那重占地址零零三,然后功能码零三,返回的次结数零六。为什么呀?因为咱们读了三个字结,读了三, 三个字节,然后我们的字节,然后现在我们的字节,字节一的高位字节一的低位字节二的高位字节 高位低位,高位,低位,然后消减码,然后这个地址就是三 d 三 c 跟三 a, 就是从右往左读, 然后意外 是多少啊?零币四加一就是零币, 然后高位多少啊? e、 b 四减一, 然后你看我们第一个, 然后起始地,然后计算器的地址是三 d, 然后数值说,好啊, 从右往左足,高位 c 二,然后低位多少啊?就是就是这个 d b, 好了,今天我们课程就讲到这。