CS机器人ModBusTCP通讯
1. 简介
Modbus是一种【shì yī zhǒng】串行通讯协议,是Modicon公司于【gōng sī yú】🍝1979年为使用可编程逻辑控制器通信而✉发表【fā biǎo】🔌。Modbus已经成🏝为工业领域通【lǐng yù tōng】信协议【xìn xié yì】的业界【de yè jiè】标准【biāo zhǔn】🌖,并且现在是工👱业电子设备之间常用🎚的连接【de lián jiē】🧓方式。
CS系列机【xì liè jī】器人支持【chí】modbus tcp,机器人既可以🐖做主站🙄也可以做从站,在某些💍情况下✅我们可🥈以通过modbus poll即第三【jí dì sān】方通讯【fāng tōng xùn】助手来【zhù shǒu lái】测试该【cè shì gāi】💌通讯。
CS 系列支【xì liè zhī】持的,可使用🈴 Modbus 协议读写的数😸据类型【jù lèi xíng】👉为布尔型与无【xíng yǔ wú】符号短【fú hào duǎn】整型🔕(16 位)两种,
每种类【měi zhǒng lèi】型分别【xíng fèn bié】包含一组输入和一组〰输出寄🛳存器☝,因此【yīn cǐ】🍏 Modbus 共有 4 组寄存🤱器可被【qì kě bèi】主站访【zhǔ zhàn fǎng】问。其中,
输入型【shū rù xíng】💚寄存器【jì cún qì】🆎只允许读操作🍏,输出型寄存器【jì cún qì】🆎可读可【kě dú kě】写。有关寄存器【jì cún qì】🆎协议接口的详【kǒu de xiáng】细说明【xì shuō míng】,请登陆官网😫:
www.elibot.com,进入【jìn rù】“服务与【fú wù yǔ】🍰支持 > 技术资【jì shù zī】料”板块⛏,选择“CS_用户手🧝册【cè】_V2.11.0_附件🏻”进行
查询
1. 布尔型【bù ěr xíng】🎄寄存器【jì cún qì】(8 位):主要用于操作数字📇 IO,CS 系列目【xì liè mù】前可访🧙问的输入【rù】🔗/输出数字📇 IO 寄存器【jì cún qì】
的有效【de yǒu xiào】🍼地址范围为 0-63,虽然其【suī rán qí】值的类【zhí de lèi】🚧型为📤 bool,但每个 IO 仍会占【réng huì zhàn】用一个字节的空间🤜,所以数字 IO
共占 2*64 字节。
2. 无符号【wú fú hào】😨短整型【duǎn zhěng xíng】🖍(16 位):用于保存和修改机器【gǎi jī qì】人的版🥖本【běn】🏓,TCP,系统状态等信息;也用于映射
数字 IO。CS 系列目前可访📼问的输💕入【rù】/输出寄【shū chū jì】存器的有效地【yǒu xiào dì】🥈址范围为 0-415。
工具 Modbus 主站设【zhǔ zhàn shè】备可通👔过以下功能码读【dú】/写从站【xiě cóng zhàn】🌖寄存器🦑:
1. 0x01: 读一个👳或者多🏘个输出【gè shū chū】数字信【shù zì xìn】号 (read output bits)
2. 0x02: 读一个【dú yī gè】🧘或者多个输入数字信【shù zì xìn】🏙号 (read input bits)
3. 0x03: 读一个【dú yī gè】或者多🖖个输出寄存器【jì cún qì】💙 (read output registers)
4. 0x04: 读一个【dú yī gè】或者多【huò zhě duō】😮个输入⭕寄存器 (read input registers)
5. 0x05: 写单个输出数字信号【zì xìn hào】🆒 (write output bit)
6. 0x06: 写单个输出寄🖋存器【cún qì】 (write output register)
7. 0x0F: 连续写多个输🧞出数字【chū shù zì】🚤信号【xìn hào】 (write multiple output bits)
8. 0x10: 连续写👐多个输【duō gè shū】出寄存👣器【qì】 (write multiple output registers)
2. 操作流程
2.1机器人做从站
机器人做从站,modbus通讯使用机器【yòng jī qì】🤵人控制【rén kòng zhì】柜【guì】🐛FB1网口【wǎng kǒu】或FB2网口【wǎng kǒu】,连接控制柜【guì】和🌑电脑📡,
机器人Ip设置:

