通讯程序设计在自动化系统的应用越来越广泛,例如 plc 与操作界面的数据交换,通过通讯对变频器的控制, plc 的连网等等。 要想实现 plc 的通讯编程,首先所选的 plc 必须有强大的通讯能力,就是说 plc 的操作系统能够支持多种通讯格式,通常一种品牌的 plc 如果能够提供给用户更多的编程自由度,那么这种品牌的技术开发能力就越强大,大多数品牌只能提供固定格式的通讯格式或协议,这就大大局限了 plc 与其他智能设备的数据交换。 我们的 plc 产品具有 RS232 和光电隔离的 RS485 两个自由通讯口 , 两个通讯口可以同时收发数据,几乎可以适应所有通讯格式,可以提供 CRC 和 BCC 等多种校验方式。 以一台 PLC 通过 485 通讯控制多个某品牌的变频器为例: 如果该变频器的波特率是 9600b/s , 8 个数据位,奇校验, 1 个停止位。那么首先必须在 plc 的嵌入 C 窗口的初始化代码区编程一个通讯口设置语句: Set485Port(9600,o,8,1); 仅仅一个语句就完成了对 485 通讯口的编程。 由于 485 通讯必须设定主从关系,这里是 plc 控制多台变频器,所以 plc 必须设置为主,因此还需在初始化代码区增加一个地址和主从设定语句: SetAddress(1,MASTER); 事实上,对于主控制器来说,地址已经失去意义。 通讯口已经设置完毕,下面就是如何根据要求将数据发送给变频器。 例如一组 8 字节控制数据如下所示: 01h ----> 变频器编号 03h ----> 命令 21h ----> 两字节参数地址 02h 00h ----> 两字节参数 02h CRC ---> 两字节 CRC 校验马 CRC PLC 程序: Set485TBAddPointer(0); AddNumberTo485TB(0x1); AddNumberTo485TB(0x3); AddNumberTo485TB(0x21); AddNumberTo485TB(0x2); AddNumberTo485TB(0x0); AddNumberTo485TB(0x2); AddCRCTo485TB(); Start485Transmit();