前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GE 90-30系列PLC CMM321模块的SRTP通信

GE 90-30系列PLC CMM321模块的SRTP通信

作者头像
剑指工控
发布2021-11-09 11:24:42
1.6K0
发布2021-11-09 11:24:42
举报
文章被收录于专栏:剑指工控

JZGKCHINA

工控技术分享平台

尊重原创 勿抄袭

勿私放其他平台

在某个使用GE 9030系列CPU 350的老设备的信息化改造中,我们需要把其连接到以太网中去进行设备状态的监控,同时我们还需要通过串口或者以太网把数据传递给一个新增的PLC控制系统。由于该设备CPU上的串口已被配置为和一个定制化的工控机通信,我们只能使用该设备上剩余的一个IC693CMM321模块进行以太网通信。我们要对接的系统和PLC都仅支持常见的Modbus RTU / TCP协议。但是,通过查阅GE手册,我们发现CMM321只有在后缀为FH及更高的版本后才支持Modbus TCP通信,而现场老版本的CMM321模块仅支持GE的SRTP通信协议。所以在这里,我们使用了HORNER的HE-XE1E0控制器作为了一个数据网关,把通过SRTP协议获取的数据转换成Modbus RTU / TCP协议供其他设备采集。

本文以一个实际项目为例,主要介绍了GE 90-30系列PLC中IC693CMM321模块的SRTP通信,同时简单介绍了HORNER控制器的Modbus RTU Slave,Modbus TCP Server通信。

本文约3000字,预计阅读时间12分钟。

PART A/GE IC693CMM321模块的SRTP通信

SRTP(Service Request Transport Protocol)协议是GE PLC上常见的一种基于以太网的通信协议,常用于GE PLC之间的数据交互,或者是组态软件、触摸屏等对GE PLC的访问。SRTP使用TCP 18245端口。在本案中,GE PLC作为SRTP的Client,HORNER控制器作为SRTP的Server,GE PLC会把需要监视的数据写入到HORNER控制器中去。

1. 首先,我们使用VersaPro软件打开GE PLC的程序,进入硬件配置中,对CMM321模块进行配置。

注意,

本例中CMM321位于Rack 0的7号槽,这个槽位我们会在后面的程序中用到。双击CMM321模块,主要对IP地址及状态寄存器进行配置,这里的以太网状态寄存器会占用从%I81开始的连续80个Bit。我们在后面会使用其中的一些对以太网通信状态进行判断。

2. 然后,我们开始逻辑部分的编辑。在GE PLC的SRTP通信中,一般是在Client端使用逻辑中的COMMREQ指令进行数据读写控制,而在Server端,是不需要编写逻辑指令的。COMMREQ指令如下:

  • Enable:激活该COMMREQ指令,注意,这里一般使用脉冲来激活该指令,如果使用了一个保持的条件,可能会造成CPU死机或者TCP通信网络占用过大。
  • Command Block address: 命令块的起始寄存器地址,命令块主要是描述了对某个设备的某个地址执行了什么操作,其反馈状态是什么。一般这里用%R寄存器,该命令块的长度根据具体的命令是不同的。在执行我们常用的读写操作时,一般可以认为其长度是23个字。(此时使用IP地址指定操作目标,如果是使用程序名,则该长度会更长)本案存放这23个字的起始地址为%R1201。
  • SYSID:要执行该指令的通信模块的Rack号和槽号。若用16进制表示,则高字节部分表示Rack基架号,低字节部分表示槽号,在本案中,CMM321位于Rack 0的7号槽,所以这里就为7(0007H).其他例子如下。
  • Task value: 任务号,对于CMM321, 该值固定为0. (注意手册原文,采用不同的硬件时该值是不同的:For the Series 90-30 CPU364, this must always be set to 21 decimal (0015H). For the Series 90-30 Ethernet Interface and the Series 90-70 Ethernet Interface (Type2), this must always be set to zero.)
  • OK:表示CPU成功将该指令传递给通信模块,但该输出引脚仅90-70系列有,90-30系列不存在。
  • FT:CPU检测到该指令失败。

在本案中,GE PLC是作为SRTP的Client,把连续61个字的数据写入到SRTP Server中(本案里是HORNER的控制器,也可以是其他GE PLC)。

3. 了解完COMMREQ指令的大体结构,下面我们就来考虑那个命令块是如何来定义和使用。该命令块可以分为两个部分,前7个字我们可以认为是通用部分,其定义如下:

根据通道命令代码的不同,从WORD7之后,其余通信参数的定义是不同的。在本案中,我们使用2004建立写入通道把本地CPU从%R1001开始的连续61个字,写入到远程控制器的从%R1001开始的61个字中,每200ms写入一次,远程控制器的IP地址是192.168.0.222。根据上述要求,其余通信参数定义如下:

4. 通过上面的梳理,我们可以看出,当使用COMMREQ通信时,只需要通过一个脉冲触发该功能块,即可以激活通信,然后通信就会按照设定的参数进行周期性的读写操作。那么在编程时,我们只要考虑到当COMMREQ块如果激活不成功或者当以太网通信中断后需要重新激活即可。我们可以使用以下两个状态寄存器来对网络和功能块的状态进行判断。

  1. CMM321模块硬件配置中配置的以太网状态寄存器的第13位。如果以太网通信正常,该值为ON;故障则为OFF。
  1. 通信状态寄存器CRS的数值如果为1,表示激活通道操作成功,如果为0或者其他数值,则表示通道未激活或者激活失败。具体故障信息可参考手册GFK-1541中的描述,这里不再列举。

5. 最后,我们可以在写入的61个字的数据包中布置一个心跳字,当Server端持续一定时间检测到该心跳字不变时,则可以认为通信故障。

GE PLC程序见下图:

PART B/HE-XE1E0的SRTP通信和RTU/TCP通信

本次使用的HE-XE1E0是HORNER的小型一体化控制器,本体内置2个串口,1个以太网口,1个CAN总线接口。由于本次没有IO需求,仅做网关用途,我们没有选择内置IO点的型号。

在本案中,HORNER控制器的配置非常简单,只需要进入Cscape编程软件中的Hardware Configuration硬件配置里,在ETN1以太网配置中勾选上SRTP Slave和Modbus Slave即完成了对SRTP和Modbus TCP功能的设置。

刚才我们说过,在SRTP通信时,Server端一般不需要进行逻辑编写。但有的朋友可能会奇怪,我们还没有对要访问的HE-XE1E0控制器的内部寄存器的Modbus地址进行映射,那上位机如何确定要访问寄存器的Modbus地址呢?原来,在HORNER控制器中,已经对大部分的常用寄存器地址进行了Modbus地址映射,用户不需要再进行单独的映射。在下表中,我们可以看到,比如对于输出点Q1,其已经映射到线圈类型存储器地址000001上;或者对于16位的%R寄存器,其被映射到40513,43001和410001这3个地址开始的不同长度的连续地址段上,我们可以根据需要直接访问这些地址来读写不同的寄存器。

最后,我们还需要HORNER控制器作为Modbus RTU的从站,我们只需要在主程序中添加如下程序,就可以把控制器的MJ2口设为Modbus RTU的从站,通信参数为站地址1,485半双工,9600,N,8,1,进行RTU通信了。

参考资料:

1.GFK-1541B TCP/IP Ethernet Communications for the Series 90™ PLC

张伟宁:

就职于浩纳尔(天津)自动化科技有限公司,负责美国HORNER一体化控制产品的应用和支持工作,对HORNER全系产品有深入了解。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 剑指工控 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档