您现在的位置是:首页 > PLC技术 > PLC技术

自由端口模式下PLC串行通信的实现

来源:艾特贸易2017-06-04

简介一、应用背景与需求 西门子 S7-200 系列 PLC 本机带有一个或两个 485 物理接口,此 485 接口具有 3 种通信协议: PPI 、自由通信协议和 PROFIBUS 协议。 所谓自由通信协议是指由用户定义通信

    一、应用背景与需求    西门子S7-200系列PLC本机带有一个或两个485物理接口,此485接口具有3种通信协议:PPI、自由通信协议和PROFIBUS协议。    所谓自由通信协议是指由用户定义通信协议,用户可以通过设置特殊寄存器的参数改变485接口的数据传输率、数据格式(数据位数、停止位、校验),以适应不同的通信协议。自由通信协议可以将CPU与任意通信协议公开的设备联网,如上位计算机、打印机、变频器等。    CPU的串行通信接口可由用户程序控制,这种操作模式称为自由端口模式,梯形图程序可以使用接收完成中断、字符接收中断、发送完成中断、发送指令和接收指令来控制通信过程。也就是说,在自由端口模式下通信协议完全由用户程序控制。    本例是在10.3节介绍了西门子S7系列PLC网络通信技术的基础上,详细介绍S7-200的自由端口通信模式的使用和编程方法,并给出编程实例加以说明。    二、自由端口初始化与参数设置    1.自由端口初始化    CPU处于STOP模式时,自由端口模式被禁止,CPU重新建立使用其他协议的通信,例如与编程设备的通信等。只有当CPU处于RUN模式时,才能使用自由端口模式。    通过向SMB30SMB130的协议选择域(mm)1,可以将通信端口设置为自由端口模式(见表10.8)。处于该模式时,不能与编程设备通信。    实际使用中,可以用反映CPU模块上的工作方式开关当前位置的特殊存储器位SM0.7来控制自由端口模式的进入。当SM0.71时,方式开关处于RUN位置,可选择自由端口模式;当SM0.70时,方式开关处于TERM位置,应选择PC/PPI协议模式,以便于用编程设备监视或控制CPU模块的操作。    SMB30用于设置端口0通信的数据传输率和奇偶校验等参数。CPU模块如果有两个端口,SMB130用于端口1的设置。当选择代码mm=10 (PPI/主站)CPU成为网络的一个主站,可以执行NETRNETW指令,在PPI模式下忽略27位。    10.8    特殊存储器字节SMB30SMB130的定义
特殊存储器字节SMB30和SMB130的定义
    2.接收指令的参数设置    接收指令RCV允许选择报文开始和报文结束的条件,如表10.9所示。表中,SM86SM94用于端口0SM186SM194用于端口1    10.9    特殊存储器字节SMB86SMB94SMB186SMB194的定义
特殊存储器字节SMB86~SMB94,SMB186~SMB194的定义
    在执行RCV指令时,有以下几种判别报文起始条件的方法。    (1)空闲线检测:il=1sc=0bk=0SMW90SMW190>0。在该方式下,从执行RCV指令开始,在传输线空闲的时间大于等于SMW90SMW190中设定的时间之后接收的第一个字符作为新报文的起始字符。    (2)起始字符检测:il=0sc=1bk=0,忽略SMW90SMW190。以SMB88中的起始字符作为接收到的报文开始的标志。    (3) break检测:U=0sc=0bk=1,忽略SMW90SMW190。以接收到break作为接收报文的开始。    (4)对通信请求的响应:U=1sc=0bk=0SMW90SMW190=0(设置的空闲线时间为0)。执行RCV指令后就可以接收报文。若使用报文超时定时器(c/ni=1),它从RCV指令执行后开始定时,时间到时强制性地终止接收。若在定时期间没有接收到报文或只接收到部分报文,则接收超时,一般用它来终止没有响应的接收过程。    (5) break和一个起始字符:il=0sc=1bk=1,忽略SMW90SMW190。以接收到的break之后的第—个起始字符作为接收信息的开始。    (6)空闲线和一个起始字符:il=1sc=1bk=0SMW90SMW190>0。以空闲线时间结束后接收的第一个起始字符作为接收信息的开始。    (7)空闲线和起始字符(非法):U=1sc=1bk=0SMW90SMW190=0。除了以起始字符作为报文开始的判据外(sc=1),其他的特点与(4)相同。    SMB87.3/SMB187.30时,SMW92/SMWl92为字符间超时定时器,为1时为报文超时定时器。字符间超时定时器用于设置接收的字符间的最大间隔时间。只要字符间隔时间小于该设定时间,就能接收到所有信息,而与整个报文接收时间无关。    报文超时定时器用于设置最大接收信息时间,除(4)(7)中所述特殊情况外,其他情况下在接收到第一个字符后开始定时,若报文接收时间大于该设置时间,将强制终止接收,不能接收到全部信息。上述两种定时器的定时时间到时均强制结束接收,在SMB86/SMB186中都表现为接收超时。    接收结束条件可用逻辑表达式表示为:结束条件=ec+tmr+最大字符数,即在接收到结束字符、超时或接收字符超过最大字符数时,都会终止接收。另外,在出现奇偶校验错误(如果允许)或其他错误的情况下,也会强制结束接收。    三、程序设计要考虑的几个问题    计算机与可编程控制器通信时,为了避免通信中的各方争用通信线,一般采用主从方式,即计算机为主机,可编程控制器为从机,只有主机才有权主动发送请求报文( Request Message,或称为请求帧),从机收到后返回响应报文。    使用PC/PPI电缆连接计算机和CPU模块,在自由端口模式下进行串行通信是,要考虑以下几个问题。    1.电缆切换时间    使用PC/PPI电缆和自由端口通信功能可以实现S7-200 CPURS-232标准兼容的设备的通信。一般采用带RS-232口的隔离型PC/PPI电缆,用电缆盒上的DIP开关来设置通信的数据传输率。    当数据从RS-232传送到RS-485口时,PC/PPI电缆是发送模式。当数据从RS-485传送到RS-232口时,PC/PPI电缆是接收模式。检测到RS-232的发送线有字符时,电缆立即从接收模式切换到发送模式。RS-232发送线处于闲置的时间超过电缆切换时间时,电缆又切换到接收模式。这个时间与电缆上的DIP开关设置的数据传输率有关,如表10.10所示。    10.10    S7-300/S7-400 MPI全局数据通信性能
