1、欧姆龙CPU自带232口与第三方设备通信实验编号:20150822实验报告课题名称:欧姆龙CPU自带232口和第三方设备通信实验 单位(盖章): 技术部 实验时间: 欧姆龙CPU自带232口和第三方设备通信实验实验目的:了解欧姆龙PLC CPU自带RS232口和第三方设备的通信。本实验以欧姆龙PLC CS1D-CPU67S和昌辉SWP系列仪表为例进行测试。实验设备:本次实验设备见表1。序号名称型号数量备注1CPUCS1D-CPU67S12电源模块CS1D-PA207R13主底板CS1D-BC082S14以太网模块CS1W-EIP2115昌辉仪表SWP-C403-22-23-HL-FA16USB
2、转串口线17CPU和PC串口连接线(见注1)1用来连接CPU的USB口和串口线的USB口8网线1表1注1:欧姆龙PLC RS232口和上位机串口线的连接方式见图1。图1-欧姆龙PLC RS232口和上位机串口线的连接方式实验流程:实验步骤:一、硬件电路搭建1、实验设备电路搭建如图2所示。图2-实验硬件电路搭建图2、CPU单元设置:CPU单元设置见图3,将所有的DIP开关都置为OFF。图3-CPU模块DIP开关设置图3、以太网模块设置:在该实验中,由于我们将用到CPU自带的RS232口和第三方设备(昌辉仪表)通信,因此对CPU的编程等操作选定为以太网方式。以太网模块的单元号和节点号设置见图4,该
3、实验中设定的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系列仪表通讯口的传输方式为。
4、三、无协议收发功能的测试。欧姆龙PLC和第三方设备通信需要通过特殊指令(TXD和RXD)来发送和接收第三方设备的协议。1、无协议发送功能的测试。测试要求:发送D0-D9共10个数据到上位机。上位机接收软件:串口调试工具(1) 无协议接收程序的编写:测试无协议接收需要用到无协议接收指令RXDS-发送数据的首地址:将要发送的第三方设备的协议写在S开始的内存中去。C-控制字:定义发送协议的一些控制项目。控制字的定义如下:N-发送的数据字节数:定义发送协议的字节数。无协议发送程序如图7所示(发送D0-D9共10个数据):图7-无协议发送程序截图(2)无协议发送测试情况如图8、图9所示。图8-CPU发送
5、数据图9-上位机接收数据 (3) 测试结果:CPU无协议发送数据正常。2、无协议接收功能的测试。测试要求:上位机发送数据,CPU通过无协议接收数据并存到D200开始内存区域。上位机发送软件:串口调试工具(1) 无协议接收程序的编写:测试无协议发送需要用到无协议发送指令RXDS-接收数据的首地址:定义接收数据存放的首地址。C-控制字:定义接收协议的一些控制项目。控制字的定义如下:N-存储数据的字节数:定义从接收缓冲区中,存储多少字节的数据到指定的地址中去。无协议接收程序如图10所示(将接收到的数据放在D200开始地址中去):图10-无协议接收截图(2) 无协议接收测试情况如图11、图12所示。图
6、11-上位机发送数据截图图12-CPU接收数据截图(3) 测试结果:CPU无协议接收数据正常。四、第三方设备协议分析1、通讯格式分析本次实验通信的第三方设备是昌辉的SWP系列仪表,其通信格式为: -起始符; DE 仪表设备号(双字节,参见仪表操作手册中之参数“DE” ) 帧命令 操作命令(双字节) 帧数据 各种操作命令所对应的数据(长度视不同仪表型号而不同) CRC 校验字节(除外 CRC 字节之前其它几个字节的异或值,即 DE(ASII)与帧类型 ASCII和帧数据 ASCII的异或值) CRC = DEASCII 帧 命令 ASCII 帧数据 ASCII CR结束符2、 设备设置分析 这一
7、部分需要进入仪表的二级菜单对仪表的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开始的内存中的请求命令(请求当前仪表动态数据)发送到SW
8、P仪表。(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自
9、带的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)与帧
10、类型 ASCII和帧数据 ASCII的异或值。 首先,列出地址使用表3。序号FCS指令中的标识CPU对应的地址设置值SWP仪表的参数1C(控制字)D100#00062D101#30003R1(需要计算的参数的首字)D1200001设备号4D1215244命令代码5D(结果字)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进制形式发送。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1