零一是变频器的地址编号,零六是功能码,向变频器写入数据。那么后面的数据地址零零零八是什么意思呢?它是怎么得来的? 数据地址?我们要先查下变频器的说明书,我们要从变频器的说明书查到这个 modbus rtu 计存器,每个变频器他都会有他自己的说明书和不同的存储器代码。 我们要给变频器设置正转、反转、停止,这些指令都要用到控制输入命令,也就是控制变频器正转、反转、停止。那我们要用到的计存器代码 就是四零零零九,这一个代码编号他既可以读入,也可以写入,我们现在是要用零六写入代码的功能, 我们查到的变频器代码是四零零九,然后用四零零零九,再减掉四零零幺等于八,这个八才是我们真正需要的代码编号。 这个八它是十进字数,需要将它转换成十六进字数, 他等你 h 零零零八这个数是怎么转换来的呢?我们可以用软件来计算,不需要我们自己去计算。我们现在是用实进制数转换 成十六进字数,实进字数是八,那么转换成十六进字数。八, 它真正的格式是 h 零零零八,这个才是十六进字数。八转换成十六进字数就是 h 零零零八。 从数字的零到九转换成十六进字数,它们的结果看起来都是相同,比如自己是九,那么转换过来的十六进字数就是 h 零零零九, 到十以后转换出来的数字就会不同。这个我们要注意,我们将这个十六进字数填到这个表 表格上面,前面的这两位是高地址填在这里,淋巴是低地址填在后面,这个顺序不能调反, 当这个数据传送给变频器的时候,变频器他就会知道这是一个控制输入命令。
粉丝7.2万获赞18.7万

大家好啊,我们这节继续讲这个,呃, fs 三幺的摩托巴通讯,那么这节呢,我们讲一下呀,通过创口条助手我们看一下我们的各个指令的用法啊,首先呢我们啊 参数啊,上节我们讲的这些参数怎么设置第一种方式呢?呃,就是通过这个数控程序来设置。第二种方式呢,通过片系参数来设置啊,那么这两种设置啊,我们选一种就可以啊,不要两种都设置啊,两种都设置啊,选一种就可以啊, 然后设置好之后呢,我们就可以通通过我们的程序进行啊指令的发送啊,通过 adp 二 w 指令来发送,那么 adp 二 w 指令呢?他有很多种。呃,功能码,就是 猫的霸通讯呢,他支持啊很多种功能码啊,包括零三的零六啊,这是我们最常用的,但是不常用的呢,也有很多啊,我们看一下这个功能码,功能码啊,他支持零一,零二零三呢,什么什么什么各种功能码都支持啊,标准功能啊, 零一啊,线圈读出啊,零二呢是输入读出,零三呢保持计算器读出,零四输入,计算器读出啊,零五一线圈写入啊,零六一计算器写入 啊,零七异常状态突出啊,然后呢后面还有这个幺零啊,批量计算机写入,那么我们最常用的呢,其实就是零三,零六幺零这三个啊,因为大多数时候啊,我们都是和仪表啊,变频器啊之类的进行摩托吧通讯啊,很少呢和 prc 进行通讯。 所以呢我们这个零一啊,零二零三呢等等这些呢,我们基本上是不常用的啊,零一,零二零五之类的啊,我们通常都是和 变频器来通讯,那么我们这里呢,比如说啊,我们看今天零三指定啊,前面我我在课程中已经发过零三指定的结构啊,那么首先第一个 h 零一啊, h 零一,我们看这个 h 零一, h 零一呢,就是从站的账号啊,零一零三是功能码, h 二幺零二,二幺零二啊,我们要注意这个呢,就是我们的从站的,呃, 地址啊,就是我们通过读啊,读功能码,那么从哪个地址读出来呢?就是 h 二幺零二,然后 k 一呢,是指的是我们读 几个字啊,读几个字,那么这个功能码啊,转换成豹纹是什么样的呢?这个大家一定要知道啊,那么零幺零三啊,前面为一样的,然后二幺 零二啊,就是按顺序,其实这个就是按顺序把豹纹写出来,然后呢腰呢,占着两位啊,就是个数,这个占两位啊,大家占这两个字啊,两个字解,两个字解, 最后是 crc 硝烟,而这个 adp 二 w 指令,这个 crc 硝烟呢,是自动计算的啊,就不就不需要我们呃操心了啊,不像啊, s 指定啊,我们需要自己计算 crc 效应,那么这个 a、 d、 p、 r、 w 指定的是不需要这个呃 crc 效应的啊,但是他发出的豹纹是自带 crc 效应的啊,那么通过这 这个豹纹呢,我们就把读出的地址放到哪里呢的读出的数据放在哪里呢?放到第零开始的一个数据中啊,这里是 k 一,如果是 k 五,那么就第零开始的五个数据,第零,第一,第二,第三,第四,第五啊, 这样啊,然后这个豹纹呢,和我们前面讲过的豹纹是一模,是一样的啊,就是我们不管用二 s 指定也好, a d p r w 指定也好,或者是二 s 二指定也好, 发出的豹纹都是一样的,就说我想读什么啊,发出的豹纹都是一样的,大家一定要注意摩托巴斯这个豹纹,不管是你用任何片系发,他都是这串豹纹啊,啊,所以他是通用的啊,这个豹纹,所以我们要理解豹纹啊, 然后啊,比如说这里啊,我把我把 k 一如果改成 k 五,那么这里呢就是零零零五啊,零零零五,然后呢存在 地龄开始的地址中,其中前面这四个呀,我们既可以用十进制的,也可以用十六进制的啊,也可以用计算器来进行那个呃,复制啊,比如说我这里呢,我是第十,第十一 啊,第十二,第十三啊,计算器来复制,那么计算器复制我们要注意一点,就是啥呢之前前面一定先给计算器复制, 之后呢再用 a d p r w 指定啊,你不要说计算器是空值,都是零,然后你用 a d p r w 指定啊,那样就,呃不可以了啊,比如说我们看加计算器负值啊,计算器负值, 那么我们如果说用第十啊,然后喜马 m 八零零二,我们先给这个第十负值,木屋 h 一 啊,到第十啊,这是第一个啊账号,然后木 h 三到第十一, 木 h 二幺零二到第十二,然后木 h 木五 k 一到第十三啊,十三啊,这样呢,我们负好值之后,我们这里呢,就可以直接把这个值啊,变成第十, 第十一,第十二, 第十三啊,第零。好,第零我们先不变啊,第零不变,这样呢,我们下载个片,其中啊,我们看一下,我们下载 prt 中啊,他的效果和我们之前的效果是一样的啊,确定,然后监控 大家看,现在呢,我们第十、第十一、第十二、第十三呢,都是我们的,就都穿入直了啊,都穿入直了啊,在出说话的时候,然后这个 地灵是我们读回来的频率啊,读回来频率,这时候我们观察地灵啊,大家看啊,地灵呢,现在只有地灵有直啊,地灵有直,因为我们只读出一个字啊,读,只读出一个字, 那么如果说我想读两个字啊,那么我只要把第十三这个值啊,给他更改一下,比如说第十三这个值,我改成五啊,改成五, 那么现在呢,他就会读出五个字了啊,五个字了,那大家看,现在就有字了啊,有字了,第零,第一,第二,第三,第四,第五,因为我现在我没有让变频器转啊,所以呢他只读出两个了啊,两个,其中这个十进制啊,也就是 实践制啊,就是我们这个什么呢?就是我们实际的频率啊,频率啊,这个,因为现在我这个变频器上显示的是十五赫兹啊,十五赫兹,这个是 我们的设定频率啊,然后第一呢是运转频率,因为现在没有转啊,所以他是零啊,然后其他的电流电压什么的,具体是什么,大家可以去查手串啊,所以我们这个写程序的时候呢,就可 两种方式,第一种呢,我们直接用计算器来写负值啊,这样方便我们调试啊,方便调试。第二种呢直接用 k, 就是用自然数啊,十进制或者十六进制,但是最后一个一定要注意地零啊,不可以是数字,因为他我们读出来 数据呢要存到某一个地址中啊,所以必须是地址啊,最后一个,然后我们再看一下这个啊,创口条助手啊,创口条助手,创口条助手啊,这里面呢我们就根据我们的豹纹呢,就接收到我们的相应的数据了啊,我们看啊,因为现在我是 一起发的啊,所以感觉很快啊,对,很快,那么他实际发的零幺零三二幺零零二零零零五二一三五啊,这就是他实际发的豹纹,那么这里呢,我改变二幺零二就是改变地址,改变 零零 k 五呢,就是他的字数啊,最后二一三五呢是他的硝烟码,硝烟码大家注意,就说这个豹纹呢,大家一定会解读啊,就说我们摩托 bus 通讯最难的呢,也是豹纹啊,豹纹呢也是 困扰大家,就比较感觉比较难的啊,但是大家自己一定要掌握啊,就是一通百通啊,当你豹纹通了之后,你用什么片系来调试,都是一样的了,都是 一样简单啊,一样简单啊,那今天呢就讲这么多啊,讲一下这个零三功能码的使用啊,谢谢大家。

