欧姆龙CPU自带232口与第三方设备通信实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编号:20150822
实验报告
课题名称:欧姆龙CPU自带232口和第三方设备通信实验
单位(盖章): 技术部
实验时间:
目录
实验目的: (3)
实验设备: (3)
实验流程: (4)
实验步骤: (4)
一、硬件电路搭建 (4)
二、软件设置 (6)
三、无协议收发功能的测试。
(8)
四、第三方设备协议分析 (12)
五、CS1D-CPU67S读取仪表动态数据实例。
(14)
六、FCS(帧校验和)指令的使用。
(17)
七、通过CPU计算校验码获取SWP数据 (20)
八、结论 (22)
注意: (22)
欧姆龙CPU自带232口和第三方设备通信实验实验目的:
了解欧姆龙PLC CPU自带RS232口和第三方设备的通信。
本实验以欧姆龙PLC CS1D-CPU67S和昌辉SWP系列仪表为例进行测试。
实验设备:
本次实验设备见表1。
表1
注1:欧姆龙PLC RS232口和上位机串口线的连接方式见图1。
图1-欧姆龙PLC RS232口和上位机串口线的连接方式
实验流程:
实验步骤:
一、硬件电路搭建
1、实验设备电路搭建如图2所示。
电源模块
以太网模CPU
主底板
硬件电路搭建件
无协收发能测试
第三方设备议分析读取仪表数据实例FCS 指令校验码计算
通过FCS 指令和协议宏指令接收仪
图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。
表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进制形式发送。