在该通信方式下,通信端口完全由用户程序所控制,通信协议也由用户设定。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每接收一个字节的数据都可以在相应的中断程序中对接收的数据进行处理。