大家好,我是曹公,这个视频呢,我们来讲一下 modebus 协议。首先呢,我们先来说一下这个 modebus 的一个应用场景啊,咱们常用的一些通讯协议啊,有啥呢除?咱们先不说工业以太网啊,就说普通的这种通讯协议, 有 mood bus, 有 can open, 有 perver bus, 对吧?这三种可能是最常用的,在公共领域,在这三种里面呢,这个 mod bus 应用的更多啊,最多 可以这么说啊,他就是用的最多的,他应用这个最多呢,我觉得有两方面原因吧,一个呢,就是他的一个成本很低啊,要实现一个 modebus 通讯啊,他的硬件成本比较低。第二个呢,就是他协议 也比较简单啊,非常容易掌握啊,非常适合那种简单的那种要求不高的场景,对吧?所以说呢啊,摩托巴斯用用非常广泛,非常广泛,其实也不止在工业领域,工控领域,在很多民用领域其实很多。 那个通讯啊,也用 modbox 啊,也用 modbox, 这个呢就是咱们 modbox 的一个一个重要性啊,一个重要性啊,大家必须好好的把它掌握。 然后呢我们再来看第二个问题啊,就是 modbas 的含义啊, modbas 呢,首先它有三种模式啊,一个是 modbas rtu 啊,一个是 modbas 阿斯克马啊,再一个呢是 modbas tcp, 这个 tcp 呢,它是应用在以太网上的啊,咱们, 嗯不涉及啊,不涉及它是用在乙胎网上的。然后呢, rtu 和阿斯科马呢,都可以应用在普通的串口的一个场景下 啊,比如说我们上一节讲了,咱们的串口通讯呢,可以分为两层,一层呢是底层的这个电器标准硬件电器标准程,第二层呢是软件协议层,对吧?这个硬件标准程呢啊,就是四八五 二三二四二二啊,他们定义的那些东西啊,就是呢,他们定义什么东西呢啊?定义咱们的通讯线上啊,什么叫一啊?什么叫零, 对吧?什么叫一,什么叫零?他们定义的这些东西,然后呢上面这一层呢,就是我们的软件协议层啊,咱们的模特 bus 的 rtu 或者阿斯科马啊,就定义了这部分内, 这部分内容简单来讲是什么东西呢?通俗的讲哈,就是四八五,它定义了啊,什么叫一,什么叫零?什么叫一,什么叫零,然后呢 r t u 呢?它定义了什么东西呢?它定义了零一零零零零一一一零零, 他定义了这一串零一啊,具体的一个含义就一串啊,零一的这么一个脉冲串啊,具体代表什么东西? 这个呢就是我们的软件通讯协议来定义的啊,咱们 rto 阿斯卡马就是软件通讯协议,所以说呢,他也定义了这些东西, 他就定义了这些东西啊,这些东西怎么去解析?他就定义了这些东西 r t u 和阿斯克马呢,我们更常用的是 r t u 啊,阿斯克 码的话用的不多啊,用的不多,因为他的传输效率更低,传输效率更低,你同样传输一批数据啊,二十个码的传输效率更低啊,他只有 rto 的一半啊,只有一半,但是呢他有其他的好处,其他好处,不过呢, 我们 modbas 常用的一个模式啊,还是 rtu。 基本上如果说你听到一个设备啊,一个仪表,一个变频器,他支持 modbas 的话啊,他几乎都支持 rtu 啊,几乎都支持 rtu 啊,有的呢,可能也支持阿斯卡马,但是呢 啊,可能只是少数支持阿斯科马啊,他说他支持 modbus, 大概率或者相当一部分他不支持阿斯科马啊,但是 r、 t u 几乎是他必支持的。这个呢,就是我们说的啊,这三种模式的一个 区别。 t c p 呢?它是要跑在以太网上的啊,要用网线网口去的,去用的。然后这个 r t u 和阿斯科马呢,它可以是底层的,就是普通的串口就可以四八五二三二四二二啊,都可以去运行这个 r t u 和阿斯科马。 然后呢我们再来说一下啊,这个 modebus 它是个主从协议啊,这是个重点。什么叫主从协议啊?主从协议的话呢,是这样子的啊,比如说我们一个网络,一个一个,我们举例是四八五啊,四八五网络啊,四八五接口,一个四八五接口 啊,一个站点,然后呢底下呢啊,接了一些其他的站点啊,他们都在一个网络下,对吧?都在一个网络下,大家想想啊啊,这 这里是不连接的啊,这里是不连接的啊,他们每一个站点都是连了两根线到这上面,这到这两根线来,比如说一个 a 一个 b 啊,或者叫正和负都可以啊啊,中间这里是不连着的啊,这里都是不连着的。 咱们的 modebus 协议啊,是主从协议,而且是一主多从啊,它一个 modebus 网络下面有且只有一个主站 啊,可以有多个从占,也可以只有一个从占啊,都没问题。什么叫主从协议呢? 就是说你要交换数据的话,这些站点之间要交换数据,只能是主战发起从战回应啊,我们单对单的 来说啊,这样比较更好理解。比如说这两个站点他是主,他是从啊,他是主站啊,他是从站,他们连上通行线了,对吧?主从协议的意思是 每一次通讯都是主战发起从战回应。通俗的来讲,咱们通讯的时候是不是就是读写数据?它本质上是不是就是读写数据? 主从协议他只能是主战去发起读协啊?就比如说他想读数据了,他想读这个从战的数据,他就发起通讯,我要读你的数据,你这个从战呢,收到这一个读取的一个请求之后, 他就把这个数据准备好,然后呢响应给他一个信息。是这样子,如果要写呢,也是这样子啊,主战要把某一个 信息写到从战里面,然后呢也是他发一个写的报文,从战接收到之后呢啊,就把这个报文呢就写进去,然后呢回应,然后再再回应一下啊,我写好了啊,是这样子的,从战他不能主动发起通讯, 对吧?在主从协议的这种这种模式下,从战是不能主动发起通讯的,每一次通讯就必须是主战发起啊,无论是读还是写啊,从战只能回应。 好吧,再强调一下啊, modebus 是组从协议的这种模式主占有且只有一个,从占可以有一个,也可以有多个啊。好,再接下来看啊,占点数量, modebus 协议呢, 最多他有两百五十六个站点,一个这个 modbas 这个网络下面最多有两百五十六个站点, 然后呢?尤其只有一个主战点,然后剩下的呢?全是重战,对吧?可以有一个重战,也可以有两个啊,也可以最多有两百五十五个,对吧?一般情况下用不了这么多啊,一般情况下都是二三十个以内,对吧?二三十个以内,这个呢就是咱们说的第二个啊。 好,咱们接下来呢,简单来说一下这个 mode bus 的一些内部的一些内容啊。简单说一下啊,我们接下来说的这些内容呢,都是比较比较核心的啊,重点的内容在我们应用的时候呢,会一定会用得到的内容。好吧,我们简单说 问一下啊,比如说我们一个摩托巴斯网络啊,一个主战跟从战进行通讯,我刚才说了他是主从的,对吧?每一次通讯必须是主战发起从战回应,对吧?一个网络下面可以有多个重战,所以说呢,你想想, 我读消息或者写消息的时候,大部分情况下都是给某一个站点来写啊,就同时一次只写一个或者读一个,然后呢? 读完这一个,写完这一个再赖下一个,对吧?一般是这样子的,所以说我要发送一个报文过去,发送一个消息,我在这个消息里边肯定要有一个内容,就是站点信息, 对吧?我要给哪个站写啊?要给哪个站去通讯啊?对吧?我有,我要有肯定这个报文里边要包含一个站点信息,比如说他是一号站,他是二号站,他是三号站,对吧?四号站等等等,对吧?我这个报 豹纹里边发这个消息里边我肯定有一个是站点信息,因为什么呢?因为我发送出去之后,这个这个消息,这个豹纹呢?每一个网络下面的一个站点都能收到这个消息,但是你只是给其中一个发的,所以说你这里边一定要有一个站点消息, 对吧?如果说啊,某一个重站他收到这个消息,他一看这个站点并不是给我发的,所以说呢,我就 啊不用处理这个消息了,就不用回应了,对吧?啊?如果说啊,这个重站他他发现,哎,这个豹纹正好是发给我的,他里边的站点信息正好是发给我的,然后呢我就来处理一下,然后响应一下, 对吧?所以说这一个豹纹里边肯定有一个是站点消息,还有呢还有呢,就是 是这个报纸里边一定要有一个明确的一个目的,就是我到底是要读还是写,对吧?简单讲就是我要读还是写, 我肯定要有这个信息吧?要不然这个从站接收到这个消息都不知道我我发这个外文是干嘛的, 是吧?然后这个这个东西呢,就是以咱们的功能码来判断啊,比如说发送一个零一,这个功能码啊,就是读线圈零五啊,就是写线圈零三,就是读计算器零六啊,就是写计算器,就是我通过这个报文里边的一个功能码 来告诉重战啊,我这个豹纹是干嘛的,对吧?这个就是功能码啊,咱们待会再稍微的再说一下这几个功能码的一个区别啊,咱们现在只是啊笼统的先给大家说一下这个通讯的一个豹纹 的一个内容,对吧?啊?重站的一个账号要有啊,功能码也要有,还有呢,大家想想我之前说过通讯的话,它是可以 读写很多个信息的啊,比如说这个一号站点,它是个变频器,对吧?我可以读写很多,我可以给他读他的一个当前的电流值,我也可以读他的一个叫 啊,当前的一个转速啊,或者我读他的报警代码,对吧?我读一个其中一个站点,也不是说只读他的一个信息,我要读他的多个信息, 那我到底读的是哪一个呢?比如说我要读他,我,那我到底读的是哪一个呢?怎么样在报文里边去让这个从战知道呢?怎么知道 哎,这个就是 model bus 给我们也是定义好的一个东西啊,叫计存器的地址,计存器地址就是说这个重战呢? 他啊自己手册里边给我们说好了,你要读电流的话是哪个地址?你要读这个报警代码是哪个地址?你要读转速是哪个地址,就是说他从那给我们 他手册里边告诉我们了啊,每一个信息对应的一个计存器地址,然后呢我们要读哪一个的话,或者写哪一个的话,就在报文里边把这个计存器地址啊写上去之后就可以了, 对不对?就以这个计计存器地址来区分啊,不同的一个,对,用于从占的一个,不同的一个啊,对吧?信息啊,当然 这个要双方约定好,对吧?我们 p l c, 比如说这个是我们 p l c, 我们 p l c 编程的时候,这个计存器信息,那可都是什么呢 啊?都是看这个从战的手册呀,对不对?你看看人家那个地址跟信息跟那个定义是怎么定义的呀?然后呢我们再去啊,发送我们的消息啊,对不对?所以说呢,我们这个报文里边啊还要有一个叫寄存器地址 啊,他这个计算器地址呢,他不是用来区分不同站点的啊,区分不同站点靠的是这个站号,这个计算器地址呢 是区分某一个站点它内部的不同的一个数据啊,是这个意思好吧。啊,所以说呢,一个豹纹里边啊,必须要有这三个东西 啊,这三项东西啊,当然他还有其他的东西啊,但是呢我们现在先理解一个东西啊,他必须有一个账号,有功能码,有计算机地址。 好吧,先理解到点啊,咱们之后呢还会有实操啊,实操里边呢我还会再讲解啊,就是说用到的一些东西 啊。好,我们再看一下啊,第三个内容啊,刚才我们也说了啊,功能码呢,就是这个 用来判断或者用来告诉这个重战啊,我这个报文是用来干什么的啊?是要干嘛啊?就是通过功能码来区分的零一功能码啊,就代表我要读线圈的一个状态, 零五啊,就代表我要写线圈,就是我要写给你的那个线线圈,我要我要写它,我要改变它的值啊,就这个意思, 这个是零三呢,就是我要读你的计算器啊,一般就是字计算器啊,字计算器我要读啊,这个零六呢,就是写其实最常用的是零三和零六啊,最常用的是零三和零六 啊,其他的一些功功能码。其实 modbas 支持的功能码还蛮多的啊,应该有十几个,二十几个啊,但是基本上都不怎么用啊,最常用的就是零三和零六。好吧,就是零三和零六,把这两个要熟练掌握就可以了。 这个视频呢,我们就给大家讲了这个 mode bus 的一些基础知识啊,一些基础知识。然后呢接下来的视频呢,会讲一些实操啊,会讲一些实操,这个视频呢,我们就到这里。

