欧姆龙CJ1W-SCU模块通过串口网关功能实现Modbus RTU通信

实验设备:CJ2M-CPU33CJ1W-SCU21-V1XW2Z-200S-CV、Modbus RTU从站助手

实验目的:SCU模块通过串口网关功能实现Modbus RTU主站功能

1.系统概述和硬件搭建

系统概述:

       本次实验通过SCU模块的串口网关功能,使用FINS Command #2804功能码将FINS命令转换为Modbus RTU命令通过CMND指令发送给从站,接受从站的响应。

       串口网关的实质就是通过FINS Command (2804Hex2803Hex2805Hex)FINS协议分别转换为Modbus RTUModbus ASCIICompoWay/F协议。在发送区域加上相应的功能码时,PLC串口在发送数据时会根据功能码自动的去掉FINS的头代码、功能码和校验码,将数据区Modbus RTUModbus ASCIICompoWay/F协议的命令发送出去,从而实现协议的转换,原理图参考注意事项。

硬件接线:

2.相关设置

I/O表和SCU模块设置,创建I/OSCU模块单元号为8,串口设置Serial Gateway,如图:

Modbus Slave从站助手设置如下:

3.程序编写

本次实验通过SCU主站往从站0001Hex地址写入#1234,使用功能码为06,程序如下:

4.实验现象

触发W1.00执行CMND指令,可以看到数据写到了从站0001Hex地址中,并且可以通过从站助手监视到串口数据的交互,如图:

PLC响应地址D400-D404接收到的数据,如图:

5.注意事项

(1)发送区数据:

① #2084表示FINS CommandFINS协议转换为Modbus RTU

不需要写校验码,只要写到校验之前就行了;

本次实验Modbus RTU命令为:01 06 0001 1234(校验不要写),向从站的0001hex地址写入#1234

④ Modbus RTU响应数据为:01 06 0001 1234(校验不接收)

2响应区数据:

CMND响应区实际接收到的数据为:2084 0000 01 06 0001 1234(校验不接收),在响应区域里会多四个字节,分别为FINS CommondError code各占两个字节;

#2084 FINS Command

#0000 FINS Error code#0000表示正常结束;此Error code也可以通过A203-A210查看(对应8个逻辑端口)。

3C控制字——端口指定

CMND指令发送区域的数据是从哪个端口发出的,由C+2C+3两个控制字决定,端口指定方式有两种:

C+208-11位为#00,不使用时:那么发送数据的端口由C+300-07位决定,方法如下:

SCU端口180 Hex + 04 Hex ×单元号,单元号为880 Hex + 04 Hex × 8 = #A0(本次实验使用的是端口1,即C+3 = #00A0

SCU端口281 Hex + 04 Hex ×单元号

C+208-11位不为#00时,那么发送数据的端口由C+208-11位和C+300-07位共同决定决定,方法如下:

C+300-07位为:10 Hex + 单元号

C+208-11位为1表示端口12表示端口2

使用的SCU单元号为8,端口1,即C+300-07位为#18C+208-11位为#1

(4)路由表说明:

如果SCU端口做了路由表的话C+2的00-07位设置为端口的网络号,如下:

注意:在做了路由表的情况下C+2的00-07位写#00也是可以发送数据的;

5FINS 功能码说明:

       只有SCU或者SCB串口网关才支持下面几种FINS功能码,CJ本体自带的串口或者外设口只支持将FINS转换为CompoWay/F(2803Hex功能码)。如果用CJ自带的口做Modbus RTUModbus ASCIIHostlink时,执行CMND指令是无法是发送数据的,串口的灯都不亮。在使用CJ本体做CompoWay/F时,CMNDC+300-07位设置为FDFC分别指定发送端口为外设口和RS-232

       串口网关的实质就是通过FINS Command (2804Hex2803Hex2805Hex)FINS协议分别转换为Modbus RTUModbus ASCIICompoWay/F协议。在发送区域加上相应的功能码时,PLC串口在发送数据时会自动的去掉FINS的头代码、功能码和校验码,将数据区Modbus RTUModbus ASCIICompoWay/F协议的命令发送出去,从而实现协议的转换。

Modbus RTU Slave从站助手百度云下载链接:

百度网盘 请输入提取码   提取码:zyk6

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
由于CIM协议是一种工控领域常用的协议,因此在PLC控制系统中使用CIM协议可以帮助我们更好地实现工业自动化。在此,我们将介绍如何使用CJ1W-EIP21实现CIM协议的PLC控制系统。 步骤一:准备工作 1.1 硬件准备 我们需要准备以下硬件设备: - CJ1W-EIP21以太网通信单元 - CJ1G-CPU4H CPU单元 - 交换机或路由器 1.2 软件准备 我们需要安装以下软件: - CX-One软件 - Sysmac Studio软件 步骤二:CJ1W-EIP21的设置 2.1 确认IP地址 CJ1W-EIP21以太网通信单元与PLC CPU单元之间的通信需要通过以太网进行。因此,我们需要为CJ1W-EIP21设置一个IP地址。 在CX-Programmer软件中,选择CJ1W-EIP21单元,右键单击并选择“在线”->“连接”菜单。在弹出的“连接”对话框中选择“以太网”选项卡,然后单击“IP地址”按钮。 在弹出的“IP地址”对话框中,输入一个合适的IP地址和子网掩码。如果您的PLC系统已经具有一个IP地址,则应根据该地址设置CJ1W-EIP21的IP地址。单击“确定”按钮以保存更改。 2.2 配置CIM协议 在Sysmac Studio软件中,创建一个新的PLC项目。在“设备”窗格中,右键单击PLC单元并选择“属性”菜单。在弹出的“属性”对话框中,选择“网络”选项卡,然后单击“CIM”按钮。 在弹出的“CIM”对话框中,单击“添加”按钮以添加一个CIM节点。在“目标”字段中输入PLC的IP地址,并在“端口”字段中输入CIM协议端口号(默认为3000)。单击“确定”按钮以保存更改。 步骤三:编PLC程序 在Sysmac Studio软件中,创建一个新的“控制器”程序。在程序中,使用CIM读指令来读取或入PLC的输入输出数据。例如,以下代码演示了如何读取PLC的输入信号: ``` CIM_Read_Input( Node := "CIM_1", StartAddress := "ReceivingData1", NumBits := 16, Data := InputData ); ``` 在此代码中,“Node”参数指定了CIM节点的名称,“StartAddress”参数指定了从PLC的哪个输入地址开始读取数据,“NumBits”参数指定了要读取的位数,“Data”参数指定了读取后的数据存储位置。 步骤四:测试PLC程序 在Sysmac Studio软件中,选择“模拟运行”模式并运行PLC程序。在模拟运行模式下,我们可以模拟PLC的输入输出信号并测试程序的正确性。 当程序正确运行时,我们可以将PLC程序下载到实际的PLC硬件设备中进行测试。在测试过程中,我们可以使用PLC的输入输出信号来控制工业设备的运行。 总结 CJ1W-EIP21以太网通信单元可以帮助我们实现CIM协议的PLC控制系统。通过设置CJ1W-EIP21的IP地址并使用CIM读指令,我们可以读取或入PLC的输入输出数据。使用Sysmac Studio软件,我们可以轻松地编和测试PLC程序,从而实现工业自动化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

M_qsqsqsq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值