电脑设【diàn nǎo shè】置为机🤱器人的同一网🛄段后可以【yǐ】ping一下查看网络💒是否连接正常【jiē zhèng cháng】
打开第三方网【sān fāng wǎng】络调试助手【zhù shǒu】modbus poll,--connection--connect,选择✒modbus tcp/ip,ip地址栏输入机器人的ip,端口默【duān kǒu mò】🔀认💐502,最后点【zuì hòu diǎn】击🏣ok

只要对【zhī yào duì】话框不显示noconnection 就表明📙调试软【diào shì ruǎn】件已连【jiàn yǐ lián】🏻上cs机器人✂
接下来【jiē xià lái】我们可📳以用【yǐ yòng】🍣modbus poll来:
写入标准数字输出
读取标准数字输出
读取标准数字输入
读取寄存器
写入寄存器
2.1.1读取标准数字输入
功能码选择 02 Read Discrete inputs ,地址【dì zhǐ】🕦格式十进制【jìn zhì】,起始地【qǐ shǐ dì】🕋址🕦 0,读写数🐝量🥫 24(机器人【jī qì rén】输入地址【dì zhǐ】🕦 0-23,共 24 个【gè】🚼)


上图显示输入4为1与下图【yǔ xià tú】🖌示教器显示匹👂配,可见读【kě jiàn dú】🦓取成功【qǔ chéng gōng】
2.1.2读取标准数字输出
功能码👭选择【zé】 02 Read Discrete Inputs ,地址【zhǐ】格⛩式十进制【zhì】🍎,起始地🥘址【zhǐ】 32,(机器人输出地【shū chū dì】⛲址【zhǐ】 32-59,共 28 个),读写数【dú xiě shù】量可选择【zé】 28 即全部🤖读取【dú qǔ】

由图可💣见32与41为【wéi】🛋1,与机器人【rén】modbus slave界面显【jiè miàn xiǎn】🐁示标准🏆数字输【shù zì shū】☝出0和标准【hé biāo zhǔn】数字输【shù zì shū】☝出显示的数据一样,可见读取成功📛

2.1.3写入标准数字输出
setup--read/write definition中可以🐹先择📫 01 read coils(0x)读取线圈方便【quān fāng biàn】在【zài】modbus poll上观察
点击💩functions--选择功【xuǎn zé gōng】能码【néng mǎ】👍15:write multiple coils(写多个线圈🕶),勾选所需的coil,点击💩send,回复respons ok 即可输【jí kě shū】出信号【chū xìn hào】🥒


2.1.4读取寄存器
setup--read/write definition中可以先择 功能码04read input registers,十进制【shí jìn zhì】📼,起始地址【zhǐ】🧜 97,
读写数量 10(根据实际需求修改)


2.1.5写入寄存器
可以在setup--read/write definition 选择04 read input register,地址address256,数量【shù liàng】10,先读这🍩些可读【xiē kě dú】🎢可写的寄存器【jì cún qì】方便我🚟们观察【men guān chá】🐑变化

第一种【dì yī zhǒng】方法【fāng fǎ】🦑:直接双🍢击【jī】poll表格里【biǎo gé lǐ】的地址,修改📓value值来写入(对应功【duì yīng gōng】🕟能码06 写单个输出寄😠存器)


第二种【dì èr zhǒng】方法:点击functions --16:write multiple registers,双击图🔖中显示【zhōng xiǎn shì】列表来【liè biǎo lái】🚋修改寄🏪存器值


2.2机器人做主站
机器人【jī qì rén】做主站➡,modbus通讯使【tōng xùn shǐ】🌗用机器【yòng jī qì】人控制柜🐄FB2网口,连接控制柜🐄和电脑
查看电😔脑ip,这边为【zhè biān wéi】192.168.1.205

打开 modbus slave 调试助手【shǒu】♿,点击【diǎn jī】🍾 connection--connect,如下图😕设置后【shè zhì hòu】点击【diǎn jī】🍾ok

点击机器人示教器配⛺置--通讯--modbus--添加【tiān jiā】🙇modbus设备【shè bèi】,输入【shū rù】🥌ip(此处ip为主站ip)
2.2.1读线圈
打开modbus slave调试助【diào shì zhù】手【shǒu】,右击名🈷为⛲“mbalave1”窗口🥪,点击【diǎn jī】slave definition,

输入下😱图的id,功能码【gōng néng mǎ】,地址,数量,点击【diǎn jī】🌓ok
点击示【diǎn jī shì】🤫教器页🐲面,输入【rù】类型【xíng】🦈-数字输❣入【rù】 地址为0从站地【cóng zhàn dì】址可为1,频率10(可选),当图标【dāng tú biāo】变为绿色即♎ok

