沈阳广成科技有限公司
工业级Modbus/TCP-CAN转换模块—GCAN-205
8. 常见问题
1. 是否一定需要使用 120Ω 终端匹配电阻?
建议120Ω终端匹配电阻用于吸收端点反射,提供稳定的物理链路。一条完整的CAN总线上需要有且只需有2个120Ω终端电阻,分别接在总线最远的两个节点处。
2. 能否在一条CAN总线上安装多块GCAN-205模块?
由于CAN总线结构特点,一条总线上可以连接多个CAN节点,所以在不影响总线的前提下,一条CAN总线允许安装多块GCAN-205网关,实际数量与CAN总线最大节点数有关。
3. GCAN-205模块最高的数据转换率是多少?
GCAN-205模块的单一CAN通道最高支持8000 fps的CAN总线数据转换,这里提到的帧是指标准帧8个数据的数据帧,如果是小于8字节数据或者远程帧可能会更快。
4. 为何DAT状态指示灯不亮?
只有当CAN或以太网端有数据传输且模块正处于数据转换中,DAT指示灯才会亮起。
5. 为何调用接口函数时系统非法操作?
首先在使用接口函数时请认真阅读函数说明,保证输入参数合法,特别注意指针(地址)的传递,或参照提供的例子程序,倘若问题还是未能解决,可联系我公司技术支持。
6. GCAN-205模块的通讯波特率如何设置?
EtherCAN Config软件提供一组常用的波特率的设置值,若要使用其他的波特率,请与广成科技有限公司相关人员联系。
7. 系统进入待机或睡眠状态是否影响接收?
会有影响。这时所有处理将停止,最大可能导致硬件接收缓冲溢出错误。若有程序打开设备将尝试阻止系统进入待机或睡眠状态,从而保证系统正常工作。使用GCAN-205模块时,请禁止系统的待机和睡眠功能。
21
沈阳广成科技有限公司
工业级Modbus/TCP-CAN转换模块—GCAN-205
附录A:CAN2.0B协议帧格式
CAN2.0B 标准帧
CAN 标准帧信息为11个字节,包括两部分:信息和数据部分。前3个字节为信息部分。
字节1为帧信息。第7位(FF)表示帧格式,在标准帧中,FF=0;第6位(RTR)表示帧的类型,RTR=0表示为数据帧,RTR=1表示为远程帧;DLC 表示在传输数据帧时实际的数据长度。
字节2、3 为报文识别码,11位有效。
字节4~11为数据帧的实际数据,远程帧时无效。
22
沈阳广成科技有限公司
工业级Modbus/TCP-CAN转换模块—GCAN-205
CAN2.0B 扩展帧
CAN 扩展帧信息为13个字节,包括两部分,信息和数据部分。前5个字节为信息部分。
字节1为帧信息。第7位(FF)表示帧格式,在扩展帧中,FF=1;第6位(RTR)表示帧的类型,RTR=0表示为数据帧,RTR=1表示为远程帧;DLC表示在传输数据帧时实际的数据长度。
字节2~5为报文识别码,其高29位有效。
字节6~13为数据帧的实际数据,远程帧无效。
23
沈阳广成科技有限公司
工业级Modbus/TCP-CAN转换模块—GCAN-205
附录B:Modbus/TCP协议简介
Modbus通信协议是由Modicon公司开发的应用在PLC或其他工业控制器上的一种通用语言。通过此协议,各控制器之间可以实现串行通信,Modbus通信协议定义了一个控制器能识别使用的消息结构,描述了主控制器访问从站设备的过程,例如规定从站怎样做出应答响应,检查和报告传输错误等。Modbus协议的通信方式为主从方式。主站首先向从站设备发送通信请求指令,从节点根据请求指令中的功能码向主站发回回答数据。网络中的每个从站设备都必须分配给一个唯一的地址,最多可达31个从站设备。通过多达24种总线命令实现主控制器与从站设备之间的信息交换。从站设备只执行发给自己的指令,对于其它从站地址开头的报文不作应答。这种一问一答的通信模式,大大提高了通信的正确率。因其具有操作简单、高效、通信可靠等优点,Modbus协议已成为一个国际通信标准,得到了国际上大多数工控产品生产厂家的支持。该通信协议已广泛应用于机械、水利、电力、环保等行业设备中。
Modbus/TCP通信协议可供自动化设备的监控使用。常见的应用是开发基于该协议的网关,通过网关可以将PLC、I/O模块和其它总线连到以太网上。
Modbus/TCP是在不改变原有的Modbus协议基础上,只是将其作为应用层协议简单的移植到TCP/IP协议上。Modbus/TCP协议每一个呼叫都要求一个应答。利用TCP/IP协议,通过网页的形式可以使用户界面更加友好。利用网络浏览器就可以查看企业网内部的设备运行情况。Schneider公司已经为Modbus注册了502端口,这样就可以将实时数据嵌入到网页中,通过在设备中嵌入Web服务器,就可以将Web浏览器作为设备的操作终端。但是Modbus协议本身存在一些缺陷,它不支持诸如基于对象的通信模型等一些正在被广泛采用的网络新技术,用户在使用的时候,不得不手工配置一些参数,比如信息数据类型、寄存器号等等。
B.1 Modbus/TCP协议数据格式
TCP/IP协议和以太网的链路层校验机制已可保证数据包传递的正确性,因此Modbus/TCP报文中不再存在CRC-16或LRC校验域,但需要添加一个Modbus应用帧头(MBAP)。它可对Modbus的参数及功能进行解释。每个TCP/IP报文仅可含有一个Modbus帧。
在Modbus/TCP ADU中,MBAP头部占7个字节(含4个子域),及交易标识符TI(Transaction Identifier)、协议标识符PI(Protocol Identifier),长度标识符L(Length)(占用2字节,指明Protocol Identifier和Data域的总长度)和单元标识符UI(Unit Identifier)组成。TI占用2字节,用来标识Modbus帧的次序,PI占用2字节,用于确认应用层协议。UI占1字节,用于标识Modbus设备单元。功能码占1字节,可分为位操作和16位字操作两类。功能码指出要进行的操作,如功能码15代表写多个位寄存器,功能码06表示对独立的16位字寄存器进行写操作。数据域最多可达248字节,其具体格式与功能码相关。当客户机发送请求数据时,数据域给出要操作的寄存器的起始地址(2字节)和个数(l字节);当服务器发送应答数据时,数据域给出被操作的寄存器个数(1字节)及各寄存器状态值。图B.1给出了Modbus与Modbus/TCP数据帧格式比较。
24
沈阳广成科技有限公司
工业级Modbus/TCP-CAN转换模块—GCAN-205
图B.1 Modbus与Modbus TCP/IP帧格式
Modbus/TCP的ADU数据单元规范如表B.1所示。 描述 所占字节 传输标识码高位Hi 1 传输标识码低位Lo 1 协议标识符 2 MBAP头 长度标识符 2 单元标识符 1 功能码 1 开始地址 2 Modbus请求 寄存器数目 2 表B.1 Modbus/TCP的ADU数据单元规范 在通过Modbus/TCP传送数据之前,需要在客户机和服务器之间建立一个TCP/IP连接。服务器使用端口502作为Modbus/TCP的连接端口。Modbus/TCP连接的建立通常由TCP/IP Socket接口的软件协议自动实现,因此对应用完全透明。一旦客户端和服务器之间的TCP/IP连接建立,同样的连接可以根据要求的方向用来传输任意数量的用户数据。客户端和服务器还可以同时建立多个TCP/IP连接,最大的连接数量取决于TCP/IP接口的规范。
当某一设备发出请求,则其相应的设备要做出响应。响应的数据格式如表B.2所示。 字节 Byte0、Byte1 Byte2、Byte3 Byte4 Byte5 Byte6 Byte7 Byte8 响应数据 传输标识码=0(响应时拷贝该数据) 协议标识符 长度标识符高字节=0 长度标识符低字节(标识其后有多少个字节) 单元标识符(从设备地址) Modbus功能码 数据 表B.2 Modbus/TCP响应数据格式 25
沈阳广成科技有限公司
工业级Modbus/TCP-CAN转换模块—GCAN-205
B.2 Modbus常用功能码
在Modbus消息帧的功能码中较常使用的是01、02、03、04、06和16功能码,使用它们即可实现对从机的数字量和模拟量的读写操作。下面以在RTU传输模式下通讯为例,对这些功能码进行详细介绍。
下面是2个Modbus命令的主从机收发的数据包格式,其余的命令可参照其格式。
(1)功能码:03H
代码功能:读保持寄存器
说明:读从机保持寄存器的二进制数据,不支持广播。
查询:查询信息规定了要读的寄存器起始地址及寄存器的数量,寄存器寻址起始地址为0000,寄存器1-16所对应的地址分别为0-15。
响应:响应信息中的寄存器数据为二进制数据,每个寄存器分别对应2个字节,第一个字节为高位值数据,第二个字节为低位数据。
(2)功能码:10H(十进制为16) 代码功能:预置多个寄存器
说明:把数据按顺序预置到各(4x类型)寄存器中,广播时该功能代码可把数据预置到全部从机中的相同类型的寄存器中。需要注意的是该功能代码可越过控制器的内存保护,在寄存器中的预置值一直保持有效,只能由控制器的下一个逻辑来处理寄存器的内容,控制逻辑中无该寄存器程序时,则寄存器中的值保持不变。
查询:信息中规定了要预置的寄存器类型,寄存器寻址的起始地址为0。查询数据区中指定了寄存器的预置值,M84和484型控制器使用10位二进制数据,2个字节,剩余的高6位置0。而其他类型的控制器使用一个16位二进制数据,每个寄存器2个字节。
响应:正常响应返回从机地址、功能代码、起始地址和预置寄存器数。
26