EC机器人ModbusTCP通讯
1. 简介
ModBus是一种【shì yī zhǒng】⛵串行通信协议【xié yì】🐒,一种标准的工业通信🐤协议【xié yì】🐒,同时是【tóng shí shì】目前工【mù qián gōng】业电子【yè diàn zǐ】👨设备之间常用的连接🌀方式。
漫蛙机器人分别支持【bié zhī chí】🔴ModBus主【zhǔ】、从站功【cóng zhàn gōng】🏨能,从通讯⌛的形式🔆上分为MoBus TCP和ModBus RTU,其中ModBus从站功【cóng zhàn gōng】🏨能通过【néng tōng guò】配置即【pèi zhì jí】可🤽。
通过ModBus主站功🍡能【néng】🤤,机器人【jī qì rén】可以向外部设【wài bù shè】备读取⛽写入数据【shù jù】😎,已达到数据【shù jù】😎交互和逻辑控制【zhì】🧙的用途。
漫蛙机器【qì】人的ModBus主站同时也支🧒持【chí】ModBus RTU 和👙 ModBus TCP,其中ModBus TCP功能需要连接以太网🔳接口【jiē kǒu】🌊,而【ér】🗻ModBus RTU的硬件接口【jiē kǒu】🌊形式分【xíng shì fèn】为控制【wéi kòng zhì】器【qì】485口【kǒu】🌊,工具末🎱端485口【kǒu】🌊。
ModBus主站功能通过【néng tōng guò】lua脚本实🤴现⏱,可以参考EC-lua手册进【shǒu cè jìn】🤹行使用【háng shǐ yòng】💣。其中【qí zhōng】MODBUS MASTER为已经【wéi yǐ jīng】封装的【fēng zhuāng de】接口,用户只【yòng hù zhī】🌻需传入相应参数即可;如有其【rú yǒu qí】他特殊🤞协议要求,可以使用💣TCP/UDP通讯【tōng xùn】⏫、485通讯【tōng xùn】⏫、TCI通讯【tōng xùn】⏫(工具末🎅端485)和232通讯【tōng xùn】⏫等。
2. 操作流程
2-1. 配置机【pèi zhì jī】器人🌐MODBUS_TCP
2-1-1. 接入控制柜网口,如下图。

2-1-2. 配置机器人IP地址:
登录管理员模【lǐ yuán mó】🍚式:密码🆖333333--------点击系【diǎn jī xì】统-----系统配置🔬-------网络配【wǎng luò pèi】🍄置🔬-----设置【shè zhì】🔬IP--点设置【shè zhì】🔬

2-1-3. 配置电脑IP

2-1-4. 启用示🏕教器中【jiāo qì zhōng】modbusTCP设置

2-2. modbus_TCP从站使【cóng zhàn shǐ】🦄用方法
2-2-1. 作为从⬅站并通🔗过以太【guò yǐ tài】网连接各种 Modbus TCP 主站设备进行通信【tōng xìn】,协议的【xié yì de】帧🆗
规格如下图所示:

modbus功能码:

2-2-2. 机器人与通讯助手通讯
配置通讯助手


2-2-3. 读写线圈操作:
机器人M400变量的数据



2-2-4. 读写机器人寄存器操作:
1).机器人作为从⤴站可通😪过脚本🆙直接读取写入【qǔ xiě rù】👓寄存器🍩数值,可将数值转化【zhí zhuǎn huà】为全局变量【biàn liàng】,在示教【zài shì jiāo】器上进【qì shàng jìn】行显示或者调【huò zhě diào】🚤用
2).脚本指令分为两种,第🛣1种是对【zhǒng shì duì】📵应获取【yīng huò qǔ】接口【jiē kǒu】🕍0-191,设置接口【jiē kǒu】🕍66-191,此接口【cǐ jiē kǒu】🕍可控制🎂虚拟输🎒入输出M变量,如下图所示【suǒ shì】


3).第2种读取额外接口【kǒu】🚰192-575,设置接【shè zhì jiē】🔇口【kǒu】🚰300-477,具体寄存器地【cún qì dì】址可参【zhǐ kě cān】考通讯🍰手册