摩托 bus 通讯常用八种功能码,你知道都有哪些吗?零一、零二、零三、零四、零五、零六、零 f, 幺零 零一呢?读是读开关量输出,零二,读开关量,输零三,读保持计算器零四,读输入计算器零五,写单个开关量输出,零 f, 写多个开关量输零六,写单个保持。一零写多个保持, 都是干嘛用的啊?咱以二百 smart 为例,如果二百 smar plc 作为重战,作为 modbuds 通讯的重战,那么我们要想读这款 prc 的 q 点,我们要用零一功能码去读, 我们要读这款 prc 的 i 点,我们要用零二功能码去读,我们要读这款 prc 的 v 区,比如 vw 零, vw 二、 vw 四,我们要用功能码零三 去读。如果我要读取这个模拟量输入模块的值呢?我就要用零四去读, 这四个是读,那还有四个是写,零五,是写单个线圈,单个开往。比如说我想控制 q, 零点零一个,我用零五,如果想控制零点零、零点一、零点二,想控制多个,那我用零 f。 如果想修改单个,保持遵纪,比如我修改 vw 零的值呢?我用零六,如果想修改多个,比如 vw 零, vw 二, vw 四,一次性修改多个,我用幺零。 那这个所说的八个功能码后面还有对应的 a、 d、 d、 r, 这个 a、 d、 d、 r 啊,就是对应的飘出的计存器地址的这个引角啊,这个引角需要填入的,那么这个地址对应是多少呢?从功能码零 一对应的是零零零零一到零零九零九九九,郭德玛二对应的是一万零一到一九九九,郭德玛零三对应的是四万零一到四九九九,如果在这个方面的没有或者超出这个范围的,那就是四十万零一到四十六万五千五百三十五, 功能码零四对应的是三万零一到三九九九。对,你没有听错,功能码三对应的是四,功能码四对应的是三,那么兄弟们五对应的是 零 f, f 对应的也是零,零六和幺零对应的都是四,为什么呢?评论区留言。

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

