昨天有几个小伙伴向我反馈了《工业串口通信之有话好好说》的读后感,感谢大家的支持哦,我们也将继续分享工业智能控制领域的技术和经验。细心的你也许已经发现,这里的文章都是分系列的,由浅入深,循序渐进。就"工业串口通信"这个系列而言,其实真正写起来的时候,我感觉要写的东西还挺多。这不,关于PLC的串口模块我就打算分三篇文章来介绍,第一篇文章介绍西门子 S7-300/400系列的CP340/CP341模块,第二篇介绍分布式系统中 ET200S 的1 SI模块,第三篇文章介绍中小规模的PLC S7-1200系列的串口模块CM1241。有没有感觉到工控技术像中华武术一样博大精深?不管你有没有这种感觉,我反正是有这种感觉。。。
好了,不扯了,开始介绍CP340/CP341啦。
CP是Communication processor的缩写,中文翻译为通信处理器。西门子PLC有很多CP模块,包括串行通信的、以太网通信的等等,不同类型的模块用数字进行区分。CP340/341都属于串行通信(serail communication),CP343用于以太网通信。今天这篇文章我们着重介绍CP340,然后介绍下CP341与CP340有什么区别。
在CP340家族中,西门子又根据总线标准(电气接口)的不同,分成三种产品。CP340-RS232(C);CP340-20mA-TTY;CP340-RS422/485;三种产品的订货号如下图:
RS232\RS422\RS485这三种电气接口标准我们在前面已经介绍过了,这里我们想简单介绍下20mA-TTY这种接口。20mA-TTY接口包含了2种接口类型:1)20mA 电流环接口;2)TTY接口;
第一种20mA电流环接口:该接口是美国电子工业协会(EIA)未正式颁布的一种串行通信接口标准(未正式颁布使用都挺广泛,厉害了EIA),与各种现代数字通信方式不同,该标准使用模拟量电流信号进行通信,由于不需要复杂的编码、解码工作,使得通信变得很简单;另外由于电流环与生俱来的抗干扰能力,在噪声环境复杂的工业现场具有很高的可靠性。
20mA电流环用4mA表示零信号,用20mA表示满量程信号,而低于4mA高于20mA的信号用于各种故障的报警。具体信息请看下面的表格:
第二种TTY接口:也是一种电流环,但是它用电流的有无来表示数字量的0和1,电流的大小约等于20mA(即20mA表示逻辑1,0mA表示逻辑0)。TTY可以理解为一种数字量的电流环。TTY由于没有国际标准,各厂家的TTY不一定通用。
CP340-20mA-TTY的外观如下图:
CP340-20mA-TTY的9针串口的定义如下:
再来看看常用的RS232电气标准。
CP340-RS232C使用标准的9针D型公头连接器,支持标准的RS232电气信号,所有的引脚均与电源隔离。
CP340-RS232的外观如下:
下图是CP340前面板打开的示意图:
该模块有三个LED灯,SF(Sysem Faults)为"系统故障"灯,点亮时为红色,表示有系统错误;TxD(Transmit Data)为"发送数据"灯,点亮时为绿色,表示正在发送数据;RxD(Receive Data)为"接收数据"灯,点亮时为绿色,表示正在接收数据。
CP340需要通过总线连接器与背板总线相连接,以获取电压和与CPU进行通信。总线连接器如下图:
CP340所有的模块(RS232\RS422\RS485\20mA-TTY)均支持ASCII协议,3964(R)协议和打印机协议(专门向打印机输出串行数据),下面我们来说说CP340的硬件组态及软件编程。
打开“博途V13”在“硬件目录(hardware catalog)”中选择“通信模块(communication modules)”-“点对点”(point-to-point),找到CP340模块,根据你的需要选择相应电气接口的模块,如下图:
在示例程序中,我们组态了三种通信模块,选择任何一个模块,在其下方的属性框中,可以选择不同的协议(Protocol):
如果你选择ASCII协议的话,需要对传输速率,数据位,停止位,奇偶校验等参数进行配置。
PLC软件编程:
1)发送数据:在“指令框(Instructions)”中找到"通信处理器(communication processor)"-"PtP link:CP340",选择"P_Send(Send data)"
编程界面STL语言的显示如下:
这里包含了输入参数和输出参数,我们来详细介绍下各个参数的含义:
1.1)输入参数:
1.11)REQ:请求发送数据(上升沿);
1.12)R:取消发送数据的请求,锁闭发送功能;
1.13)LADDR:CP340的地址,需要跟硬件组态相一致;
1.14)DB_NO:数据块号,不能为0;
1.15)DBB_NO:数据块字节号,范围从0到8190;
1.16)LEN:发送的数据长度,以字节为单位,范围从1到1024;
1.2)输出参数:
1.21)DONE:传输完成且没有错误(STATUS==16#00)
1.22)ERROR:传输未完成,有错误发送,错误信息存放在STATUS参数中;
1.23)STATUS:状态值,若ERROR==1,STATUS包含错误的代码;
2)接收数据:
接收数据使用功能块"P_RCV",如下图:
同样的我们介绍下功能块的输入和输出参数:
2.1)输入参数
2.11)EN_R:使能数据读取功能;
2.12)R:取消数据读取;
2.13)LADDR:CP340的地址,需要跟硬件组态相一致;
2.14)DB_NO:数据块号,不能为0;
2.15)DBB_NO:数据块字节号,范围从0到8190;
2.2)输出参数:
2.2.1)NDR:读取到新数据且没有错误;
2.2.2)ERROR:读取工作未完成,有错误发送,错误号存在STATUS中;
2.2.3)LEN:读取到的数据的长度,以字节为单位,范围从1到1024;
2.23)STATUS:状态值,若ERROR==1,STATUS包含错误的代码;
发送和读取过程中的错误代码(部分)如下图:
到这里,我们已经把CP340的模块的分类,硬件的组态和软件的编程都给大家介绍完毕了,接下来我们用对比的方法简单介绍下CP341。
可以说CP340是S7-300/400系列PLC串行通信的比较经济的解决方案,它能够满足工业环境中比较简单的串行通信的需求,也相对便宜(大约人民币2600元左右);但是它的速度比较慢,最大波特率为9600baud,而且不支持Modbus协议;
CP341是CP340的升级版,它除了支持CP340的三种通信协议(ASCII,9364R,printer)外,还支持Modbus和RK512,支持的最大波特率为115200 baud。当然,价格也相对贵一些(大约人民币3600元左右)。
西门子同样根据串行电气接口的不同,把CP341分成三种类型,其订货号如下图:
关于接线、硬件组态和软件编程,CP341和CP340是类似的,可以参考上述对CP340介绍的方法。
好啦,今天我们就先聊到这里了,希望读过这篇文章后你能有很多的收获。下一篇文章我们将介绍ET200S的串行模块 1SI,不见不散哦。
长按扫描下面的二维码,关注“方正智芯”的原创文章,提供工业控制领域的技术和经验的分享,持续关注,持续进步。
点击这里下载本文的PDF版本:
发表评论