西门子模块6ES7216-2BD23-0XB8型号大全
西门子S7-200系列PLC是工业场合应用广的现场控制设备之一,S7-200系列PLC支持自由端口、MPI、PPI和Moddus等通讯方式。自由端口方式需要用户自己制定通讯协议,PLC与上位机两端都需要编写相应的协议程序,实现复杂、难度较高。西门子的Step7 MicroWin编程软件使用PPI(Point to Point)协议连接PLC,利用PPI协议可以调试\下载PLC程序、传输数据,但西门子并未公开PPI协议内容。Modbus是工业控制现场广泛应用的通讯协议,在嵌入式领域,嵌入式主板通常采用Modbus与PLC相连,英创嵌入式工控主板就提供了基于串口和TCP的Modbus软件包,但PLC要支持Modbus协议同样需要相应的程序编写,同时Modbus协议会占用一定的PLC中断和代码资源。
S7-200系列PLC的编程通讯接口内部固化了PPI通讯协议,如果上位机软件能利用PPI协议读写PLC,就可以省去PLC的通讯程序编写。为了方便嵌入式工控主板与PLC连接,我们分析了PPI通讯协议格式,把操作PLC的常用指令封装成了简单的API接口函数,利用这些函数可以实现设置PLC工作模式、读取PLC型号信息、读写PLC存储器等功能。
ESM6802是预装WEC7.0(或Linux)的i.MX6 双核嵌入式工控主板,板载了双网口,双CAN,7串口,4-USB PCIe x1、精简ISA等多种通讯接口,同时ESM6802提供了RGB、LVDS和HDMI三种显示接口,可以支持从320×240分辨率的低成本LCD到1920×1080的全高清显示屏。下面将以运行WEC7.0操作系统的ESM6802作为上位机,介绍WCE工控主板如何使用PPI协议连接S7-200 PLC。
1、硬件连接
S7-200系列PLC的编程通讯接口为RS485电平,安装Step7 MicroWin的PC机通过PC/PPI通讯线缆连接PLC。PC/PPI通讯线缆完成了RS232电平到RS485电平的转换,其RS232端与计算机串口相连,RS485端与PLC的编程通讯口相连。ESM6802同样使用PC/PPI线缆连接PLC,ESM6802的COM3口为RS232电平,PC/PPI线可直接插到ESM6802的COM3口上使用,ESM6802与PLC的硬件连接方法如下所示:
图1 ESM6802与S7-200 PLC的硬件连接
2、软件实现
PPI是点到点的主从协议, PLC的通讯接口缺省情况下工作在PPI从(slave)模式,以便接收来自Step7 MicroWin编程软件的数据,Step7 MicroWin自然工作在PPI主(master)模式。ESM6802在与PLC相连时,ESM6802作为上位机工作在主模式,PLC通讯接口为缺省的从模式。
下面是我们基于PPI协议封装的操作PLC的API函数,详细的函数说明可参考ppi.h头文件。
// 功能描述: 设置相应串口的通讯参数,
HANDLE PPI_OpenPort(LPCTSTR lpPortName);
// 功能描述: 关闭PPI使用的串口设备
BOOL PPI_ClosePort(HANDLE hPort);
// 功能描述: 设置ppi通讯的超时时间,单位为毫秒。默认超时时间为ms
int PPI_SetTimeout(HANDLE hPort, int nMilliseconds);
// 功能描述: 设置两次ppi通讯之间的间隔时间,单位为毫秒。默认时间间隔为ms
int PPI_SetPollDelay(HANDLE hPort, int nMilliseconds);
// 功能描述: 设置设置本机的PPI地址,默认本机地址为x00
BOOL PPI_SetLocalAddress(HANDLE hPort, UINT8 bLocalAddr);
// 功能描述: 与指定的PLC握手
int PPI_FindPLC(HANDLE hPort, UINT8 bSlaveAddr);
// 功能描述: 读取指定PLC的型号和保护等级
int PPI_GetPLCID(HANDLE hPort, UINT8 bSlaveAddr, UINT8 cpuId[], UINT8 *pProtectionLevel);
// 功能描述: 设置PLC工作在RUN模式或STOP模式
int PPI_SetPlcMode(HANDLE hPort, UINT8 bSlaveAddr, int nMode);
// 功能描述: 读PLC指定存储器数据
int PPI_Read(HANDLE hPort, UINT8 bSlaveAddr, LPCSTR lpStorageAddress, UINT8 *pNumofRead, UINT8 readData[]);
// 功能描述: 写PLC指定存储器数据
int PPI_Write(HANDLE hPort, UINT8 bSlaveAddr, LPCSTR lpStorageAddress, UINT8 *pNumofWrite, UINT8 writeData[]);
下图是在WEC7工控主板ESM6802上运行的利用PPI API操作PLC的Demo程序,程序实现了搜索PLC、设置PLC工作模式、获取PLC型号信息以及读写PLC存储器等功能。
图2 在WCE上运行的操作PLC的例子程序
ESM6802具有相当丰富的通讯接口,与突出控制功能的PLC可以形成良好的功能互补,同时ESM6802对大屏显示器的支持也适合用做PLC控制系统的状态监控人机交互终端。
PPI API以lib库的形式提供,可以在英创所有WCE工控主板上运行,图2所示的Demo程序提供源代码参考,感兴趣的用户可与英创联系索要。
在工业控制中,某些输入量(如压力、温度、流量、转速等)是连续变化的模拟量,某些执行机构(如伺服电动机、调节阀、记录仪等)要求PLC输出模拟信号,而PLC的CPU只能处理数字量。模拟量首先被传感器和变送器转换为标准的电流或电压,如4~20mA,1~5V,0~10V,PLC用A/D转换器将它们转换成数字量。这些数字量可能是二进制的,也可能是十进制的,带正负号的电流或电压在A/D转换后一般用二进制补码表示。
D/A转换器将PLC的数字输出量转换为模拟电压或电流,再去控制执行机构。模拟量I/O模块的主要任务就是完成A/D转换(模拟量输入)和D/A转换(模拟量输出)。
例如在炉温控制系统中,炉温用热电偶检测,温度变送器将热电偶提供的几十毫伏的电压信号转换为标准电流(如4~20mA)或标准电压(如l~5V)信号后送给模拟量输入模块,经A/D转换后得到与温度成比例的数字量,CPU将它与温度设定值比较,并按某种控制规律(如PID)对二者的差值进行运算,将运算结果(数字量)送给模拟量输出模块,经D/A转换后变为电流信号或电压信号,用来调节控制天然气的电动调节阀的开度,实现对温度的闭环控制。
有的PLC有温度检测模块,温度传感器(热电偶或热电阻)与它们直接相连,省去了温度变送器。
大中型PLC可以配置成百上千个模拟量通道;它们的D/A,A/D转换器一般是12位的。模拟量I/O模块的输入、输出信号可以是电压,也可以是电流;可以是单极性的,如0~5V,0~10V,1~5V,4~20ms,也可以是双极性的,如 50mV,±5V,±10V和±20mA,模块一般可以输入多种量程的电流或电压。
A/D,D/A转换器的二进制位数反映了它们的分辨率,位数越多,分辨率越高,例如8位A/D转换器的分辨率为2-8=0.38%;模拟量输入/输出模块的另一个重要指标是转换时间。
PLC主要由CPU模块、输入模块、输出模块和编程器组成(见图1),有的PLC还可以配备特殊功能模块,用来完成某些特殊的任务。
1.CPU模块
CPU模块主要由微处理器(CPU芯片)和存储器组成。在PLC控制系统中厂CPU模块相当于人的大脑,它不断地采集输入信号,执行用户程序,刷新系统的输出;存储器用来储存程序和数据。
2.I/O模块
输入(1nput)模块和输出(Output)模块简称为I/O模块,它们是系统的眼、耳、手、脚,是联系外部现场设备和CPU模块的桥梁。
输入模块用来接收和采集输入信号,开关量输入模块用来接收从按钮;选择开关、数字拨码开关、限位开关、接近开关、光电开关、压力继电器等过来的开关量输入信号;模拟量输入模块用来接收电位器、测速发电机和各种变送器提供的连续变化的模拟量电流、电压信号。
开关量输出模块用来控制接触器、电磁阀、电磁铁、指示灯、数字显示装置和报警装置等输出设备,模拟量输出模块月手来控制调节阀、变频器等执行装置。
图1 PLC控制系统示意图
CPU模块的工作电压一般是5V,而PLC的输入/输出信号电压一般较高,如直流24V和交流220V。从外部引入的尖峰电压和干扰噪声可能损坏CPU模块中的元器件,或使PLC不能正常工作。在I/O模块中,用光耦合器、光电晶闸管、小型继电器等器件来隔离PLC的内部电路和外部的I/O电路,I/O模块除了传递信号外,还有电平转换与隔离的作用。
3.编程器
编程器用来生成用户程序,并用它进行编辑、检查、修改和监视用户程序的执行情况。手持式编程器不能直接输入和编辑梯形图,只能输入和编辑指令表程序,因此又叫做指令编程器。它的体积小,价格便宜,一般用来给小型PLC编程,或者用于现场调试和维护。
使用编程软件可以在计算机的屏幕上直接生成和编辑梯形图、指令表、功能块图和顺序功能图程序,并可以实现不同编程语言的相互转换。程序被编译后下载到PLC,也可以将PLC中的程序上传到计算机。程序可以存盘或打印,通过网络,还可以实现远程编程和传送。
4.电源
PLC一般使用220V交流电源或24V直流电源。内部的开关电源为各模块提供DC 5V,±12V,24V等直流电源。小型PLC一般都可以为输入电路和外部的电子传感器(如接近开关)提供24V直流电源,驱动PLC负载的直流电源一般由用户提供。
三菱公司的FX系列PLC是比较具有代表性的微型PLC,除具有基本的指令表编程以外,还可以采用梯形图编程及对应机械动作流程进行顺序设计的SFC(Sequential Function Chart)顺序功能图编程,而且这些程序可以相互转换。在FX系列PLC中设置了高速计数器扩大了PLC的应用领域。
1 FX2N系列PLC外部结构
FX2N系列PLC的硬件结构可以参考图1-4中带扩展模块的PLC,图中表示出主机如何扩展,通信接口位置等。
图1-8为FX2N-64MR的主机外形图。其面板部件如图中注释。详细I/O端子编号见图1-9。采用继电器输出,输出侧左端4个点公用一个COM端,右边多输出点公用一个COM端。输出的COM比输入端要多,主要考虑负载电源种类较多,而输入电源的类型相对较少。对于晶体管输出其公用端子更多,图1-10为FX2N-16MT的输出端子。
2 FX系列PLC型号的含义
在PLC的正面,一般都有表示该PLC型号的符号,通过阅读该符号即可以获得该PLC的基本信息。FX系列PLC的型号命名基本格式如下:
序列号:0、0S、0N、2、2C、1S、2N、2NC。
I/O总点数:10~256。
单元类型:M—基本单元;
E—输入输出混合扩展单元及扩展模块;
EX-输入专用扩展模块;
EY-输出专用扩展模块。
输出形式:R-继电器输出;
T-晶体管输出;
S-晶闸管输出。
特殊品种区别:D-DC电源,DC输入;
A1-AC电源,AC输入;
H-大电流输出扩展模块(1A/1点);
V—立式端子排的扩展模块;
C—接插口输入输出方式;
F-输入滤波器1ms的扩展模块;
L-TTL输入扩展模块;
S-独立端子(无公共端)扩展模块。
若特殊品种一项无符号,说明通指AC电源、DC输入、横排端子排;继电器输出:2A/点;晶体管输出:0.5A/点;晶闸管输出:0.3A/点。
例如:FX2N-48MRD含义为FX2N系列,输入输出总点数为48点,继电器输出,DC电源,DC输入的基本单元。又如FX-4EYSH的含义为FX系列,输入点数为0点,输出4点,晶闸管输出,大电流输出扩展模块。
FX还有一些特殊的功能模块,如模拟量输入输出模块、通信接口模块及外围设备等,使用时可以参照FX系列PLC产品手册。
FX2N系列17种基本单元(CPU单元或主机单元)见表2。
表2 FX2N系列17种(AC电源、DC输入)基本单元