大家好,我是曹公,这个视频呢,我们来讲一下 p l c 做 modbas 的主战。我们在前面几讲的课程当中呢,讲了 modbas 的基础知识,也讲了 plc 做 modbas 重战的时候啊,应该怎么去配置。 事实上呢啊,这个 p l c 啊,只有在跟一些触摸屏啊,或者是尚未机通讯的时候,他一般是做从战的 啊,当 p l c 跟一些变频器四伏或者仪表通讯的时候呢 啊,他一般都是做主站,就是 plc 一般都做主站,因为呢这个变频器四伏也好,仪表也好呢,他本身一般情况下啊,他是不支持做主站的啊,他也不合适做主站。所以说呢 呢,他们跟 p l c 通讯的时候啊,都是 p l c 做主战啊。这节课呢,我们就重点讲一下啊, p l c 如何做主战。 首先呢,咱们先啊再强调一下 modebus 的一些重点的支点。首先第一个 modebus 呢,它有三种模式, rtu, 阿斯科马和 tcp。 这个 tcp 呢,它是要求跑在啊,这个乙胎网上的 阿斯格马和 r t u 啊,都是可以跑在这个串口上啊,这个其中呢,我们最常用的就是 r t u 几乎所有的电信设备,如果他告诉你啊,我这个支持 modbas, 那么呢他几乎百分之百支持 rtu, 但是它是不是支持阿斯科马呢啊,这个还确实未必啊,有的还真不支持,我们平时用的呢也绝大部分啊都是 r t u, 我们啊在课程当中使用的也是 r t u。 好,我们再来看第二个问题啊,就是说 modebus 啊,它作为一个通信协议啊,跟这个四八五 r s 二三二啊到底是什么关系? 我们之前啊反复也强调过了,咱们的串口通讯呢,可以简单的把它分成两层,一层呢是底层的硬件电器接口层, 对吧?这一层呢,有一些标准啊,比如说 r s 四八五, r s 二三二,对吧?然后呢上面一层呢啊,是软件协议 啊, model bus 协议呢,就属于这一层啊,软件协议层啊,主要定义了一些软件啊,协议相关的东西。 好,咱们再看一下第三个问题,就是 mode bus, 它是一个主从协议啊,在一个 mode bus 网络里面是一主多从啊,有且只有一个主战 啊,可以有多个从占啊,也可以只有一个从占啊,都没问题。所谓的主从协议呢, 就是说啊,咱们这个呢,咱们这里呢,画了一个两线制的啊,斯巴古的一个通讯网络对吧?一个主站啊,多个从站走的呢,是摩托巴斯协议。什么叫主从协议呢?就是 所有的通讯都是由主战发起,然后从战啊,响应啊,这就叫主从协议。好,咱们再看一下第四个问题啊,同一个网络下的占点配置要求啊, 就是说在同样一个啊,四八五网络啊,或者称之为 modebus 通讯网络啊,同一个网络下的所有站点,他们的通讯格式和波特率啊,都必须保持一致才能通讯正常。就是说同一个网络下的所有站点 啊,必须通讯格式和 butter 率啊,保持完全一致才能通讯正常。什么叫通讯格式呢啊?就比如说数据位的位数啊,教宴啊,是鸡教宴,藕教宴还是 吴教燕啊?还有呢就是停止位的位数,是一位还是两位啊?这些呢,就叫做通讯格式。 然后咱们再说一下啊,这个通讯格式啊,应该怎么去选择呢啊?就像我刚才说的,这个数据位的位数啊,可以七位,可以八位,我们怎么去选择呢?就是在 mode bus r t u 这种模式下, 通讯的数据位数必须是八位。然后这个基教宴,偶教宴,怎么选择呢?是选择基教宴,偶教宴还是吴教宴呢啊,这里呢,我建议选择 有叫宴的啊,就是鸡叫宴或者藕叫宴,因为什么呢?因为多一个叫宴呢,相当于是多了一层的保护,如果说啊,这个叫宴位出现错误的话,他会及时的报警,是吧?所以说我建议选 有教宴的,至于是基教宴还是偶教宴啊,都行停止位的位数呢啊,一位或者两位啊,都没问题,都可以。 然后这个波特率啊,我们常用的一些 modebus 的波特率,比如说九六零零啊,幺九二零零,三八四零零,对吧?幺幺五二零零,这个怎么选择呢啊,这个波特率呢,是这样子的 啊,数值越大,通信速度越快啊,但是呢,他更容易受到干扰, 对吧?所以说呢,我们就根据我们的需要啊去选择就行了。如果说你的这一个通讯速度要求不快,对吧?就比如说读一些温度值啊,温度值的本身他变化的也比较慢,对吧,控制要求也不是特别高,所以说呢啊,读一些温度值啊,你就 可以把这个波特率设的低一点啊,这样的话呢,更容易稳定。比如说啊,你用的是一个两限制的四八五网络,然后呢,你也没有用那种双脚屏蔽线,对吧?所以说这个时候呢,你波特率可以选择的低一点啊,这样子的话呢啊,抗干扰性强一点啊,是这样子的, 如果说啊,你这个通讯速度要求的高一点啊,那么呢这个剥夺率你就选择的可以大一点,同样的呢啊,这些硬件接线啊,这些线缆的选择啊,也更要好一点,最好用那种双脚屏蔽线啊,这样子 好,我们再看一下啊。第六个问题啊,占点地址和计算器地址的区别,什么叫占点地址呢?就是我们之前也说了,同一个网络下面啊,有 好多个站点,一个主站啊,多个从站,从站可以有多个,对吧?那么咱们主站跟从站通讯的时候,对吧?他怎么区分这些站点呢? 这个时候呢,就靠这个站点地址,每一个站点给他复一个地址来区分不同的站点啊,比如说这个是一号站点啊,这个是十号站点啊,这个是五号站点, 每一个从占都有一个独一无二的占点地址啊,他是一了就不能再有一了,他是十了啊,就不能再有十了 啊,就这样子的站点地址是用来区分同一个网络下不同的站点的计存器地址是干嘛的呢啊?比如说哈,这个十号站点是一台变频器,那么的话主站 可以读写他的数据,读写这个变频器的数据,对吧?但是这个变频器他有好多数据啊,对吧?比如说啊,他有啊,当前的速度值啊,当前的电流值, 还有当前的啊报警值啊,或者怎么样等等一些信息,对吧?他有好多这个数据,好多种信息,那么 他每一个我们主站要去读写他某一个数据啊,怎么区分他不同的数据呢?就是通过这个计算器地址来区分的啊,这个计算器地址呢,都是某一个站点 对吧?他自己出场的时候啊,就给你固定好了,手册里边都给你写好了。比如说啊,我的当前速度值啊,地址呢是一千啊,举个例子啊,当前速度值是一千, 计算机地址当前电流值啊,是一千零一对吧?啊,当前的报警值啊,那个地址在一千零二 对吧?那我主战啊,我 p l c 我想知道这台变频器啊,它的当前速度值是多少?我就读它的一千的计算器地址这个位置啊,就可以了呀,我如果想知道电流值呢,我就读一千零一啊, 对不对?所以说呢,占点地址啊跟计存器地址啊是有本质的不同的啊,大家一定要把它区分好 啊,简单来讲呢,就占点地址是用来区分同一网络下不同占点的计存器地址呢,是用来区分某一个这个占点啊,它内部的数据。用这个 不同的计算器地址啊,把他的数据啊给他编个地址,编个码啊,是这个意思。 好,咱们再看一下啊,常用的功能码啊, modbas 常用的功能码其实最多的就是 h 三和 h 六, h 三呢就是读计算器地址, h 六呢就是写计算器地址啊,具体怎么用咱们待会呢稍微详细的讲一下。 好,咱们接下来再看第八个小问题,就是什么叫一次完整的摩托马斯通讯。 我们之前讲了啊, model bus 是主从通讯啊,所有的通讯必须是主战发起从战响应啊,也就是所有的通讯呢,都是由主战啊去读写的,对吧?比如说啊,咱举个例子,比如说 主站要读取一号站点的某一个计存器的数据,他要读,对吧?第一步啊,他会把这个豹纹发到总线上面去, 对吧?这个报文里边啊,包含占点信息,计存器信息啊,还有他的功能码信息, 对吧?然后这个一号站点啊,他收到这个报文之后,他发现这个报文是写给自己的,然后呢他就会去处理把这个对应的信息啊,把这个主战要读的信息啊准备好,准备好之后呢, 把这个信息发送到总线上面去。主站他收到总线上的这个信息啊,他发现是一号站点给我的响应,然后呢就把这个一号站点的这些数据啊存储到对应的位置, 然后这个才算是一次完整的 modelbox 通讯过程啊。简单来讲啊,一次完整的通讯是什么呢?逐战发报文啊,从站收到报文啊,处理报文,然后呢再响应报文, 然后主站呢收到响应的豹纹啊,再处理一下这个豹纹啊,就算一次完整的通讯完成了,下一次啊,再进行模特把通讯的时候啊,又要重复啊,可能是读写的不同站点不同计算器, 对吧?但是每一次通讯啊都包含这么一次完整的过程啊,发送响应,主战发起啊,重战响应啊,是这样子的, 当然呢,这个 modbus 的它还有包含这个广播啊,广播的话呢,它是 发给是主站发给所有站点的一个广播信息啊,不需要站点响应的。但是呢广播啊用的很少啊,一般情况下呢都不用广播。所以说呢,他一次完整的摩登马斯通讯啊,就是我们刚才讲的那整个过程。 好,接下来呢,我们再看第二个问题,就是用三零 plc 做这个 modebus 主战啊,我们两种程序编写方法。 第一种方法呢,就是使用啊这个 r s 指令啊,专用的通讯指令来自己写通讯程序 啊,自己去写这个报文,而且呢, modbas 啊, r t u 它还包括这个教验, c r c 教验,你还要自己去写这个 c r c 教验的一个程序 啊,蛮复杂的啊,非常的复杂,开发效率很低啊,还很容易出错。而且呢还要求你对这个 modebus 的一些豹纹格式非常的熟悉啊,你才能去用这个指令去完成这种通讯方式 啊,比如说三菱的一些老的 p l c 啊,三菱 f x e n 啊,二 n 啊,这些 p l c 呢,都只能使用这种指令去做这个 mo modabas 主战通讯 比较麻烦啊啊,这个呢是我强烈不推荐的一种方式啊。第二种方式呢啊,就是使用 modbus 的专用主战指令,就是 a d p 二 w 指令啊,使用这个指令去开发就非常简洁了啊,但是这个指令呢,只能在那个 f x 三右 啊,或者是更新的一些 t l c 啊,才支持这个指令啊,这个指令呢就非常的好用了啊,一个调用一次这个指令啊,你基本上就能完成一次完整的 modbas 通讯过程 啊,只需要写一到两行的程序啊,你就可以去读写一次数据啊,非常的简单。 所以说呢,在用三菱 p l c 啊,尤其是 f x 三右 p l c 来做 modebus 主战通讯的时候呢啊,我强烈推荐啊,就使用这个指令就可以了。好,咱们接下来呢就重点说一下这个 a d p r w 指令的使用, 咱们介绍一下这个 a d b r w 指令。好啊,这个呢,就是我的那个 p l c 版的 产品手册啊,我在这里呢是有一部分啊,专门介绍这个 a d p r w 指令。首先呢,这个 a d p r w 指令啊,它就是一个 modbus 的主战专用指令 啊,它的格式呢是这样子的。首先呢啊, a d p 二 w 几个字母对吧?第一个操作数啊,是从战号, 咱刚才不是说了吗?啊,一个 model bus 网络下面啊,一个主战多个从战,然后呢,主战要去读写从战的数据啊,必须指明他要读哪一个从战的数据。 因为我们 a d p r w 指令啊,你执行一次这个指令呢,无非就是完成一次 modbas 读写对吧?就是去完成一次对某一个存站啊,某一个计算器的啊,读写啊,就是完成这么 一个事儿。所以说呢,你在调用这个 a d p r w 指令的时候啊,一定要标明啊,你要读写的是哪个存单号,哪一个存单的数据, 对吧?第二个操作数呢啊,是功能码啊,功能码,功能码是什么呢啊?我们之前介绍了就是你这一个报文,你主战要去读写数据了对吧?你这条报文究竟是干嘛?是读还是写?是读线圈啊,还是读 计算器是吧?就是通过这个功能码来进行区分的,对吧?常用的功能码啊,就是刚才说了零三和零六,零三是什么呢? 如寄存器。零六呢啊,就是写寄存器啊,就这两个常用啊,咱们待会重点介绍这两个。 好,除了这两个操作数之外,后边还有三个操作数啊,都可以称之为功能参数啊,就是什么意思呢?就是你针对于不同的功能码啊,它后边这三个功能参数呢?不完全一样 啊,就比如说哈,我们啊零三功能码,我们使用零三功能码,然后后边这这三个功能参数各是什么意思呢?啊?就看下面的啊,看下面的 好,大家看啊,这个是啊,零三功能码的一个说明啊,零三功能码的一个说明,后边的啊,三个功能参数各是什么含义呢? 当我们要使用零三功能码的时候,我们是要读计算器的数据,对吧?你看啊,下一个参数是什么呢?就是我们要读啊,哪一个计算器 啊?因为站点信息啊,在之前的操作书里边已经有了,对吧?那么我们要读哪个计算器呢啊?就在这个 s 二这个功能参数里边啊去写, 然后呢还有就是我们要读多少个点数,因为我们零三功能码呢,它是可以读多个连续的计算器的啊,就是说我可以因为一个计算器呢是十六位啊,一个字,然后呢我可以读多个连续的 啊,咱们这个 s 三呢,就用来啊,说明我要读多少个,是一个还是两个还是八个, 对吧?然后呢这个 s 四是啥呢?大家想一想,我们要去读数据,读过来之后呢,你总不能不处理吧?啊?总不能 扔了吧,对不对?我们要把读过来的数据要放在一个位置啊,对吧?放在哪里呢啊?就是我们要在 s 四里面去说明啊,我们是要放在这个 d 零的这个位置还是 d 一百还是 d 一千,对吧?啊?随便我们啊,去编程对吧?这个 s 四啊,就是用来 指明啊,我们读的数据放在哪里啊?是这个意思。好,我们接下来呢,再看一下这个零六啊,零六,零六功能码 啊,看这里啊,零六功能码啊,大家想想,我们要给计算器要写数据,对吧?这个零六呢是只写一个数据啊,他不像那个零零三啊,零三是可以读多个数据,零六呢只能写一个计算器数据啊,比如说我们要对某一个站点, 某一个计算器要写出一个值,大家想想,你要首先要说明啊,你要写哪个计算器吧, 对不对?你要写哪个计算器,然后呢啊,这个个数,这一个呢是这个零呢是固定的,因为这个零六呢,它是固定只写一个啊,所以说这个参数呢啊,就没有意义啊,它固定是零啊,固定是零,然后呢最后一个参数呢? 就什么呢?你要给某一个计算器要写值,对吧?那你首先要告诉我你要写哪个值吧,你要写个一还是写个一百还是写个啊?两百三, 你要在你的报文里边说明啊,对吧?所以说我们这个参数呢,就是用来标明啊,你要写的数据是什么数据,对吧?可以是 h 或者 k 这种立即数啊,一 也可以是这种间接的啊,是 d 零啊, d 一百里边存放的一些数据啊,都可以。 好,大家看啊,咱们的这个 modbus 的功能码呢,除了这个零三和零六之外呢,其实还有还有一些其他的啊,还有一些其他的 啊,但是呢其他的呢不怎么常用,咱们呢就不详细介绍了啊,给大家大概浏览一下,零一功能码呢啊,是独线圈的 啊,线圈呢大家应该知道啊,跟计算器的区别就是线圈呢它是一个位啊,计算器呢它是一个字啊,包含十六个位是吧?零二呢啊是输入读出 然后再往下呢啊,就是零四对吧?输入计算器读出啊,这个呢其实跟零三呢没有什么太大区别啊,没什么太大区别, 然后呢零 f 啊,还有零五对吧?线圈写入啊,写一个未线圈的一个数值, 还有呢就是批量线圈写入啊,还有批量计算器写入啊,这个幺零呢幺零呢他是批量计算器写入啊,跟咱们这个一个计算器写入的这个零六呢啊,有一定的区别 对吧?这个幺零呢它应该是功能更强大啊,它可以写多个计算器啊,但是呢我们一般情况下都是一个计算器一个计算器在写啊,所以说呢零六啊用的更多啊,是这样子的 好,这个呢就是我们这个视频啊要介绍的一个内容,主要呢就是带大家强调了一下 modbas 的一些重点知识啊,然后呢就介绍了一些啊,咱们三菱 p l c 啊, 做摩托巴斯主战他两种编程方式啊,重点呢是讲了摩托巴斯主战的专用指令 a d t r w 指令,对吧?咱们接下来的视频呢啊,会讲实际的案例啊,我们如何去在程序当中去真实的编写啊,这个 主战程序啊,怎么使用这个 a d p r w 指令?接下来呢会有实践案例讲解。好这个视频呢,我们就到这里。

