自由口通讯概述---- 本例说明如何以自由协议实现计算机与 S7-200 的通信,计算机作为主站,可以实现对 PLC 从站各寄存器的读/ 写操作。---- 口发送指令到 PLC 的 PORT0 (或 PORT1 )口, PLC 通过 RCV 接收指令,然后对指令进行译码,译码后调用相应的读/写子程序实现指令要求的操作,并返回指令执行的状态信息。通信协议---- 在自由口模式下, 通信协议是由用户定义的。用户可以用梯形图程序调用接收中断、发送中断、发送指令( XMT ) 、接受指令( RCV ) 来控制通信操作。在自由口模式下, 通信协议完全由梯形图程序控制。指令格式定义计算机每次发送一个 33 字节长的指令来实现一次读/ 写操作, 指令格式见表 1 说明: 起始字符---- 起始字符标志着指令的开始, 在本例中被定义为 ASCII 码的"g" , 不同的 PLC 从站可以定义不同的起始字符以接收真对该 PLC 的指令。指令类型---- 该字节用来标志指令的类型, 在本例中 05H 代表读操作, 06H 代表写操作。目标 PLC 站地址---- 目标 PLC 站地址占用指令的 B2、 B3 两个字节, 以十六进制 ASCI I 码的格式表示目标 PLC 的站地址。目标寄存器地址---- 在 PLC 内部可以用 4 个字节来表示一个寄存器的地址( 但不能表示一个位地址) 。前两个字节表示寄存器类型,后两个字节表示寄存器号。 00 00(H):I 寄存器区 01 00(H):Q 寄存器区 02 00(H):M 寄存器区 08 00(H):V 寄存器区例如: IB000 的地址可表示为 00 00 00 00(H) VB100 的地址可表示为 08 00 00 64(H) 读/ 写字节数 M ---- 当读命令时, 始终读回从目标寄存器开始的连续 8 个字节的数据(转换为十六进制 ASCII 码后占用 16 个字节), 可以根据自己的需要取用, M 可以任意写入。---- 当写命令时,M 表示的是要写入数据的十六进制 ASCII 码所占用的字节数。例如要写入 1 个字节的数据,数据在指令中以十六进制 ASCII 码表示,它将占用 2 个字节,此时应向 M 中写入"02" 。同理, 如果要写入 5 个字节的数据, M 中应写入"0A" 。要写入的数据---- 要写入的数据在指令中以十六进制 ASCII 码的格式表示, 占用指令的 B14-B29 共 16 个字节。数据区必须填满,但只有前 M 个字节的数据会被写入目标寄存器。一条指令最多可以写入 8 个字节的数据(此时 M 中应写入"10" ,代表十进制的 16) BCC 校验码---- 在传输过程中, 指令有可能受到任何的干扰而使原来的数据信号发生扭曲, 此时的指令当然是错误的, 为了侦测指令在传输过程中发生的错误, 接收方必须对指令作进一步的确认工作, 以防止错误的指令被执行, 最简单的方法就是使用校验码。 BCC 校验码的方法就是将要传送的字符串的 ASCII 码以字节为单位作异或和, 并将此异或和作为指令的一部分传送出去; 同样地, 接收方在接到指令后, 以相同的方式对接收到的字符串作异或和,并与传送方所送过来的值作对比, 若其值相等,则代表接收到的指令是正确的,反之则是错误的。---- 在本例中, bcc 为指令 B1到 B29 的异或和, BCC 为 bcc 的十六进制 ASCII 码。----bcc=B1 xor B2 xor B3 xor B4 xor …… xor B29 结束字符---- 结束字符标志着指令的结束, 在本例中被定义为 ASCII 码的"G" , 不同的 PLC 从站可以定义不同的结束字符以接收真对该 PLC 的指令。 PLC 在接到上位机指令后,将发送一个 21 字节长反馈信息,格式见表2 说明: 起始字符---- 起始字符标志着反馈信息的开始, 在本例中被定义为 ASCII 码的"g" ,不同的 PLC 从站可以定义不同的起始字符,这样上位机可以根据信息的起始字符来判断反馈信息的来源。状态信息---- 该字节包含指令执行的状态信息,在本例中 01H 代表读取正确 02H 代表写入正确 03H 代表 BCC 校验码错误 04H 代表指令不合法数据区---- 反馈信息的 B3到 B18 为读指令所要读取的数据,以十六进制 ASCII 码表示。 BCC 校验码---- 与上位机指令中的 BCC 校验码类似,它是反馈信息 B3到 B18 的异或和。结束字符---- 结束字符标志着反馈信息的结束,在本例中被定义为 26H 。指令中为何要使用 ASCII 码---- 一条指令除包含数据外, 还包含必要的控制字( 起始字符、结束字符、指令类型等) 。如果指令中的
自由口通讯 来自淘豆网m.daumloan.com转载请标明出处.