4).第【dì】😣1种指令【zhǒng zhǐ lìng】➖和第【dì】😣2种指令【zhǒng zhǐ lìng】➖,建议用【jiàn yì yòng】户使用【hù shǐ yòng】第【dì】😣2种指令【zhǒng zhǐ lìng】➖更方便【gèng fāng biàn】❔快捷,第【dì】😣1种指令【zhǒng zhǐ lìng】➖可直接【kě zhí jiē】控制【kòng zhì】❄M变量,漫蛙modbus寄存器分为8位和🙆16位,需要在🎗兼容模式下更改【gǎi】🔵,否则容【fǒu zé róng】易将机器人寄存器地🤽址和网🚲络助手地址混【dì zhǐ hún】淆【xiáo】。第【dì】😣2种指令【zhǒng zhǐ lìng】➖本身设🦉置就是【zhì jiù shì】16位寄存器,无需考虑兼容模式下的更改【gǎi】🔵情况【qíng kuàng】🤯
5).下面以【xià miàn yǐ】第🏦2种寄存【zhǒng jì cún】👊器为示🏟例脚本进行数据的读写【xiě】
机器人【jī qì rén】读取寄【dú qǔ jì】🐓存器300-304寄存器🔏数值同【shù zhí tóng】🎄时存入🔷到【dào】I0-I4寄存器🔏中,脚本如下

通过助【tōng guò zhù】😿手向寄存器【cún qì】300-304赋值,可通过👕示教器查看【chá kàn】I0-I4数值,确实数⛔值是否【zhí shì fǒu】正确,如下图所示😥


6).机器人通过全🔌局变量【jú biàn liàng】📒I10-I14,将数据写入寄存器【cún qì】🏘320-324,脚本如【jiǎo běn rú】下所示

通过机👒器人向I10-I14全局变【quán jú biàn】量赋值,可将数值存入【zhí cún rù】到320-324寄存器🥖中【zhōng】,网络助🐪手可直【shǒu kě zhí】💙接在此✈寄存器🥖直接读取【qǔ】,如下图【rú xià tú】所示


2-3. modbus_TCP主站使用方法【yòng fāng fǎ】💷
2-3-1.指令介绍
ModBus Master接口常【jiē kǒu cháng】用获取🔪modbus、连接【lián jiē】modbus、关闭🧟modbus、设置slave、读取单个🕟线圈【xiàn quān】、写入单【xiě rù dān】个🕟/多个【duō gè】🕟线圈【xiàn quān】、读取单个🕟寄存器【jì cún qì】、写入单【xiě rù dān】个🕟寄存器【jì cún qì】等指🔚令【lìng】🌔,本文主😣要讲解【yào jiǎng jiě】以上指令【lìng】🌔,具体指【jù tǐ zhǐ】令【lìng】🌔详解如下图🤞所示,其他指令也可【lìng yě kě】🖨参考【cān kǎo】🎾EC-lua手册ModBus Master章节



以下为读取写入相关指令
modbus_read_bits 读取线😉圈指令【quān zhǐ lìng】,功能码01
modbus_write_bit 写单个【xiě dān gè】线圈指令📭,功能码【gōng néng mǎ】⤵05
modbus_write_bits 写多个线圈指【xiàn quān zhǐ】令🏻,功能码【gōng néng mǎ】🐏15
modbus_read_register 读单个寄存器🧥数值【shù zhí】。功能码【gōng néng mǎ】😮03
modbus_write_register 写单个⛔寄存区【jì cún qū】数值⏰,功能码【gōng néng mǎ】06
2-3-2.操作流程
本文以机器人🖊作为主站与网【zhàn yǔ wǎng】络助手✔进行【jìn háng】ModBus_TCP通讯为示例,进行详【jìn háng xiáng】🐭细操作【xì cāo zuò】👜讲解
2-3-2-1.机器人端配置
将机器人脚本配置好,如下图所示

2-3-2-2.助手配置连接

2-3-2-3.连接成功提示

2-3-3-4.读取线圈

读取【dú qǔ】🕍600开始的🎴5个线圈,分别将线圈数【xiàn quān shù】值存入🏹虚拟输【xū nǐ shū】入🏹M920-M924中

助手中⛔将线圈【jiāng xiàn quān】600、602、604分别置为【wéi】🐝1

示教器【shì jiāo qì】中查看对应的🙅M920、M922、M924分别状态为1,读取线圈功能及指令【jí zhǐ lìng】🗃正常【zhèng cháng】🥗
2-3-2-5.写入线圈
写入线圈指令及定义如下脚本所示