三菱的 prc motorbas 通讯指令 adprw 怎么用?新手一定要收藏!这是 fx 五 u, 有两台八 a 和一台八 ao 的通讯程序,我们一起来解读一下。 xe 接通智为 m 一, m 一接通开始通讯,这是三号从战,功能码幺,零是写入保持计存器地址是从零开始的,数量是八个,数据来源是第一千。 m 二零是指定的执行状态。 这句话连起来的意思就是把第一千开始的多个数据写入到三号从站地址从零开始的八个模拟量输出通道中,指令正常结束, m 二十一,接通就复位,这两个 指令异常。 m 二十二,接通就复位。这两个 x 零接通至为 m 零, m 零接通开始通讯,这是二号存站功能码 零。四是读取输入寄存器地址是从零开始的,数量是八个,数据存储地址是低零。 m 幺,零是指令的执行状态。这句话连起来就是读取二号存站地址从零开始的八个模拟量输入通道的值保存到低零开始的内存中, 指令正常结束。 m 幺幺接通指令异常, m 幺二会接通。下面这一段也是一样的,你学会了吗?关注我,大白话讲公控,一听就懂!

接着上面的视频 p e 是计算效应码的指程序, m 八千 p l c 上电运行之后,他就一直接通后面计算效应码的指程序,他就会一直运行。 crc 是计算效页码的一个指令,在三菱的 fx 三系列以下的 plc, 他就不支持这一个指令,所以你使用 fx 一、 fx 二系列的 plc, 那么就不能使用这个 crc 计算效页码的指令,那么 c r c 指令,它的格式是 d 二零一个存储器 d 二三, d 二个存储器 k 六,它是指定有多少个存储 去去参与这个效应码的计算,那么第一个计算效应码的存储器是第二零,然后往下连续六个的存储器计算效应码, 那么就是第二零、第二一、第二二一,直到第二五至六个存储器参与计算效应码,那么我们上面的这一组程序 m e 接通传送到 d 二零到 d 二五的代码就是零五零六,二零零零零零幺二, 就是这一组代码,那么就是这一组代码参与效页码的计算,然后把计算出来 的结果放在这两个存储器里,这两个存储器就是紧接着的第二六和第二七两个存储器, 那么这八个存储器里面的数据就是下面的这一组发送给变频器,那么这个变频器他才会正转运行。 我们来看这,那么这一个 d 三零就是存储计算交易码结果的第一个存储器, 计算教验码得出来的结果,他会存在 d 三零和紧接的的 d 三一这两个存储器里面。然后我们用传送指令把 d 三零的结果放入 d 二六,把 d 三一的结果放入第二期,那么就得出了这一个计算较月码的结果,就会自动放在这两个存储器里面,那么就完成这一组代码。 如果想简便一点,就把 d 三零这个存储器直接改成 d 二六,那么计算出来的结果就会直接放在 d 二六和 d 二七里面, 这两组传送指令就可以不用写,只写 c r c d 二零 d 二六 k 六,那么就可以完成计算教验码的程序。 我们要回上面,那么这是一个括 p e 调用 p e 子程序,那么这一个 p e 子程序,它就会 把效页码的结果放在 d 二六和 d 二七这两个存储器,那么这里就完成了一组代码。 那么最后一步就是发送通讯请求,使用指令 set 八一二二,那么这条指令已执行发送通讯请求,这一组数据就会发送给变频器, 那么变频器它就会震转,运行变频器得到的就是这一组数据,它就会启动并震转。 那么我们在这一个代码里面会注意到,为什么变频器正转运行的代码是零零幺二呢?我们下一个视频再一起来了解。

