欧姆龙CPU自带口与第三方设备通信实验.docx
《欧姆龙CPU自带口与第三方设备通信实验.docx》由会员分享,可在线阅读,更多相关《欧姆龙CPU自带口与第三方设备通信实验.docx(21页珍藏版)》请在冰豆网上搜索。
欧姆龙CPU自带口与第三方设备通信实验
编号:
20150822
实验报告
课题名称:
欧姆龙CPU自带232口和第三方设备通信实验
单位(盖章):
技术部
实验时间:
欧姆龙CPU自带232口和第三方设备通信实验
实验目的:
了解欧姆龙PLCCPU自带RS232口和第三方设备的通信。
本实验以欧姆龙PLCCS1D-CPU67S和昌辉SWP系列仪表为例进行测试。
实验设备:
本次实验设备见表1。
序号
名称
型号
数量
备注
1
CPU
CS1D-CPU67S
1
2
电源模块
CS1D-PA207R
1
3
主底板
CS1D-BC082S
1
4
以太网模块
CS1W-EIP21
1
5
昌辉仪表
SWP-C403-22-23-HL-FA
1
6
USB转串口线
1
7
CPU和PC串口连接线(见注1)
1
用来连接CPU的USB口和串口线的USB口
8
网线
1
表1
注1:
欧姆龙PLCRS232口和上位机串口线的连接方式见图1。
图1-欧姆龙PLCRS232口和上位机串口线的连接方式
实验流程:
实验步骤:
一、硬件电路搭建
1、实验设备电路搭建如图2所示。
图2-实验硬件电路搭建图
2、CPU单元设置:
CPU单元设置见图3,将所有的DIP开关都置为OFF。
图3-CPU模块DIP开关设置图
3、以太网模块设置:
在该实验中,由于我们将用到CPU自带的RS232口和第三方设备(昌辉仪表)通信,因此对CPU的编程等操作选定为以太网方式。
以太网模块的单元号和节点号设置见图4,该实验中设定的IP地址为:
192.168.250.1。
图4-以太网模块设置图
二、软件设置
1、打开CX-Programmer,文件,新建,设备类型CS1D-S,CPU型号选择CPU67,网络类型选择Ethernet。
设置界面如图5。
图5-新建工程
2、以太网连接设置,如图6:
将IP地址设定为192.168.250.1
图6-IP地址设定
3、在线工作,编程模式下,打开“设置”选项对CPU自带的232口进行设置。
如图7所示。
在“上位机链接端口”选项下设置通信格式(注2)(波特率、数据格式、232口的工作模式等参数),然后传送到PLC。
图7-CPU自带232口的设置
注2:
SWP系列仪表通讯口的传输方式为
。
三、无协议收发功能的测试。
欧姆龙PLC和第三方设备通信需要通过特殊指令(TXD和RXD)来发送和接收第三方设备的协议。
1、无协议发送功能的测试。
测试要求:
发送D0-D9共10个数据到上位机。
上位机接收软件:
串口调试工具
(1)无协议接收程序的编写:
测试无协议接收需要用到无协议接收指令RXD
S-发送数据的首地址:
将要发送的第三方设备的协议写在S开始的内存中去。
C-控制字:
定义发送协议的一些控制项目。
控制字的定义如下:
N-发送的数据字节数:
定义发送协议的字节数。
无协议发送程序如图7所示(发送D0-D9共10个数据):
图7-无协议发送程序截图
(2)无协议发送测试情况如图8、图9所示。
图8-CPU发送数据
图9-上位机接收数据
(3)测试结果:
CPU无协议发送数据正常。
2、无协议接收功能的测试。
测试要求:
上位机发送数据,CPU通过无协议接收数据并存到D200开始内存区域。
上位机发送软件:
串口调试工具
(1)无协议接收程序的编写:
测试无协议发送需要用到无协议发送指令RXD
S-接收数据的首地址:
定义接收数据存放的首地址。
C-控制字:
定义接收协议的一些控制项目。
控制字的定义如下:
N-存储数据的字节数:
定义从接收缓冲区中,存储多少字节的数据到指定的地址中去。
无协议接收程序如图10所示(将接收到的数据放在D200开始地址中去):
图10-无协议接收截图
(2)无协议接收测试情况如图11、图12所示。
图11-上位机发送数据截图
图12-CPU接收数据截图
(3)测试结果:
CPU无协议接收数据正常。
四、第三方设备协议分析
1、通讯格式分析
本次实验通信的第三方设备是昌辉的SWP系列仪表,其通信格式为:
·@-起始符;
·DE──仪表设备号(双字节,参见仪表操作手册中之参数“DE”)
·帧命令──操作命令(双字节)
·帧数据──各种操作命令所对应的数据(长度视不同仪表型号而不同)
·CRC──校验字节(除@外CRC字节之前其它几个字节的异或值,即DE(ASII)与帧类型ASCII和帧数据ASCII的异或值)
·CRC=DEASCII⊕帧命令ASCII⊕帧数据ASCII
·CR——结束符
2、设备设置分析
这一部分需要进入仪表的二级菜单对仪表的DE(即设备编号)和波特率进行设置。
设置方法为:
找到DE和BT两个项目如图12。
将BT设置为5(即波特率为9600);设备号设置为01。
图12-仪表参数设置
3、仪表参数编写
下面以读仪表动态数据(实时测量值)帧为例编写通信命令帧。
由通信格式可得到设备发送和接收命令的具体格式(注3):
注3:
读仪表动态数据的帧命令为RD,仪表通讯命令集见表2:
表2-SWP仪表通信命令集
故:
当设备号为01时应该发送的命令帧为:
五、CS1D-CPU67S读取仪表动态数据实例。
要求:
(1)当200.00为1时,CPU将储存在D0开始的内存中的请求命令(请求当前仪表动态数据)发送到SWP仪表。
(2)当200.01为1时,仪表回复当前的动态数据到CPU,CPU将其存在D200开始的内存中。
1、无协议收发数据程序编写,如图13。
图13-无协议获取SWP仪表数据
(1)DO中保存的请求命令数据见图14:
图14-CPU发送请求命令
(2)当仪表当前没有给定信号时,接收到的数据见图15。
图15-仪表没有给定信号时
(3)当仪表给定4mA的信号时,接收到的数据见图16。
图16-仪表给定信号为4mA时
(4)当仪表给定12mA的信号时,接收到的数据见图17。
图17-仪表给定信号为12mA时
(5)当仪表给定20mA的信号时,接收到的数据见图18。
图18-仪表给定信号为20mA时
2、结论:
CPU自带的232口能够正常和第三方设备通信。
六、FCS(帧校验和)指令的使用。
1、欧姆龙PLC提供一条FCS指令,该指令的作用是计算指定地址范围内的FCS值,并以ASCII代码输出。
C和C+1—控制字:
C指定了在FCS计算中使用的单位(字节或字),(C+1的第13位判断是字节还是字)。
R1—需要计算校验码的地址的首字。
D—计算输出的结果存放位置。
如果选择字节方式,计算结果输出到D+1和D。
在这种情况下,左边4个数字存入D+1,右边4个数字存入D。
2、FCS校验码计算示例。
(1)以计算昌辉仪表校验码为例。
仪表的协议规定,参与校验码计算的数据包含了DE(ASII)与帧类型ASCII和帧数据ASCII的异或值。
首先,列出地址使用表3。
序号
FCS指令中的标识
CPU对应的地址
设置值
SWP仪表的参数
1
C(控制字)
D100
#0006
2
D101
#3000
3
R1(需要计算的参数的首字)
D120
0001
设备号
4
D121
5244
命令代码
5
D(结果字)
D300
表3-FCS指令计算SWP校验码地址对照表
(2)FCS指令程序见图19。
图19-FCS指令程序
图20-FCS参数查看
(3)改变命令代码为RR(即D121的值为5252)得到新的校验码,如图21所示。
图21-改变命令代码后的检验码计算
3、结论:
检验码和手动计算结果一样,FCS计算异或检验码成功。
七、通过CPU计算校验码获取SWP数据
1、程序
2、得到的实验结果
(1)D0-D4发送数据
(2)D200接收数据
八、结论
当第三方设备数据帧的校验方式为异或时,能够通过CPU自带的RS232口实现与第三方设备的通讯。
注意:
(1)使用到的A区辅助区域
(2)在任何时候,RXD和TXD不能同时执行,否则导致串口报错,不能执行无协议收发数据。
如串口报错可通过将A526.00置为1,重新启动端口。
(3)SWP仪表的通信中,
OD为结束符,只能以16进制形式发送。