PLC与上位机之间的通信一般是通过RS 232C或RS 422常用接口协议实现的。其信息交换的方式为字符串方式,运用该通道,容易配置一个与外部计算机(如个人计算机和主机)进行通信的系统。
PLC与上位机一般采用RS 232接口协议的异步串行方式。图9-1所示是C200HS与上位机通信的接口连线。
PLC与上位机的数据通信是以“帧”为单位进行的,帧的格式如图9-2和图9-3所示,命令帧由上位机发送给PLC,应答帧为PLC接收到命令帧后自动向上位机发送的应答信号。
图9-1 通信连接
图9-2 命令帧
(www.xing528.com)
图9-3 应答帧
在帧的传送格式中,“@”为起始符号;节点号为PLC的编号(00~31),由PLC的DM6648、DM6653设置,如果只有一个下位机PLC,则其节点号为00;识别码说明帧的功能,例如,RD和WD分别为读和写DM数据区的内容;FCS为2字符的帧的检查顺序码,即从帧起始到帧报文结束(FCS)之前数据异或运算后的结果,用来检查帧的传送结果;∗和CR为终止符,表明帧结束。例如,命令帧@00RD20100003FCS∗CR表示计算机要求读出PLC中DM数据区D2010开始的3个通道的数据内容,应答帧@00RD004A02344D001C FCSCR中的结束码为“00”,表明通信有效,接收的3个通道的数据分别为4A02、344D、001C(16进制)。
在PLC与上位机通信之前,必须对RS232通信端口进行初始化,使两者按相同的格式通信。初始化参数包括比特率、起始位、数据位、停止位和奇偶校验位等。PLC的RS 232通信口一般设置为9600bit/s、1个起始位、7个数据位、2个停止位、偶校验,因而只需对上位机的RS232端口进行初始化即可。
上位机的通信程序用C语言设计,C语言提供了专门用于串行通信的函数bioscom(),其格式为:
int bioscom(int cmd,char byte,int port)
port为上位机的串行口代码,port=0为COM1,port=1为COM2;byte为串行口初始化参数,当byte=0XFE时,设置的串行口通信参数为:9600bit/s、1个起始位、7个数据位、2个停止位、偶校验,与C200HS串行口的通信方式相同;cmd为功能参数,cmd=0时初始化串行口,cmd=1时发送数据,cmd=2时接收数据,cmd=3时读串行口的当前状态。bio-scom()返回值为一个2B的整数,可以据此判别数据发送和接收是否成功:发送数据时的最高位为“1”,表示发送出错;接收数据时的高位字节不为“0”,表示通信有错;当高位字节为“0”时,其低位字节即为接收到的字符。
通信程序框图如图9-4所示。由于每次传送数据时,单帧的最大数据容量为131个字符,因此当传送的数据超过131个字符时,应当在传送前分成若干帧,分段传送,第一帧和中间帧的结尾处用定界符(回车符CR)替代终止符(∗CR)。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。