大家好啊,欢迎收看本期课程啊,这节我们讲一下三零的 a d p r w 指令啊,那这个指令呢,是标准的 models 通讯指令啊,他支持 f 三幺四八五 adp 这个模块啊,但是呢,他不支持四八五呃 bd 版啊,不支持 bd 版。我们知道我们正常使用片吸的时候呢,很多时候都买了一个四八五 bd 版啊,然后插在片吸这个左 左侧啊,作为扩展用啊,因为这个板啊,相对来说便宜点啊,就说我们用他呢做自由口通讯的,也可以和 这个呃帽子 bug 设备啊进行通讯啊,所以通常我们是这样做的,但是有时候呢,我们也可以啊,加一个什么呢?四八五 adp 啊这个 展板,然后呢,加个呃这个版来做标准的摩托 bus 通讯啊,然后啊,很多同学感兴趣的什么呢,就说我做摩托 bus 的时候,我这片是怎么做重弹啊,怎么做重? 那么做重战呢?首先你的 bd 版呢,是不可以做重战的啊,他不只因为他不支持摩托巴斯通讯啊,他不支持摩托巴斯通讯,所以 四八五 bd 版呢,或者二三二 bd 版,那这些版呢,是不支持我们摩托 boss 主战或者从战功能的啊,主战从战他都不支持,所以我们如果用四八五 bd 版呢,是没办法做主从战的啊,主从战都是不支持的, 那么我如果我想做主从站啊,做主站或者从站都要用这个四八五 a d p 啊,现在最新的型号是杠 mb 啊,杠 mb 这个型号,那么只有杠 mb 表示只 是摩托把腾讯啊。然后呢,他可以做主战,也可以做重战,就说我可以通过这个比呃斯巴我 adp 这个扩展模块呢,然后用标准的摩托 bus 协议啊,访问我这个片儿戏,当然前提是呢,你要首先呢在片儿戏中呢设一下他的地址啊,比如说哪些地址 就有哪些,这个呃数据啊,哪些寄存器啊,这个要设置好了,设置好了,那那么这个 a d p r m 指指令呢?作为标准的摩托把,摩托把子指定啊,他支持呢,很多就是这个标准的摩托把子指令,比如说零三是读啊,零六是写,幺零是 呃批量写等等啊,这是标准的,他肯定是支持的啊。那么呃,如果说我们用这个四 四八五 a d p 啊,他首先因为我这偏西,偏西本身呢,他不支持直接插这个模块啊,中间要不你插个四八五 b 地板,再插这个四八五 a d p 啊,要不是你插个纤维 b d, 总之那前面有个 b d 版,你才能插这个, 呃,四八五这个 a d p 这个模块啊,如果没有了呢,他凭空他是插不上片洗的啊,所以他没办法只能是用两根啊,中间有个过度啊,过度, 这是通道一,比如说我单纯只用四八五 bd 版或者四八五 adp 版的一个用法,如果说我通道一通道二都用啊,那么通道一呢,是四八五 二十二的,四二二的什么各种 bd 版啊,然后呢再加一个这个,呃,这个,这个 a 四八五 a d p 啊, a d p 版啊,这样呢,我们两个通道啊,就,呃都这个可以了啊,可以了啊,或者是呢你可以用两个四八五 a d p 啊,两个四八五 a d p 进行 扩展啊,扩展啊,这样我们就可以通道一,通道二啊,这个注意啊,因为我们参数到时候要设置到通道一和通道二中,你用的哪个通道?你要知道啊,你用的是哪个通道啊?通道 啊,那么连接呢,基本就这么连啊,然后我们就看一下这个指令,首先啊,数一下指令,首先这个指令啊, adp 二 w 呢,它有五个操作数啊,五个操作数, s 一, s 二, s 三, s 四, s 五或者第一,那么什么意思呢?这个 s 啊,是指原操作数啊,原操作数,就说我们作为 呃目标圆啊,作为数据元来进行控制,比如说我这 s 一啊, s 一呢,代表的是代号 s, s 二呢,代表的是 model boss 的命令代码,也就是说,比如说我要发送一个什么呢?读指令,读这个变频器的二幺零二这个地址啊,二幺零二, 然后代号是零一啊,代号零一读指定。那么 s 一这里呢,我就填个零一, s 二呢?填零三是读 s 三呢,是木头 bus 软件的地址啊,大家注意, s 三是二幺零二这里啊,我不用区分什么,自己来自什么,各种 呃关系啊,只要我们填写好就行了,我们不用区分字减和字啊,不像四八五 bd 一样,我们通过 m 八幺六幺啊,要区分字减或者四啊,这里没有关系,我们直接在 s 三这个地址中啊,这个 地址中,我要不我直接加个 h 二幺零二,要不我加个寄存器,比如说第一百零三,然后呢把这个 h 二幺零二啊,这个数存到第一百零三种啊,总之呢,这个地址呢,这些地址啊,既可以直接填数字啊,也可以填计算器地址啊,大家注意,就说我这些地址呢, s 一, s 二, s 三, s 四, s 五啊, 可以用计算器来表示,也可以直接用数字来表示啊,数字表示啊,大家要注意啊,注意,然后 s 四是什么呢? s 四啊,是 地址数啊,就说我们读地址要读几个数啊,那么这里呢,我要填个数字啊,比如说零二,那么就是 h, 零二就是两个地址,我 从二幺零二开始的两个地址,读出来啊,读出来啊,然后最后一个 s 五啊,和第一这俩有啥区别啊,这俩呢是 s 五或第一啊,或第一,代表的是呢,如果说你是 写使用的斜指令啊,斜指令标记为 s 五啊, s 五啊,斜指令啊,大家注意,如果是斜指令呢,标记为 s 五, 把表示呢?把设置的软件的数据写给从这啊,因为写指令啊,你肯定要有一个地址存储你要发送的数据的啊,所以这里呢如果是写指令啊,那么这个呢是存储的,是 写入数据的啊,写入数据的,存储的啊,如果是写指令,写入数据啊,如果是读指令啊,那么代表的是读出来的数据啊,读出来的数据存储到这个第一中啊,他俩是一个公用的啊,公用的就是根据你是读命令还是写命令不同啊,这个地址呢, 就像多音字一样啊,有两个意思啊,一个意思呢是当你用斜指令的时候,那么这个地址是我要写给软件的数据啊,存储的是写给软件件的数据,当你要用读指令的时候呢,那么这个地址呢,是 我读出来的数据啊,存放的地址啊,存放地址啊,所以大家这里啊,搞清楚啊,那么这里呢,我们直接添一个寄存器就可以了,但是呢你要注意呃,参数的设定啊,怎么设定这个参数 保证他既可以读又可以写啊,这就是我们比较关键的,就是 s 五第一这个数数据计算器啊,前几个的环号理解了站号功能码,然后起始地址数量,然后再加上 s 五或者 第一这个数据啊,这样我们就是 a d p r w 指令的一个一个标准的格式啊,标准的格式啊, 那这个这节呢,就是先介绍这么多啊,然后下节呢,我们就通过实际的程序啊,来看一下这个 adp 二 w 指令的一个用法啊,一个用法啊,欢迎大家继续收看啊。

