科威PLC带CANBUS通信接口,符合CAN2.0A和CAN2.0B协议,支持主从结构CANBUS通信。多台科威PLC之间的CANBUS通信只需要简单设置即可实现。其设置包括链路层设置和应用层设置,链路层设置通过给PLC相关单元填数据实现,应用层设置在PLC作为主站时要使用科威公司开发的工具软件CANSET,详情请见www.kwzk.com/资料下载/PLC编程手册/第九章。科威PLC也可以与第三方设备进行CANBUS通信,此时PLC可以作主站或从站。
一、科威PLC作主站时如何与第三方设备通信
主站PLC的设置方式按科威PLC CANBUS主从通信协议中主站方式设置,并下载CAN配置文件。根据第三方设备和科威PLC之间需要交换的数据,在科威公司CANSET软件设备库中建立一个新设备,然后将新设备添加到设备表,具体操作方法见编程手册第九章。每个新设备由多个报文组成,报文号从0开始,每次递增1个。每个报文由发送报文和接收报文组成,发送和接收是针对PLC而言。报文数据长度固定为8个,其有效数据为6个字节,其余2个字节定义为逻辑地址和命令字,报文结构为:
逻辑地址和报文号均由PLC组成。逻辑地址对应设备表中每个设备的序号,每个报文号对应一个发送报文和一个接收报文。新设备在编制应用程序时,CANBUS接口设置参数必须和主站PLC一致,参数包括波特率、是否带扩展标识位等。
当新设备CANBUS接口为11位标识位时,主站PLC只能是不带扩展校验位方式,此时新设备接收报文标识符字节内容(ID10~ID3)应与设备表中的设备地址一致,ID2~ID0设为0。
当新设备CANBUS接口为29位标识位时,主站PLC必须设为带扩展校验位方式,此时新设备接收报文字节内容(ID28~ID21)与设备表中的设备地址一致,ID20~ID8全部设为0,ID7~ID0必须被屏蔽位屏蔽掉。
新设备在接收到主站PLC发送的报文后,必须保存逻辑地址和报文号,根据报文号确定如何保留后面6个数据(全部保留,全部不保留或部份保留)。保存接收数据后,必须回送一个报文,头2个字节是刚才接收报文中的逻辑地址和报文号,其余6个是数据字节,若没有有效数据或有效数据不够6个,则发送缓冲区只填充对应的有效数据,但发送报文数据长度必须为8。
当新设备为11位标识符时,发送报文标识符设为0,当新设备为29位标识符时,发送缓冲区8个字节相加的和填入发送报文标识符的低8位(ID7~ID0),其余ID28~ID8位全部设为0。
二、科威PLC作从站时如何与第三方设备通信
从站PLC的设置方式按科威PLC CANBUS主从通信协议中从站方式设置。此时第三方设备为主站,当通信数据量不多时,可设计成定时按顺序发送报文,接收报文以中断方式接收。此时发送报文和接收报文结构仍为:
发送和接收是针对第三方设备而言,数据长度固定为8个字节。逻辑地址和报文号由第三方设备生成,逻辑地址可不用设置。根据每台PLC需要与第三方设备(主站)通信的数据量,设计报文个数,报文号从0开始,每次递增1个,每个报文号对应一个报文,每个报文由发送报文和接收报文组成。
当新设备CANBUS接口为11位标识位时,从站PLC只能是不带扩展校验位方式。此时新设备发送报文标识符字节内容(ID10~ID3)与从站PLC地址一致,ID2~ID0设为0。新设备接收报文标识符为全0。
当新设备CANBUS接口为29位标识位时,从站PLC必须是带扩展校验位方式。此时发送报文标识符中ID28~ID21与从站PLC地址一致,ID20~ID8全部设为0,将发送缓冲区8个字节的数据相加之后的和填入ID7~ID0。接受报文标识符中ID28~ID8全部设为0,ID7~ID0必须被屏蔽位屏蔽掉。
发送缓冲区头两个字节是逻辑地址和报文号,后6个字节是数据。从站PLC接收到CAN报文后,根据报文号的内容,将接收到的数据填入相应的D寄存器区,然后回送一个报文,回送报文内容为相应D寄存器内容。对PLC而言,0号接收报文内容填入D6000~D6002,高字节在前,0号发送报文内容为D6003~D6005,同样是高字节在前,其余报文对应的D寄存器地址依此类推。
新设备接收到报文后,在11位标识位方式下,根据接收报文的报文号将对应的报文数据直接保存。在29位标识位方式下,先将8个接收数据相加,得到的和应与接收报文标识符ID7~ID0一致,否则为无效报文。若一致则保存对应的报文数据。新设备在下一次发送报文时,报文号向上加1,并将相应数据填入发送缓冲区。发送到最后一个报文后,报文号清零,又重新开始新一轮发送。