根据我们初的想法,我们构造了目前的可编程控制器和扩展系统。一个系统,网络通信十分重要,我们的通信模型实际就是网络通信模型,对于一个复杂的系统而言,通信模型非常重要。而我们要在这里仔细论述腾控PLC的网络通信。
我们整个网络系统是构建在TCP/IP网络之上的。在系统中,有作为服务器使用的数据的产生者,作为客户端数据的使用者和存储者。我们采用的是C/S模型。考虑到与外部接口,要有开放的协议。所以我们在控制器侧要支持2种协议。一种是标准的MODBUS TCP协议,主要是控制器与上位机通信,控制器作为服务器使用。TCP协议开销比较大,这样可以提供给客户一个标准的接口,几乎所有的软件都支持MODBUS协议和MODBUS TCP协议。一种是是UPD协议,PLC内部通信的协议,UPD协议是无连接的协议,开销比较小,可以支持无限制的客户端数量,这样可以达到较高的通信速度。
MODBUS/TCP是简单的、中立厂商的用于管理和控制自动化设备的MODBUS系列通讯协议的派生产品。显而易见,它覆盖了使用TCP/IP协议的 “Intranet”和“Internet”环境中MODBUS报文的用途。协议的通用用途是为诸如PLC’s,I/O模块,以及连接其它简单域总线或 I/O模块的网关服务的。
我们把内部的通信协议称之为ENET协议,服务器协议端口为7000,每个T9系列都支持ENET的服务器。具有运算能力的T9系列控制器支持ENET的客户端,多同时可以发起8个通信。
我们首先定义PLC间内部通信,PLC间通信通过中间变量进行,力争在一个通信报文中完成所有的变量交换,我们定义了
功能码1:读中间变量,功能码2:写中间变量,功能码3:读写中间变量。
对于远程I/O:我们定义了6种功能码
功能码4:读开关量输入,功能码5:读开关量输出,功能码6:读写开关量输入输出,功能码7:读模拟量输入,功能码8:写模拟量输出,功能码9:读写模拟量编程方式
为了方便用户编程,我们抽象了网络通信,做到让用户编程为简单,定义了ENET通信的功能块,功能块如下图
EN通迅使能端,上升沿有效,激活时将启动本次通迅,断开时结束本次通迅,布尔类型;IPAddr:要通迅的控制器IP地址,字符串类型;RW:通迅使用的功能码,字节类型,共九种功能码;MRAddr:本机读数据存放地址,单字类型;YRAddr:远程读数据存放地址,单字类型;RLength:写操作的数据长度,单字类型;MWAddr:本机写数据存放地址,单字类型;YWAddr:远程写数据存放地址,单字类型;WLength:写操作的数据长度,单字类型;TimeOut:通迅超时时间,单字类型(单位:10ms);ENO:输出使能,布尔类型;Done:通迅状态,布尔类型,True为正常、False;为错误ErrMsg通迅状态码,0为正常
编程示例
只要把这个功能块使能,指定服务器的IP地址,起始地址,读写取长度,本地存储地址,无需用户编程干预,自动运行。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。