西门子6GK7243-1EX01-0XE0产品信息
1.前言
可编程控制器(PLC)作为一种高性能的工业现场控制装置,已广泛地用于工业控制的各个领域。目前,工业自动控制对PLC的网络通信能力要求越来越高, PLC与上位机之间、PLC与PLC之间都要能够进行数据共享和控制。
飞剪控制系统要求在远离PLC的控制室里,实时监控电机、供纸、刀辊等设备。上位机为普通PC机,下位机为 SIEMENS S7-222 PLC。在实际开发中,采用自由口通信模式,自定义 PC与 PLC的通信协议,用Step7编写PLC端的通信程序,而在 PC端用VC6.0实现串行通信的控制和监控界面的显示。
2.通信方式及原理
S7-200系列PLC通信方式有三种:一种是点对点(PPI)方式,用于与西门子公司的PLC编程器或其它产品通信,其通信协议是不公开的。另一种为DP方式,这种方式使得PLC可通过Profibus的DP通信接口接入现场总线网络,从而扩大PLC的使用范围。后一种方式是自由口(FreePort)通信方式,由用户定义通信协议,实现PLC与外设的通信。本系统中采用自由口通信方式。它是S7-200系列PLC一个很有特色的功能。这种方式不需要增加投资,具有较好的灵活性,适合小规模控制系统。自由口通信在物理接口上要求双方都使用RS485接口,波特率高为38400bps。PC机的标准串口为RS232,但西门子公司提供的PC/PPI电缆带有RS232 /RS485电平转换器,在不增加任何硬件的情况下,可以很方便地将PLC和PC机互联。
2.1自由口模式的初始化
PLC的自由口模式通信编程是对串口初始化。对S7-200PLC的初始化是通过对特殊存储字节SMB30(端口0)写入通信控制字,来设置通信的波特率、奇偶校验、停止位和数据位数。显然,这些设定必须与上位机设定值相一致。还可选择通信模式和主从站模式,各具体存储位内容可参考SIMATIC S7-200系统手册。
2.2自由口模式下收发数据
初始化自由端口通信模式后,就可以进行数据的收发。
(1) 发送数据指令 XMT
格式:XMT Table,Port。可以用 XMT指令发送数据,XMT指令激活发送缓冲区(从Table开始的变量存储区)中的数据。数据缓冲区的个数据指明了要发送的字节数,Port指明了用于发送的端口,缓冲区多可以有255个字符。在发完缓冲区的后一个字符时,会产生一个中断 (对端口 0为中断事件9)。本例的XMT缓冲区的格式如表1。其中,状态字节表示PLC是否正确接收了上位机所传数据;上传数据为PLC上传给PC的数据,需将9字节的16进制数编码为18字节的ASIIC码,字节数为18;BCC为上传数据的异或和,同样将16进制数编码为ASIIC码;结束字符的值为26。
表1 发送缓冲区
表2 接收缓冲区
RCV Table,Port。用 RCV指令接收多为255个字符的数据,这些字符存储在缓冲区中。在接收到结束字符时,会产生一个中断(对端口 0为中断事件23)。本例的RCV缓冲区的格式如表2。其中,命令类型表示上位机让PLC 执行什么操作,如读或写;目标站号是分配给PLC的一个代号;起始地址是PLC要进行读写的存储区的起始地址;读写字节数是PLC接到命令后,对存储区进行读写的字节数,本例中多写入16字节、读出9字节;写入数据是上位机要写入PLC的数据,对于读命令不起作用;BCC是从命令类型开始到写入数据为止的43字节数据的异或和。从目标站号到BCC这几项内容,都是把16进制数编码为ASIIC码来表示的。
3.自由口通信程序设计
通信程序的设计需遵循一定的规则,如中断通信处理程序要短小精悍、要避免XMT与RCV指令在一个端口执行等。整个PLC通信程序包括主程序、通信初始化子程序、校验子程序、读写数据子程序和发送完成、接收完成中断服务程序。
3.1主程序
通信主程序是PLC实现接收、发送功能的主框架。其主要流程为查询接收是否完成,校验,再根据命令类型执行读、写等操作。它的作用是控制程序的主流程,校验、读写等具体工作由相应的子程序完成。流程如图1。
3.2通信初始化程序
通信初始化子程序设置自由口通信的有关参数,对接收信息控制寄存器SMB87写入控制字,定义起始字符、结束字符和接收超时。设好自由口模式的这些参数后,还要连接中断事件和中断服务程序,并打开中断。后,把接收、发送缓冲区写入初值即可。
3.3校验子程序
每次PLC接收完1帧数据,就调用此子程序进行校验。进入子程序后,先清除接收完成标志位,再计算所接收数据的校验和BCC。如果正确,还要检验结束字符是否为‘G’。不是的话,说明数据报文长度不对或传输过程中发生了错误,需要向上位机返回相应的出错信息。流程如图2。
图1 主程序流程图
图2 校验子程序流程图
3.4读、写数据子程序
这2个子程序的任务是把PLC存储区中的数据发给上位机或把上位机传来的数据写入PLC存储区。二者的流程相似,只是数据流向不同。进入子程序后,先停止接收,完成数据传输,后发送应答报文。不同之处就是应答报文中的状态字节:读操作时是1、写操作时是2。
3.5接收、发送完成中断服务程序
当PLC接收到结束字符后产生中断(事件号9)或数据发送结束后产生中断(事件号23),这两个服务程序被执行。接收完,先把接收完标志置1,启动接收。发送完,先清除校验正确标志,再把接收缓冲区中的结束字符和计算出的接收BCC结果清零,后启动接收。
由于是半双工通信,PLC无论是发送和接收完数据后,都必须将通信口设置成接收状态。否则,PLC就接收不到任何数据了。
4.上位机的通信编程
上位机通过RS232口与PLC进行通信,bbbbbbs环境串口通信程序利用VC6编写。VC6编写串口通信程序通常有MSCOMM控件和通信API两种方法。二者各有优缺点。MSCOMM控件封装了微机串口通信的基本功能,使用者只需设置一些基本参数,就可以通过串口收发数据了。这种方法简单,易于编程人员使用,现在已有很多例子供参考。用通信API编写串口程序相对复杂一些。开发者要直接使用bbbbbbs提供的一组API函数来完成上述控件封装好的功能。使用API编程比使用控件更复杂,但也更灵活。通信控件已经封装好的功能是无法改变的,而使用API就能针对通信协议编写效率更高的代码。
在飞剪控制系统的上位机程序中,使用通信API编写了串口读写的模块。接收时,程序要查找起始字符‘g’,以确定1帧数据的开始;再根据下一个状态字节判断通信的正确性;后,把长度为23字节的数据帧接收好,并准备接收下一帧。发送过程不用判断数据内容,执行发送函数即可。需要注意的是:由于PLC通信口是半双工的,在PLC向上位机上传数据时,上位机要等1帧数据接收完毕,再执行发送操作,以避免收发冲突。
图3 上位机串口通信流程图
本文主要分析了PLC数字量输入模块(DI模块)和传感器仪表的几种常见的接口电路形式,针对DI模块内部输入电路和传感器输出接口电部的不同结构,给出了其相互连接时的接线方法,确保在以后的工程设计中仪表选型和现场施工接线的正确性。
1 引言
在工程设计和现场施工中,常会遇到各种各样的仪表接线的问题,只有完全理解了仪表传感器的内部接线方式,以及PLC内部电路结构,才能正确的选型,保证所选仪表与厂家的PLC的正确接线。就必须对PLC输入输出模块内部的输入输出电路和常用仪表输出接口有一个比较清楚系统的了解。
为了防止外界线路产生的干扰引起PLC的非正常工作,甚至对PLC内部元器件造成损坏,PLC数字量输入模块(简称DI模块)的输入接口电路常采用光电耦合元件来隔离输入信号与内部电路之间的联系。输入端的信号驱动光电耦合器内部发光二极管,发光二极管发光,光敏三极管导通,即可将外部输入信号可靠地传输至处理器。
各厂商PLC DI模块公共端的接口电路,有光电耦合器正极共点与负极共点之分,而各种仪器仪表的输出电路,有干接点、有源输出、高电平和低电平输出之分,我们在选配外部仪表传感器时,需要对所选PLCDI模块的输出电路,以及传感器仪表输出电路的结构进行区分和了解,才能正确的选型,以保证后期现场施工时与PLC厂家DI模块的正确接线。
2 PLC DI模块按输入类型分类
PLC DI模块的输入接口电路,按外接电源类别,可分为直流和交流输入电路;按输入公共端电流的流向分,可分为源输入和漏输入电路;按光耦发光二极管公共端的连接方式可分为共阳极和共阴极输入电路。
3按外接电源的类型分类
3.1 直流输入电路
图1为直流输入电路(只画出了一路输入电路),直流输入电路的输入电压一般为DC24V。直流输入电路要求外部输入信号为无源的干接点(直流电源由PLC柜内部提供)或直流有源的无触点开关接点,当外部输入接点信号闭合时,输入端与直流电源正极接通,电流通过电阻R1,光电耦合器内部LED,VD1(接口指示)到COM端形成回路;光敏三极管饱和导通,该导通信号传送至处理器,从而CPU认为该路有信号输入。当外部输入元件与直流电源正极断开时,光耦中的发光二极管熄灭,光敏三极管截止,CPU认为该路没有信号输入。直流电源可以由PLC柜内部提供,也可以是外接直流电源。(http://www.diangon.com/版权所有)
3.2 交流输入电路
如图2为交流输入电路,交流输入端的输入电压一般为120V或230V。电路要求外部输入信号的接点为无源干接点信号或交流有源的无触点开关接点信号。它与直流输入电路的区别在于:光电耦合器前增加了一级降压电路和整流桥电路。交流电流经电阻R的限流和电容C的滤波(滤去电源中的直流部分),再经过桥式整流,变成降压后的直流电流,后续的电路原理与直流输入电路一致。从图中可以看出,由于交流输入电路中增加了限流、隔离和整流三个环节,输入信号的延迟时间要比直流输入电路长,这是其不足之处。但由于其输入端是高电压,其输入信号的可靠性比直流输入电路高。交流输入电路一般多用于油雾、粉尘等恶劣环境中,对响应性要求不高的场合,而直流输入方式用于环境较好,电磁干扰不严重,对响应时间要求较高的场合。
4按流入公共端电流的流向分类
PLCDI模块内部将所有输入电路(光电耦合器)的一端连接到公共端(COM或M),各输入电路的另一端接到其对应的输入端,也称此结构为单端共点输入。这种做法可以减少输入端子。
电流从DI模块的输入端流出,流入电源负极,即为拉电流(SinkCurrent)或漏型输入;电流由电源正极流入公共端,电源正极与公共端相连,即共阳极;传感器为低电平有效。
电流由电源正极流入DI模块输入端,即为灌电流(SourceCurrent)或灌型输入;电流由公共端流入电源负极,电源负极与公共端相连,即共阴极;传感器为高电平有效。
4.1 漏型拉电流输入电路
漏型拉电流输入电路如图3所示,此时,电流从输入端流出,流入直流电源的负极,由直流电源的正极流入PLC公共端(COM端或M端)。
4.2 源型灌电流输入电路
源型输入电路如图1所示,此时,电流的流向正好和漏型的电路电流从直流电源正极流入DI模块的输入端,并由公共端流入直流电源的负极。
4.3 切换型输入电路
为了适应各地区的使用习惯,有些厂家PLCDI模块的内部公共端子是采用S/S端子,此端子可以与电源的24V+(正极)或24V-(负极)相连,结合外部仪表接线的变化,使DI模块的输入电路既可以是漏型输入电路,也可以是源型输入电路。较采用公共端(COM端或M端)的DI模块更灵活。S/S端子的发展是为了适用日系与欧系PLC混合使用的工控场合,起到通用的作用,S/S端子也称之SINK/SRCE可切换型。其电路形式如图4所示。作为源输入时,公共端接电源的负极;作为漏输入时,公共端接电源的正极。这样,可以根据现场的需要来接线,给接线工作带来极大的灵活。通过选择可以将基本单元的所有输入设置为漏型输入或是源型输入,但不能混合使用。
漏型拉电流输入电路、源型灌电流输入电路以及切换型输入电路,均为直流输入电路。
5 传感器开关量信号的内部电路及其与PLC输入电路的连接
在工程设计过程中,常会遇到各种各样的输出为开关量信号的仪表,如:压力开关、流量开关、物位开关、温度开关、阀门状态反馈、电机的运行状态、故障状态等。这些传感器的输出电路的样式多种多样。需要对它们充分了解,才能保证与所选的PLC的DI模块进行匹配接线。
5.1无源干接点
阀门等的限位开关、行程开关、电机远程/就地按钮开关、拉线开关、跑偏开关、电机运行状态的继电器触点等,属于无源干接点信号,不存在电源的极性因素,比较简单,接线容易,可应用于以上各种类型的DI输入模块。
5.2有源两线制传感器
有源两线传感器(如接近开关等),分直流与交流,直流两线制开关分二极管极性保护图5与桥整流极性保护图6,前者在接PLC时需要注意极性,后者就不需要注意极性。
直流两线制开关量仪表与漏型拉电流PLC DI模块的接线如图7所示:
直流两线制开关量仪表与源型灌电流PLC DI模块的接线如图8所示:
交流两线制开关量仪表与源型灌电流PLC的接线如图9所示:
5.3 有源三线传感器
传感器的输出信号,除了像行程开关、继电器触点等一些干接点信号外,一些传感器还提供NPN和PNP集电极开路输出信号。其实质就是利用三极管的饱和和截止,输出两种状态,即高电平和低电平信号,属于开关型传感器。PNP与NPN型传感器的输出信号是截然的。对于不同厂商的PLCDI模块输入电路,选用NPN还是PNP型输出的传感器,有时会感到无所适从。下面主要介绍一下这两种输出类型的传感器与PLCDI模块输入电路的接线。