大家好啊,这节呢,我们就讲一下 models 这个 adp 啊, w 指令啊,读指令怎么写啊?读是零三啊,我们知道,因为通常来说呢,我们用这个 prc 做主战的,读的都是,呃,那个保持计算器啊,就是仪表啊,或者变频器啊,或者是 呃呃驱动器啊,或者是其他站的一些信息,那么大部分时间我们用的是零三啊,所以 我们就用零三这个指令讲一下啊,当然如果说读输入寄存器呢是零四啊,这个呃基本类似的啊,我们就讲一下零三指定读指令, 假如说我要读取台达变频器的二幺零二,二幺零二这个其实地址的两个地址啊,那么我们知道二幺零二呢是指定频率,二幺零三呢是运行频率,也就 说我们设定的频率呢,存在二幺零二中,然后他,当他在旋转的时候啊,当驱动器驱动这个电机轴旋转的时候,那么旋转这个频率呢是存在二幺零三中的,我们要访问这两个地址, 那么访问这两个地址,首先我们要知道豹纹的组成啊,那第一个零一呢是账号零三是功能码,代表读指令啊,代表读指令,二幺零二呢是代表起始地址,零零零二呢代表数量啊,意思就是说我要从账号零一啊, 这个,呃这个变频器中啊,读取啊,零三是读的意思,读取二幺零二开始的两个地址的数据啊,两个地址数据,后边这俩是洗二洗小院啊,洗二洗小院啊,然后呢,我要用 这个 a、 d、 p、 r、 w 指令啊,进行啊,发送,然后我们要看一下怎么进行发送啊,怎么进行发送啊?那么这个 a d p r w 这个西二系小燕指令啊,这俩呢,他是自动 计算出来的啊,不需要我们通过程序计算呢,或者西亚西指令计算了啊,西亚西指令计算只针对于 自由孔通讯二 s 指定啊,也不是说二 s 指定啊,就是有时候你想计算他下一码的时候,可以用 crc 消验啊,那么这个 adp r w 指定啊,因为他是标准的摩托霸斯通讯指令啊,所以呢,他自动计算了这个 crc 效应啊, crc 消验码,而且并不 体现在我们的程序中啊,或者是监控中啊,只有我们监控他发送出来数据啊,才是才能看到这个消验码啊,所以呢,这个 我们在程序中没办法看到这个啊啊,然后我们就用 a d p r w 指令来写一下,这个写一下啊,我们看一下, 首先呢,我们其实啊,这个 a t p r w 指令呢,就是个天空啊,那么他有五个操作数,五个操作数分别是第一个操作数对应的就是我们的我们的这个账号啊,对应账号第二个呢就是功能码零三,如果是 读就是零三,如果是写就是 h 零六或者 h 幺零啊,但是后边的不一样啊,我们先说读,读和写有点区别啊, 然后其实地址呢是二幺零二啊,他发的豹纹呢,是发了两个自己二幺零二啊,但是我们写的地址呢,就写一个就行了, h 二幺零二, h 二幺零二就代表起始地址,就是第三 个操作数呢是起始地址,我们用十六进制 a 是二幺零二来表示啊,然后第四个地址是数量啊, h 零二就代表两个,两个数量啊,我们从账号零一的啊,账号零一的 地址变频器中读读,读二幺零二地址,其实的两个地址啊,两个地址读完之后呢,因为我们既然涉及到读了,我们就有个问题,读完了之后,我们的数据是不要返回存 存起来呀,要不然我们怎么知道我读的数据是多少呢?所以我们要存到第一百其实的几个地址啊,两个地址中啊,这个数量啊,一个是关联豹纹的啊,关联豹纹的就是豹纹,你这个零零零二是多少取决于这个数量。 第二个呢,这个数量啊,决定了我返回的数据存储的地址是几个地址啊,那么这里呢是 h 零二,所以他存的是第幺一百开始的两个地址。第一 一百,第一百零一开始的两个地址啊,如果这是 h 零五,那么我们这里呢,就是第一百开始的五个地址啊,第一百开始五个地址,大家要注意啊,这个就是我们的读指令啊,第一百开始的几个地址取决于这个数量啊,几个地址取决于数量啊,然后 后啊,这里是我们直接写了啊,我们这直接把这个值固定了,就是比如说账号就是零一了,功能码就零三,其实地址数量就是固定死的啊,固定死的,这是一种写法啊,我们可以直接填写这个呃,数字的啊,那么还有一种呢,就是我们可以啊,把这些数字 放在一个寄存器中啊,放到寄存器中,然后呢 a d p r w 驱动功能寄存器啊,这样也是可以的啊,比如说我怎么写呢?就是 a d p rw 啊,第十,第十一,第十二、第十三 啊,然后第一百存的还是第一百,但是前面这个账号啊,功能码,其实地址这些呢,我换成计算器地址了啊,计算器地址了,换成了偏西的计算器,但是前提是我们在驱动这个 a d p r w 之前呢,一定要注意把 一个账号啊,公公证码啊,地址啊,数量啊,要存到这个去计算器中啊,存起来, 如果是零啊,如果你驱动 adpr w 时候,这几个计算器地址都是零的时候,他会报错的啊,这样就会报错啊,就说你的,呃, 说明你驱动了一个不可能使用的呃,指令啊,不可能使用指令,所以我们在初始化的时候一定要初始化一个, 呃,起码初始化一个读指令啊,通过 m 八零零二啊, m 八零零二,然后呢?木五,比如说木五 h 零一到第十啊, h 零一到第十, 然后再木屋 h 零三到第十一,木屋 h 一二幺零二到第十二啊,再木屋 h 零二到第十三啊,这样我们再驱动这个 adpr w 指令,他发送的就是这行代码了,这行代码了啊,然后呢返回的数据存储到第一百 开始的这个第,哎,第十三个地址中啊,第十三个地址中,这就是我们的啊,读指令的一个豹纹啊,读指令那么正常,我们 发送完了这个程序之后,我们想让他,你,你怎么我们怎么知道他完成了呢?啊,那这个就涉及到 prc 的内部的特殊 继电器了啊,哎, m 八零二九啊,这是 s 啊,前面没有 s 啊,这个 s 是我从无忧的说明书上复制过来的啊,无忧的啊,没有没有 s 啊,就是 m m 八零二九是命令执行结束啊,然后 m 八四零幺和 m 八四二幺是通讯中分别对应通道一、通道二的,因为前前节课呢,我们讲的他有两个通道, 那么这两个通道都可以做标准的摩托霸通讯啊,摩托霸通讯啊,然后出错啊,出错是八四零二,等等啊,串形通讯出错,从事发生超时等等啊,总之呢,就说我们有特殊的这个计算器啊, 电器啊,来存储这些指令的,所以呢,我们呃驱动他的时候,比如说 m 一百啊, m 一百,我驱动这个 a d p r w 了啊, a d p r w, 然后呢,等他 m 八零幺二的时候,八零二九啊, m 八零二九就去完成了,完成之后我再把第一百开始的数给他移出来啊,移出来,移出来之后呢,然后我给他进行数据处理,得到我们 我们的变频器二幺零二和二幺零三这两个地址啊,两个地址啊,用八零二九这个信号啊,而且在程序八零二九没有接通之前,你前面的触点是不可以断开的啊,大家注意,就是 说触点必须一直接通的啊,这个 a d p r w 指令处不是用上升源来触发啊,大家注意不是用上升源来触发啊,这个上升源是错误的,一直接通啊,接通完之后,当他呃 呃命令执行结束之后,然后 m 八零二九接通,然后我再做数据处理,然后这时候你就可以把 m 一百这个触点给他断开了啊,必须等他执行完毕才可以断开啊,执行中间如果你断开了,那你就呃完成不了了,所以这个指令不是用上升而触发的啊,大家注意啊,大家注意啊,那这个呢?就是我们的 ad drw 指令啊,标准的读指令的一个写法啊,读指令写法啊啊,基本就这些内容啊,谢谢大家观看。