写入单个和多【gè hé duō】🉑个线圈🌖指令🎈,定义将M530数值写入到线圈530,M531-M534数值分【shù zhí fèn】别写入【bié xiě rù】线圈531-534中【zhōng】🦄

机器人【jī qì rén】端将虚拟输出【nǐ shū chū】🐝M530、M531、M533、M534置为🥝1

助手中可以查【kě yǐ chá】看到线【kàn dào xiàn】🚾圈530、531、533、534状态都为1,写入线圈功能🌆及指令【jí zhǐ lìng】🚎正常
2-3-2-6.读取寄存器
读取寄存器指令及定义如下脚本所示

读取400开始的🦎5个寄存🦌器【qì】,分别将【fèn bié jiāng】寄存器【qì】🙁数值存【shù zhí cún】入全局变量I000-I004中

助手端【zhù shǒu duān】👿将400寄存器【jì cún qì】设置为💟123,401寄存器【jì cún qì】设置为💟23,402寄存器【jì cún qì】设置为💟-345,403寄存器【jì cún qì】设置为💟-876,404寄存器【jì cún qì】设置为💟2345

机器🕌人端可在全局【zài quán jú】变量中查🏜看I000-I004与寄存【yǔ jì cún】器🕌400-404数值一【shù zhí yī】致【zhì】,读取寄【dú qǔ jì】🛠存器🕌功能及指令正常👚
2-3-2-7.写入寄存器
写入寄存器指令及定义如下脚本所示

机器人【jī qì rén】🚬端I010-I014的5个全局变量【biàn liàng】,分别将数值写🕵入到寄👫存器500-504中【zhōng】

机器人💳端分别📂将【jiāng】I010-I014全局变【quán jú biàn】量设置为:236,-659,589,489,-3528

助手端🎟可查看【kě chá kàn】☔500-504的寄存器数值,同时与全局变【quán jú biàn】🧖量I010-I014数值一【shù zhí yī】致,写入寄存器功能及指令正常【lìng zhèng cháng】💄
3. 常见问题解答
1. M0-M527,M1472-M1535为系统【wéi xì tǒng】使用,只能读取状态【qǔ zhuàng tài】👌,通过示教器可输入的【shū rù de】🛳 M 变量范🛤围为 528-799。
2. M 变量的【biàn liàng de】线圈地【xiàn quān dì】址🚇即为变【jí wéi biàn】量的序号地👢址🚇。
3. 兼容模式中勾选🗑ModBus:M 变量的🙍寄存器【jì cún qì】🔷地址【dì zhǐ】🛹从M0 开始🐺,每连【měi lián】续🚑 的16个【gè】🛢 M 变量形【biàn liàng xíng】成一个【gè】🛢寄存器【jì cún qì】🔷地址【dì zhǐ】🛹,例如【lì rú】✡M0-M15,寄存器【jì cún qì】🔷地址为【dì zhǐ wéi】👀 0x0000;M16-M31,寄存器【jì cún qì】🔷地址为【dì zhǐ wéi】👀0x0001,以此类推【tuī】; 兼容模式中不🛣勾选🗑ModBus:M 变量的🙍寄存器【jì cún qì】🔷地址【dì zhǐ】🛹从M0 开始🐺,每连【měi lián】 续的 8个【gè】🛢 M 变量形【biàn liàng xíng】成一个【gè】🛢寄存器【jì cún qì】🔷地址【dì zhǐ】🛹,例如【lì rú】✡M0-M7,寄存器【jì cún qì】🔷地址为【dì zhǐ wéi】👀0x0000;M8-M15,寄存器【jì cún qì】🔷地址为【dì zhǐ wéi】👀 0x0001,以此类推【tuī】。
4. ModBus 协议中一个寄【yī gè jì】存器为【cún qì wéi】🍆 16 位变量🎛,因此对🗣 M 变量的😿一个寄【yī gè jì】存器地址进行操【jìn háng cāo】作【zuò】,实际操作【zuò】的是🤑连续的 16 个【gè】 M 变量。
5.在数据🏨多为小【duō wéi xiǎo】数时,为方便数据的处理【chù lǐ】,可以将数据进🕉行整体【háng zhěng tǐ】扩大一【kuò dà yī】😓定倍数⛸后进行传输