JZGKCHINA
工控技术分享平台
尊重原创 勿抄袭
勿私放其他平台
前 言
本文记述了笔者在调试一个由上位机及PLC、空压机、干燥机、真空泵等组成的系统的通信时所遇到的一些问题,如果您在工作遇到以下品牌的设备,或许可以提供一些参考和帮助。
本文约1900字,预计阅读时间10分钟。
在某项目中,用户使用艾默生Rx3i PLC(原GE)对现场的空压机、干燥机、真空泵等设备进行数据采集及控制,并通过以太网将数据传递给FMCS的服务器。网络结构示意如下:
从上图中我们可以看到,现场的多台Atlas空压机及干燥机通过CAN总线连接到Atlas的Mk5网关模块,通过该网关把CAN协议转换为了RS-485上的Modbus RTU协议。而现场Edwards的真空泵使用的是基于以太网的Modbus TCP协议,但是用户的Emerson PLC使用的CPU是CPE305,其上只有一个以太网口和一个RS-232接口。IT部门给该系统只分配了一个IP,所以此时我们在CPU上只有一个RS-232接口可用。
在此种情况下,我们加入了一个HORNER的XE1E0控制器,上面带有2个RS232/485接口及一个以太网接口。我们通过XE1E0作为Modbus TCP Client采集真空泵数据,使用一个RS485口作为Modbus RTU主站采集空压机、干燥机数据。然后再使用XE1E0的另一个RS232接口作为RTU主站把数据写入到CPE305中。 CPE305和FMCS服务器上的Intouch组态软件通过SRTP协议交互数据。
了解了网络结构后,介绍下笔者在调试中遇到的一些问题:
关于和Atlas空压机、干燥机的Modbus RTU通信
由于Atlas的Mk5网关是由厂家的技术人员按要求配置好的,所以通信比较顺畅,这里只说几个小的细节:
- Mk5网关的RS-485接口是DB-9 Female连接器,PIN 3接485正,PIN 8接485负,这个在Mk5的手册里没有找到,是咨询厂家技术人员才了解的。
- Mk5是个网关模块,意味着如果有多个空压机和干燥机需要通信,每个设备需要有不同的Modbus ID。上位机、PLC在编制程序时需要按多个Modbus RTU从站设备对待,而不是笔者之前测试的一些空调集控器那样,通过访问一个主机ID来获取下级多个面板的数据。
- Atlas厂家提供了非常详细的数据地址表,比如下列状态,在ModScan中可按下列配置读取。
- 在获取几个运行时间数据时,在出错后笔者才发现地址表中定义的双字的高低字顺序和笔者所用的PLC的顺序是相反的。这里我们需要对采集到的数据进行交换高低字操作。
在HORNER XE1E0中,有多种方式可以交换高低字:
- 在通信协议配置中直接选中交换高低字;
- 如果你的PLC没有上述配置,也可以在程序中使用循环移位指令对双字循环左移或者右移16位;
- 或者直接用MOVE交换高低字,下行程序即把R1-DWORD转换到了R11-DWORD。
关于和Edwards GXS干式真空泵的
Modbus TCP通信
几个细节问题:
- 通过真空泵上的控制面板,可以设定IP地址。在测试中笔者发现,该地址设置完成后可以立即生效,使用PING可以联通,但是此时无法连接到该设备的502端口。只有在断电重启设备后,502端口才可以连接进行Modbus TCP通信。笔者在这个上面耗费了2个小时,直到现场可以停机了,才确定这个特性。
- 在开篇的网络图中,我们可以看到,现场的多个真空泵是通过MOXA的EDS-205交换机和XE1E0相连的,在测试中笔者发现,当使用直通网线连接真空泵和交换机时,无论是使用计算机还是PLC都无法通过交换机连接到真空泵;如果把该直通网线直接连接到计算机或PLC上,通信是可以建立的。在把网线RJ45接头重做,变成交叉线后,通信就可以通过交换机建立了。但是查询EDS-205的资料,发现其是支持Auto MDI/MDI-X 自动翻转功能的,所以这里不敢判断原因为何,只给大家列出,如有遇到类似问题可尝试下。
- 真空泵地址数据表如下,其常用的参数可以通过直接读取40529(Holding Register, 0x210)开始的连续28个保持型寄存器获取,ModScan配置如下:
关于HORNER控制器和Emerson CPE305的
Modbus RTU通信
几个细节问题:
- Emerson CPE305作为Modbus RTU的从站,只需要在CPU的配置里按如下配置即可,程序里不需要其他配置。
- Emerson CPE305的寄存器对应的Modbus地址规则如下:
%Q1:对应线圈,地址00001
%I1:对应只读输入状态,地址10001
%AI1:对应输入寄存器,地址30001
%R1:对应保持型寄存器,地址40001
- 不同于其他的PAC系统的CPU的串口(大部分是DB9或RJ45), CPE305的RS-232接口是在一个RJ25连接器上,对应线序如下,你得提前准备一些RJ25接头(就是6P6C的RJ11接头)和网线钳:
- HORNER XE1E0 Modbus RTU配置如下,我们把从现场设备获取的数据通过RTU协议写入到CPE305的地址中,配置地址映射即可,程序中不需要进行编写:
关于Emerson CPE305和Intouch的SRTP通信
几个细节问题:
- Intouch中需要在DASERVER里安装GESRTP驱动,然后新建设备即可。
- Intouch中的访问名配置如下,应用程序名为DASGESRTP,注意主题名须相同。
- 对于不同的数据类型,可能需要在变量名后加一些后缀。比如,空压机的出口压力我们放置在CPE305的%R3002寄存器,从下表中看到它是16位有符号整数,故Intouch中变量的ItemName设置为%R3002 S。再如累计运行时间是个32位浮点数,存放在%R3101中,则Intouch中变量的ItemName设置为%R3101 F。以上可以在DASERVER的帮助文件中查到。
参考资料
- GFK-2222Y PACSystems*RX7i & RX3i CPU Reference Manual
- P411-00-180 Drypump Semi E54 Communication Protocol
- 9845 0187 00_Mk5 Gateway User Guide 08_ZH
- M58800846 - Instructions(CN) Issue H 干式螺杆真空泵GXS 系列使用手册
- GESRTP DAserver Help
- Address Map ZR630A2 Gen. 1
- Address Map BD2200P Gen. 1
作 者 简 介
张伟宁
就职于浩纳尔(天津)自动化科技有限公司,负责美国HORNER一体化控制产品的应用和支持工作,对HORNER全系产品有深入了解。