西门子S7-200系列plc有通信方式有三种:一种是点对点(PPI)方式,用于与该公司PLC编程器或其它人机接口产品的通信,其通信协议是不公开的。另一种为DP方式,这种方式使得PLC可以通过Profibus-DP通信接口接入Profibus现场总线网络,从而扩大PLC的使用范围。最后一种方式是自由口通信(Freeport)方式,由用户定义通信协议,实现PLC与外设的通信。以下采用自由口通信方式,实现PC与S7-200系列PLC通信。
1. PC与西门子S7-200系列PLC通信连接
PC为RS232C接口,S7-200系列自由口为RS485。因此PC的RS232接口必须先通过RS232/RS485转换器,再与PLC通信端口相连接,连接媒质可以是双绞线或电缆线。西门子公司提供的PC/PPI电缆带有RS232/RS485转换器,可直接采用PC/PPI电缆,因此在不增加任何硬件的情况下,可以很方便地将PLC和PC的连接,如图1所示。也可实现多点连接。
图1 PC与S7-200系列PLC的连接
2. 西门子S7-200系列PLC自由通信口初始化及通信指令
在该通信方式下,通信端口完全由用户程序所控制,通信协议也由用户设定。PC机与PLC之间是主从关系,PC机始终处于主导地位。PLC的通信编程首先是对串口初始化,对S7-200PLC的初始化是通过对特殊标志位SMB30(端口0)、SMB130(端口1)写入通信控制字,设置通信的波特率,奇偶校验位、停止位和字符长度。显然,这些设定必须与PC的设定相一致。SMB30和SMB130的各位及含义如下:
其中,校验方式:00和11均为无校验、01为偶校验、10为奇校验;字符长度:0为传送字符有效数据是8位、1为有效数据是7位;波特率:000为38400baud、001为19200baud、010为9600baud、011为4800baud、100为2400baud、101为1200baud、110为600baud、111为300baud;通信协议:00为PPI协议从站模式、01为自由口协议、10为PPI协议主站模式、11为保留,缺省设置为PPI协议从站模式。
XMT及RCV命令分别用于PLC向外界发送与接收数据。当PLC处于RUN状态下时,通信命令有效,当PLC处于STOP状态时通信命令无效。
XMT命令将指定存储区内的数据通过指定端口传送出去,当存储区内最后一个字节传送完毕,PLC将产生一个中断,命令格式为 XMT TABLE,PORT,其中PORT指定PLC用于发送的通信端口,TABLE为是数据存储区地址,其第一个字节存放要传送的字节数,即数据长度,最大为255。
RCV命令从指定的端口读入数据存放在指定的数据存储区内,当最后一个字节接收完毕,PLC也将产生一个中断,命令格式为RCV TABLE,PO RT,PLC通过PORT端口接收数据,并将数据存放在TBL数据存储区内,TABLE的第一个字节为接收的字节数。
在自由口通信方式下,还可以通过字符中断控制来接收数据,即PLC每接收一个字节的数据都将产生一个中断。因而,PLC每接收一个字节的数据都可以在相应的中断程序中对接收的数据进行处理。
3.通信程序流程图及工作过程
在上述通信方式下,由于只用两根线进行数据传送,所以不能够利用硬件握手信号作为检测手段。因而在PC机与PLC通信中发生误码时,将不能通过硬件判断是否发生误码,或者当 PC与 PLC工作速率不一样时,就会发生冲突。这些通信错误将导致PLC控制程序不能正常工作,所以必须使用软件进行握手,以保证通信的可靠性。
由于通信是在PC机以及PLC之间协调进行的,所以PC机以及PLC中的通信程序也必须相互协调,即当一方发送数据时另一方必须处于接收数据的状态。如图2、图3所示分别是PC、PLC的通信程序流程。
图2 PC机通信程序流程图
图3 S7-PLC通信程序流程图
通信程序的工作过程:PC每发送一个字节前首先发送握手信号,PLC收到握手信号后将其传送回PC,PC只有收到PLC传送回来的握手信号后才开始发送一个字节数据。PLC收到这个字节数据以后也将其回传给PC,PC将原数据与PLC传送回来的数据进行比较,若两者不同,则说明通信中发生了误码,PC机重新发送该字节数据;若两者相同,则说明PLC收到的数据是正确的,PC机发送下一个握手信号,PLC收到这个握手信号后将前一次收到的数据存入指定的存储区。这个工作过程重复一直持续到所有的数据传送完成。
采用软件握手以后,不管PC与PLC的速度相差多远,发送方永远也不会超前于接收方。软件握手的缺点是大大降低了通信速度,因为传送每一个字节,在传送线上都要来回传送两次,并且还要传送握手信号。但是考虑到控制的可靠性以及控制的时间要求,牺牲一点速度是值得的,也是可行的。
PLC方的通信程序只是PLC整个控制程序中的一小部分,可将通信程序编制成PLC的中断程序,当PLC接收到PC发送的数据以后,在中断程序中对接收的数据进行处理。PC方的通信程序可以采用VB、VC等语言,也可直接采用西门子专用组态软件,如STEP7、WinCC。