S7-300/S7-400 MPI全局数据通信性能
    S7-200 CPU的用户程序中应考虑电缆的切换时间。    ·S7-200CPU接收到RS-232设备的请求报文后,到它发送响应报文的延迟时间必须大于等于电缆的切换时间,可用定时中断实现切换延时。    ·如果S 7-200CPU发送请求报文,在接收到RS-232设备的响应报文后,S7-200 CPU下一次发出请求报文的延迟时间也必须大于等于电缆的切换时间。    2.异或校验    异或校验(或求和校验)是提高通信可靠性的重要措施之一。异或校验是将每一帧中的第一个字符(不包括起始字符)到该帧中正文的最后一个字符作异或运算,并将异或的结果(异或校验码)作为报文的一部分发送到接收端。接收方计算出接收到的数据的异或校验码,并与发送方传送过来的校验码比较,如果不同,可以判定通信有误。    这里给出一个计算异或校验码的PLC子程序,表10.11给出了子程序的局部变量表。子程序的输入变量为地址指针PNT和字节数NUMB,输出变量为校验码XORC    10.11    计算异或校验码子程序的局部变量表
计算异或校验码子程序的局部变量表
    3.防止起始字符、结束字符与数据字符混淆   因为报文的起始字符和结束字符只有8位,接收到的报文数据区内出现与起始字符或结束字符相同的数据字符的机率很大,它们可能会与起始字符和结束字符混淆。可以在发送前对数据作某种处理,例如选择起始字符和结束字符为某些特殊的值,将数据字符转换为BCD码或ASCII码后再发送,接收方收到后将数据字符还原为原来的数据格式,这样可以避免出现上述的情况,但是会增加编程的工作量和数据传送的时间。    接收字符中断可以对收到的每一个字符进行判断或处理,也能解决数据字符与结束字符混淆的问题。例如发送方在报文中提供发送的数据字符的字节数,接收方在字符中断程序中对接收到的数据字符计数,据此来判断是否应停止接收报文。不过,采用这种方式会增加中断程序的处理量和中断处理的时问。    四、编程实例    下面的例子采用主从通信方式,计算机为主机,可主动向可编程控制器发出报文,后者收到后进行异或校验。若校验正确,返回接收到的数据;若校验后发现有传送错误,将校验错误指示位Q1.01    对通信程序的要求是:使用RCV指令和接收完成中断接收数据,报文格式如表10.12所示,CPU模块在接收时检测起始字符和结束字符。校验码为报文中“数据字节数”字节与数据区各字节的异或和。VB90存放CPU计算出的异或校验结果,VB91VB99分别存放计算机发送来的校验码和数据区字节数。    10.12    接收缓冲区的数据
接收缓冲区的数据
接收缓冲区的数据
接收缓冲区的数据
    PC/PPI电缆连接计算机与PLC,下载程序,将PLC置于RUN状态。可以使用10.4节提供的实现计算机与PLC串行通信的Visual Basic程序发送数据,计算机应接收到PLC返回的相同的数据。    五、总结与评价    西门子公司的S7-200系列小型PLC的功能强、性能价格比高,在国内更是应用广泛。S7-200支持多种通信模式,如点点接口(PPI)、多点接口(MPI)等。PPI等通信协议主要用于西门子系列产品之间的通信;自由口通信可由用户控制串行通信接口,实现用户自定义的通信协议。    在工业控制过程中,常常需要用一台上位机去控制多台PLC,实现分散控制与集中管理,以构成分布式控制系统。在PC端利用MSComm控件(如10.4节所举的实例),在S7-200 PLC端利用自由端口通信,实现它们之间的信息交换,可以构成一个简单的分布式控制系统。因此,自由端口模式下实现串行通信,为S7-200 PLC与其他设备之间的联网通信提供了一种廉价和灵活的方法。