打开🚥modbus slave调试助手,双击对应地址【yīng dì zhǐ】,修改值🍵,即可发【jí kě fā】现机器【xiàn jī qì】人示教器界面【qì jiè miàn】🥉的值也👴改变

2.2.2写线圈
打开【dǎ kāi】modbus slave,可点击File--new,会出来一根新的监视【de jiān shì】🛰表🦋,
右击其【yòu jī qí】选择🏗Slave Definition,

输入id 功能码 地址和【dì zhǐ hé】数量🔻,注意地🦋址不要【zhǐ bú yào】🎛与上一步设置重复【chóng fù】
机器人示教器【shì jiāo qì】上点击【shàng diǎn jī】🤫添加信💮号【hào】,如下图🛤设置:

在该界【zài gāi jiè】面点击值🙊,可在【kě zài】modbus slave,查看到🎄

2.2.3读寄存器
打开【dǎ kāi】modbus slave,可点击🍀File--new,会出来🅿一个新的监视表【biǎo】
右击其选择【xuǎn zé】🏮Slave Definition,

输入❕id 1,功能码【gōng néng mǎ】04,地址20,数量【shù liàng】5(自定义🔊),点击ok

在机器🔧人示教💖器界面【qì jiè miàn】点击添加信号,输入下列数据【liè shù jù】,圆形图【yuán xíng tú】🕗标变绿色表明连接成功【gōng】🍹
可在modbus slave界面,点击对【diǎn jī duì】应地址♏输入数值【zhí】🛩,

在示教器界面可查看对应数值
2.2.4写寄存器
打开【dǎ kāi】modbus slave,可点击💡File--new,会出来♌一个新【yī gè xīn】的监视表

右击其【yòu jī qí】选择🚿Slave Definition,
选择😡id 1,function03,地址30,数量【shù liàng】5(自定义),点击【diǎn jī】⚫ok

在示教【zài shì jiāo】器界面【qì jiè miàn】点击添【diǎn jī tiān】🌫加信号👛--输入下图对应信息,圆形图标变绿【biāo biàn lǜ】色表明连接成🔱功🚶

点击值⚡,输入数据,即可在【jí kě zài】😘modbus slave上查看到写入【dào xiě rù】🛁的值【de zhí】

3. 程序中操作
3.1机器人做从站
为方便【wéi fāng biàn】在modbus信号在【xìn hào zài】💔程序中方便配置【pèi zhì】和使用【yòng】🚲,可以在配置【pèi zhì】--通讯🕥--modbus连接机【lián jiē jī】器人自🎻己作为🍬主站
如上图所示【suǒ shì】🥞,下述以【xià shù yǐ】数字输入,地址【dì zhǐ】🕌32;数字输出,地址【dì zhǐ】🕌33;寄存输🐍入,地址【dì zhǐ】🕌266;寄存器🏖输出,地址【dì zhǐ】🕌277为例
3.1.1任务中读取(等待)线圈值

当线圈m_a为高是弹出弹窗信息1

3.1.2任务中设置(给出)线圈值

机器人中如上【zhōng rú shàng】🍨图设置🐆,点击运【diǎn jī yùn】行,调试助🎰手中显示为1,即成功【jí chéng gōng】
3.1.3任务中读取(等待)寄存器值

运行机😅器人程序🚧,在poll中地址【zhōng dì zhǐ】66输入【shū rù】44,机器人弹窗提🤨示1,即【jí】ok

3.1.4任务中设置(给出)寄存器值

运行机【yùn háng jī】🚘器人程序🐆,poll中地址【zhōng dì zhǐ】🍹277显示为【xiǎn shì wéi】值897即ok
3.2机器人做主站
确定按照上述步骤客户端io设置完成
3.2.1任务中读取(等待)线圈值
运行任务🍈,当从站的信号【de xìn hào】modbus=高【gāo】😅 时 ,页面弹⤴出窗口提示【tí shì】“1”,代表已【dài biǎo yǐ】获取到💛该mosbus


3.2.2任务中设置写入线圈值
先检查助手里面准备写入得地址是否为0
如图在任务里添加设置

点击运行任务,助手中值变化
3.2.3任务中读取(等待)寄存器值
运行任【yùn háng rèn】务,当从站🚍的信号【de xìn hào】modbus_2=3 时😅 ,页面弹🛍出窗口【chū chuāng kǒu】提示“1”,代表已🗜获取到该寄存器的值【qì de zhí】


3.2.4任务中写入从站的寄存器值
先检查助手里面准备写入得地址是否为0

如图在任务里添加设置

点击运行任务,助手中值变化