大家好啊,欢迎收看本期课程,上节我们讲了一个创口条助手啊,发送这个阿斯克马模式啊,实际上他发送的也是二金制的数啊,那么二金制 既然能表示成阿策马,也可以表示十六斤之数啊,十六斤之数,所以呢,我们的思路就是什么呢?实际啊,我们就是把这个 呃用十六斤之数表示阿斯克马,然后呢用串口调试指令给他发出去啊,大家注意啊,就说实际我们发的还是十六斤之的数啊,或者说表示的是十六斤之数,但是他的食指呢还是二斤之的啊,就是不管二十码十六斤之,大家一定要注意, 不管是阿色马啊,还是十六金致他,只是表现格式不一样而已啊。十,本质呢还是二金 金质的数啊?在计算机存储的时候和发送的过程中,他本质上还是二金质的数啊,二金质的啊, 这样呢,我们就呃可以知道啊,我们想要发这个呃,这个二四个码时候怎么发啊?就是把它转换成十六金枝啊,就是如比如分号,我转换成 h 三 a 啊, h 三 a 啊, 零呢,我转换成什么呢?零转换成三零啊,然后一呢转换成三一啊,都是十六进制的啊,都是十六进制的 h 然后零呢?还是 h 三零啊? h 三零, 然后呃三呢? h 三三啊, h 三三啊, h 三三啊,这样呢,我们转换成十六斤制之后发出去就可以了啊,那 在程序中呢,我们就和阿 t u 发送模式啊,其实是一样的,只是说我们发送的字符不一样而已啊,那么阿四个码发送多少字符呢?我们看一下啊,一个,两个,三个、四个、五个、六个、七个、八个、九个、十个、十一、十二、十三、十四、十五、十六、 十七、十八、十九个十九个字典啊,要发送,这样呢,我们一次读出二幺零二的两个地址啊,十九个,所以呢,我们在程序中怎么设置呢?第一个呢,设置成啊,八位 自检的模式啊。第二个呢,把这个呃三 a 啊,三零三幺等等要发送的数存储到一个数据计算器中啊,数据计算器中,比如说三 a 存储到第一百种,三零存储到第一百零一种啊,一百 零二一四,然后呢用 rs 指令呢指向这个地址啊,之后就可以发送了啊,所以呢,阿斯克马模式啊,是很简单的啊,只是说我们要会用啊,并不是说阿斯克马啊,就是是让你 要发一堆制服串出去啊,那样呃,有点麻烦啊,我们转换成十六金制之后就很清晰明了了,很清晰明了,首先呢 out m 八幺六幺啊,这是一次节目是传送,第二个呢,我们叫 m 八零零二啊, m 八零零二木的 h 三 a 到第一百啊,第一百就是我们依次呢把我们想要发送的数呢传送过去。然后还有一点呢,就是有时候我们有些中间的纸可能是零,然后有的同学就不传了啊,其实我还是建议传的,即使说零呢,那么 你传个 h 零过去就可以了,这样我们我们的数据啊,连续性看起来比较呃整洁啊,如果中间你忽略了,那别人看你的程序或者回头你看你不知道中间为啥忽略或者怎么样啊,所以呢,我们建议呢,即使是零,那么你也要呃 啊,给他零幺啊,发过去,第幺零二啊,第幺零二,然后呢目的每次 零幺零三 h 零 d 幺零三,继续木的 h 三三 d 幺零四,木的 h 零幺零三,全是零的啊,零零 d 幺零五 d 幺零五,木的 h 零零 d 幺零六,木的 h 零 d 幺零七,木的 h 零 d 幺零八啊啊,这个,这个是二幺零二啊, h 二二幺, 这样我们改起来也方便啊,就说所以我建议是零的时候呢,你也要把这个数据啊传送进去啊,然后 木的 h 二幺零二零零零零啊, d 幺零九啊, d 幺零九啊,然后木的 h 零 d 幺幺零啊,还是零木的 h 零 d 幺幺幺木的 h 零零零零二 h 二到 d 幺幺二啊,到这步呢,我们的数据就完了,之后呢是 l r c 效应,目的多少呢?我看一下,四四 啊,四四三七 h 四四 t 幺幺三,木的 h 三七 t 幺幺四,这俩是阿 l 啊,谢小燕。然后就是回车和换行了,回车换行呢,这俩是固定的,就是零 d 零 a 啊,零 d 零 a h 零 t 零 a 木的 h 零 d, 这是回车 d 幺幺五,木的 h 零 a d 幺幺六啊,十七个字符看是不是啊?首先一个分号零幺零三二幺零二零零 零二,然后 l r c 两个,一个 d, 一个七 啊,这个 l r c 肖艳呢,每个每串字符是根据前面计算出来的,这个我们后面再讲,怎么得出来的啊?不是一样的啊,大家注意,不是每个都是第一期的,但是最后的回车和换行都是一样的啊,所以呢,我们发送的实际就是呃, 这些数据啊,那么我们把这些数据传送到第一百开始的十七个数据中,我们只要用 rs 指令给他指向就行了啊,第一百开始的 k 十七, 然后呢返回数据存到第二百啊, k 二十啊,因为返回数据啊,呃,我们不知道多少可以,这个空间大一点啊,大一点没关系,别小了啊。然后呢,我们直接 m 八幺二二就可以发送了啊,这就是发送我们的这个 阿斯克马的格式啊,大家看,实际上他还是以十六金制发送的,而且发送的数据比我们阿提油模式呢要多啊。所以呢,阿斯克马模式啊,他的效率是比阿提油模式是慢的,我不推荐大家在实际工作中使用这种模式啊。但是有的同学呢,因为接触到通讯 的时候他不懂啊,拿过来一种就想用,然后就问我,阿斯个马这种模式怎么发怎么发,然后写一段程序之后发现发不出去啊,那是因为你这个编码格式啊,没搞懂啊,就是为什么他啊用啊 四个码啊,为什么用这个阿 t u r t u 的效率是他的一倍啊,基本上你看阿 t u 我们只传送八个字典就够了,那么用阿四个码呢,我们需要传送十七个字节,那么整体他传送了一倍多一倍的字节,所以他的效率呢,也也降低了一倍啊,降低一倍, 我们在实际使用中呢,尽量用阿 t u 模式啊,那么这样呢,我们就可以把这个呃 rs 指令指向完了,我们就 m 零啊, m 零赛特 m 八幺二二就可以了啊,赛特 m 八幺二二这里加个上乘员, 八幺二二呢,是自动复位的,我们不需要给他复位啊,然后 m 八幺二三之后啊八幺二三,我们数据处理,如果不数据处理直接写啊,如果有数据处理呢我们再进行这个数据处理啊,就是转换成我们想要的数据啊,这样呢,我们就把这个整个这个呃 程序的小框架写完了啊,不能说程序写完,只能说我们把这个模板写完了,那么这里呢阿斯甘玛是存的是大家居 要懂啊,这里程序中并没有写啊,说我指定一个模式叫阿斯克马模式,或者指定一个模式叫这个十六进制模式啊,只是说我们对方的变频器指定的是阿斯克马模式,所以呢我们只要传送阿斯克马这些字符过去就可以了。 在 prc 中呢是不做指定的啊,说我们有个位啊,我们已指定了这个位,他就是阿斯格玛模式,指定了那个位就是 呃十六进制模式啊,在程序中是不能指定不了的,这个是在对方的仪表中指定啊,对方仪表采用的是啊四个码还是采用的是阿 tu 模式呢,在是要设定参数的, 就像变频器一样啊,然后程序中还是按十六金制读取呃发送啊,只是说我们发送的数据和十六金制的数据是不一样的啊,他有区别的啊,实际我们发的还是十六金制数 rs 指令呢,也是一样用啊,这样呢我们就程序就可以 呃呃这么写了啊,然后具体的轮旬呢,数据处理啊什么的后面我们再讲啊,先把程序整体告诉大家怎么用这个东西啊,不难,只是说 我们要知道我们要发什么就可以了啊,然后插表啊,插表得到我们要发的哪个数?不同的仪表呢?他可能发送的数据都不一样,但是基本的要求呢?是 起始符呢?是分号,结束符呢?是回车加换行啊,中间的数据啊,地址啊什么的,基本上差不多啊。差不多少 啊,有的特殊的可能。嗯,再再发一些特殊字符,比如说我发个字母过去,那么对方接到字母了就知道我要干什么了。啊?干什么了啊?这样我们就可以完成我们的阿斯格玛的发送啊。那今天课就讲这么多啊,谢谢大家。

霸子通讯中四万零一是什么意思?那么咱们要搞搞清楚四万零一就必须得知道蒙霸子通讯的功能吗?我们常用的有零一、零二、零三、零四、零五、零六、零 f、 幺零这么八种, 前四种是读,后四种是写零一是什么呢?是读线圈,比如说读 plc, 如果 plc 作为蒙巴城站的话,我们要读取 q 点,就零一共同码 零二什么呢?读离散输入,比如说我们要读 plc 的 i 零点零零点一的状态,我们就用零二功能吧。零三是读宝石计算器,比如说 plc 里面的 v w、 vd。 零四是读输入计算器,比如说 prc 的模拟量输入通道 aw 十六、 aw 十八。 零五是写单个线圈 a 更改 q 状态。零 f 是写多个线圈,更改多个,一次性更改多个 q 的状态。 零零零六呢,是写单个保值计算器。一零是写多个保值计算器。那么我刚才所说到的零四、零四万零一什么呢?是在功能码为零三的时候, 所对应的计算器地址就是功能码。零三是我确定了我要读保持计算器,那么我要读哪些保持计算器呢?比如说一块电表,在功能码零三下,可能有三相电压、三相电流,实施功率和电镀, 那么要读取电压、电压,就得有一个地址。有些仪表厂家给你的地址呢,是零零零零 h 这种十六进制格式的,那么有些仪表厂家呢,给你的是四万零一这种格式, 那两种格式呢,是可以互相转化的,是一样的功能。马为三的时候的零零零 h 就等于四万零一。 那假如说一个仪表厂家,他给你的电压 a 的计算机地址呢是零零零二 h, 我们呢在飘 c 编程的时候呢,我们肯定不能写零零零二 h, 我们需要呢,把零零零二 h 转换成十进制就是二,然后呢再加上四万零一。为什么要加四万零一呢? 就是因为我们十六禁止地址是从零零零零起示的,而十禁止地址是从四万零一起示的,所以我们要加四万零一。 这就是有些兄弟呢,搞不清楚什么时候加四万零一,什么时候不加。当计算器地址给的你是十六进制的时候,你要把它转换成十进制,并且加四万零一,如果直接给你 就是四万多少多少,那就不需要加了啊,这是功能码为三的时候,那功能码为四的时候呢?十六金值七十地址还是零零零零 h? 十金值地址呢是三万零一, 正好公马四的时候是三,公马三的时候是四万零一,那公马四的时候三万零一。比如说我给在公马四下面,我给了你个计算机地址是零零零一 h, 那么你要把这个零零零一 hh 代表十六进制啊,把它转成十进制一,然后再加上三万零一,那就是三万零二。也就是说功能码为四的时候,零零零一 h 就等同于 使劲制地址三万零二,我们在飘 c 填写的时候就要填三万零二了,理解了吗?如果没有理解,下方评论区留言。