西门子达州PLC模块总代理商
- 报价
- 请来电询价
- 品牌
- 西门子
- 产品规格
- 模块式
- 产地
- 德国
- 关键词
- 西门子代理商,西门子模块代理商,西门子一级代理商,西门子PLC代理,西门子中国代理商
- 更新时间
- 2026-05-31 01:56
1 引言
广泛应用的PLC的数据管理能力与显示功能较差。如果将个人计算机与 PLC结合起来,二者实现优势互补,利用个人计算机强大的数据处理能力、丰富的应用软件和低廉的价格,可组成高性能价格比的控制系统,实现由上位机和PLC组成的控制系统的关键是二者之间的通信,本文给出了一种基于VC++的上位机和丰炜PLC串行通信的实现方法,首先介绍了丰炜PLC的串行通信协议,研究了丰炜PLC接受上位机的命令格式和数据帧格式;然后详细列举了几个VC++关于串行通信的bbbbbbs API,分别介绍了每个API函数的功能、原型和参数;后给出了基于VC++的上位机和丰炜PLC串行通信的参考程序。
2 总体结构
在本文的通信系统中,上位机选用面向对象的结构化程序设计语言Visual C++,使用Visual C++编写的程序具有代码尺寸小、运行速度快、移植能力强等优点,这些优点都是其它编程工具(Visual Basic、Delphi等)所不具备的。下位机选用丰炜VB1系列PLC,丰炜VB1系列PLC通讯功能完备,可满足复杂通讯需求。使用Visual C++实现串行通信主要有两种方法,一种方法是使用串行通信控件MSComm,另一种方法是使用bbbbbbs API。使用串行通信控件MSComm的方法方便快捷,用较少的代码可以实现相同的功能,从而提高了编程效率,减少了因编程不当而导致的系统不稳定因素;使用bbbbbbs API的方法功能强大,针对不同的要求,有多种不同的应用方式,灵活性更好,本文使用第二种方法。
基于VC++的上位机和丰炜PLC的串行通信连接如图1所示。
图1 上位机和PLC的通信连接
上位机端使用九针的DSUB,PLC端使用USB。DSUB的8脚(CTS)和USB的1脚(Vcc)相连;DSUB的3脚(TXD)和USB的2脚(D-)相连;DSUB的2脚(RXD)和USB的3脚(D+)相连;DSUB的5脚(GND)和USB的4脚(GND)相连;DSUB的4脚(DTR)和DSUB的6脚(DSR)相连。
2 丰炜PLC的串行通信协议
2.1丰炜PLC串行通信的命令格式
丰炜PLC接收上位机的命令格式如图2所示,通信格式由六个部分组成,分别是起始码、站号、命令、传输资料、结束码、检查码。
图2 命令格式
起始码是资料传输的开始字元,上位机传输命令给PLC时的起始码是STX,STX对应的ASCII Code是02H;PLC回传资料给上位机时的起始码是ACK,ACK对应的ASCII Code是06H。字元与ASCII Code的对应关系如表1所示。
表1 字元与ASCII Code的对应关系
站号是资料传输对象的辨识码,在通信系统中的每一台PLC都有一个站号,当上位机对PLC下达通信命令时,就是以站号指定要将命令下达给哪一台PLC。PLC内建的CP1固定为0号。命令是由上位机对PLC下达希望PLC执行的动作。关于命令的详细介绍如表2所示,在表中,给出了命令的内容、对应的命令码、命令的操作对象和命令的说明。
表2 命令和字元的对应关系
传输资料是资料传输的内容,可能包括错误码、资料位址、传输资料的长度、传输资料的内容值等。元件号码与资料位址的对照关系如表3所示。
表3 元件号码与资料位址的对照关系
结束码是资料传输的结束字元。结束码是ETX,ETX对应的ASCII Code是03H。检查码是将由站号开始一直到结束码为止的资料内容值全部加和,取后两位转换成ASCII Code作为检查码。在资料传输端和接受端均执行同样的检查码处理操作,可以确保传输资料正确无误。检查码的计算方法如图3所示。、
图3 检查码的计算方法
2.2丰炜PLC串行通信的数据帧格式
基于VC++的上位机和丰炜PLC进行串行通信的参数主要有:波特率为19200bps、1个起始位、7个数据位、偶校验、1个停止位,数据帧格式如图4所示。
图4 数据帧格式
3VC++关于串行通信的bbbbbbs API基于VC++的上位机和丰炜PLC的串行通信用到的bbbbbbs API函数主要有:CreateFile()、GetCommState()、SetCommState() 、PurgeComm()和WriteFile(),前四个函数完成串行通信的准备工作,WriteFile()函数完成数据的传输。
函数CreateFile()的功能是打开串口设备,函数原型如下:
HANDLE CreateFile(LPCTSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode,LPSECURITY_ATTRIBUTES lpSecurityAttributes,DWORD dwCreationDistribution, DWORD dwFlagsAndAttributes, hTemplateFile)
参数LPCTSTR lpFileName指定串口名称,如"COM1" 或 "COM2";参数DWORD dwDesiredAccess设置读写属性,一般为GENERIC_READ|GENERIC_WRITE;参数DWORD dwShareMode设置共享模式,在串行通信中必须设定为 0, 即不能共享;参数LPSECURITY_ATTRIBUTES lpSecurityAttributes设置安全属性,一般为NULL;参数DWORD dwCreationDistrib
ution设置创建方式,在串行通信中必须设置此值,在串行通信中设定为 OPEN_EXISTING;参数DWORD dwFlagsAndAttributes设置文件属性和标志;参数hTemplateFile设置临时文件的句柄,通常为NULL。函数CreateFile()如果调用成功,返回文件的句柄;如果调用失败,则返回INVALID_HANDLE_VALUE。
函数GetCommState()的功能是获取串口状态,函数原型如下:
BOOL GetCommState(HANDLE hFile, LPDCB lpDCB)
参数HANDLE hFile指定通信设备的句柄;参数LPDCB lpDCB指定DBC结构体的地址。
函数SetCommState()的功能是设置串口状态,函数原型如下;
BOOL SetCommState(HANDLE hFile, LPDCB lpDCB)
函数SetCommState()的参数与函数GetCommState()相同。打开通信设备后,需要对串口进行初始化工作,初始化工作通过DCB结构来进行,DCB结构包含了诸如波特率、数据位数、奇偶校验和停止位数等信息。在查询或配置串口的属性时,都要用DCB结构来作为缓冲区。调用GetCommState函数可以获得串口的配置,该函数把当前配置填充到一个DCB结构中。一般在用CreateFile打开串口后,可以调用GetCommState函数来获取串口的初始配置。要修改串口的配置,应该先修改DCB结构,然后再调用SetCommState函数用指定的DCB结构来设置串口。
函数PurgeComm()的功能是终止目前正在进行的读或写的动作,函数原型如下:
BOOL PurgeComm(HANDLE hFile, DWORD dwFlags https:// bbbbbb to perbbbb)
参数HANDLE hFile指定通信设备的句柄;参数dwFlags共有四种flags,PURGE_TXABORT是终止目前正在进行的写入动作;PURGE_RXABORT是终正目前正在进行的读取动作;PURGE_TXbbbbb是flush 写入的 buffer; PURGE_TXbbbbb是flush 读取的 buffer。调用PurgeComm()函数可以终止正在进行的读写操作,还可以清除输入或输出缓冲区中的内容。
函数WriteFile()的功能是将资料写入串口,函数原型如下:
BOOL WriteFile(HANDLE hFile, LPCVOID lpBuffer,DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped)
参数HANDLE hFile指定通信设备的句柄;参数LPCVOID lpBuffer设置写入字符串的首地址;参数DWORD nNumberOfBytesToWrite设置要写入的字符的个数;参数LPDWORD lpNumber
OfBytesWritten设置实际写入的字符的个数;参数LPOVERLAPPED lpOverlapp
ed设置i/o重构结,通常为NULL。
4 参考程序
参考程序的目的是在键盘上输入“0”,使PLC的Y0输出端导通(ON);在键盘上输入“1”,使PLC的Y1输出端导通(ON);在键盘上输入“a”,使PLC的Y0输出端关闭(OFF);在键盘上输入“b”,使PLC的Y1输出端关闭(OFF)。
以使Y0输出端导通(ON)为例,说明来计算上位机给PLC发送命令的内容的过程。起始码是字元STX,对应的ASCII Code是02H;站号是字元0,因为站号占用两个字元,所以实际站号是字元00,对应的ASCII Code是30H30H;使位元元件为ON的字元是70,对应的ASCII Code是37H30H;Y0对应的字元是0040,转换后的字元是0200,对应的ASCIICode是30H32H30H30H;结束码是字元ETX,对应的ASCII Code是03H; 30H、30H、37H、30H、30H、32H、30H、30H、03H加和的结果是18C,取后两位是8C,对应的ASCII Code是38H43H。综上,要实现Y0为ON,发送的数据为0x02,0x30,0x30,0x37,0x30,0x30,0x32,0x30,0x30,0x03, 0x38,0x43;同理可得:要实现Y0为OFF,发送的数据为0x02,0x30,0x30,0x37,0x31,0x30,0x32,0x30,0x30,0x03,0x38,0x44;要实现Y1为ON,发送的数据0x02,0x30,0x30,0x37,0x30,0x30,0x32,0x30,0x31,0x03,0x38,0x44;要实现Y1为OFF,发送的数据为0x02,0x30,0x30,0x37,0x31,0x30,0x32,0x30,0x31,0x03,0x38,0x45。
计算出上位机给PLC发送命令的具体内容后,利用bbbbbbs API函数就可以编写上位机的VC++程序,参考程序如下所示,本程序经过编译运行,达到了设计的要求。
#include <bbbbbbs.h>
#include <stdio.h>
#include <conio.h>
int main(int argc, char* argv[])
{
HANDLE myCOM=CreateFile(OM1 GENERIC_READ | GENERIC_WRITE, 0,
NULL, OPEN_EXISTING, 0, NULL);
if(myCOM== INVALID_HANDL
E_VALUE) printf("打开端口COM1失败!\n");
else printf("打开端口COM1成功!\n");
DCB my_dcb;
if(!GetCommState(myCOM,&my_dcb)) printf("打开端口COM1失败!\n");
else printf("读取端口COM1参数成功!\n");
my_dcaudRate=19200;
my_dcyteSize=7;
my_dcb.Parity=EVENPARITY;
my_dcb.StopBits=ONESTOPBIT;
my_dcb.fBinary=TRUE;
my_dcb.fParity=TRUE;
if(!SetCommState(myCOM,&my_dcb)) printf("设置端口COM1参数出错!\n");
else printf("设置端口COM1参数成功!\n");
if(!PurgeComm(myCOM,PURGE_TXABORT|PURGE_RXABORT|PURGE_
TXbbbbb|PURGE_RXbbbbb)) printf("清理端口COM1缓冲区出错!\n");
else printf("清理端口COM1缓冲区成功!\n");
unsigned char Y0_ON[12] =
{0x02,0x30,0x30,0x37,0x30,0x30,0x32,0x30,0x30,0x03,0x38,0x43};
unsigned char Y0_OFF[12] =
{0x02,0x30,0x30,0x37,0x31,0x30,0x32,0x30,0x30,0x03,0x38,0x44};
unsigned char Y1_ON[12]
{0x02,0x30,0x30,0x37,0x30,0x30,0x32,0x30,0x31,0x03,0x38,0x44};
unsigned char Y1_OFF[12] =
{0x02,0x30,0x30,0x37,0x31,0x30,0x32,0x30,0x31,0x03,0x38,0x45};
DWORD wCount = 0;
while(1)
{switch(getch())
{case WriteFile(myCOM, Y0_ON, 12, &wCount, NULL); break;
case WriteFile(myCOM, Y1_ON, 12, &wCount, NULL); break;
case WriteFile(myCOM, Y0_OFF, 12, &wCount, NULL); break;
case WriteFile(myCOM, Y1_OFF, 12, &wCount, NULL); break; } }
return(0);
5 结束语
本文介绍了一种基于VC++的上位机和丰炜PLC串行通信的实现方法。首先介绍了丰炜PLC的串行通信协议,研究了丰炜PLC接受上位机的命令格式和数据帧格式;给出了命令的具体内容的计算过程。然后介绍了VC++关于串行通信的bbbbbbs API,分别介绍了每个API函数的功能、原型和参数,使用bbbbbbs API实现上位机和PLC的串行通信,与使用串行通信控件MSComm的方法相比,功能更强,可移植性更好。后给出了基于VC++的上位机和丰炜PLC串行通信的参考程序,经过编译运行,实现了设计目的,该程序可应用于其它类型的PLC和上位机的串行通信,具有一定的参考价值。
磨机入口O2含量>=12%。
(7)煤气快开阀切断
炉膛内火焰熄灭时;
高炉煤气压力<=2.5kPa。
2.2煤粉喷吹系统自动化
喷煤系统主要包括制粉、收粉和喷吹几个系统。本规格书主要包括收粉系统中的煤粉仓及喷吹系统。
2.2.1工艺检测项目
(1)煤粉仓
●温度检测:正常值在50~80℃范围内,上限报警,提示有关人员注意。上上限报警,此时警示有关人员打开灭火氮气阀向煤粉仓内充氮气,并联锁停布袋,同时关闭所有卸粉阀,喷吹罐停喷。下限报警值:45℃。
●CO浓度检测:正常值在0~200ppm范围内,上限报警值300ppm,提示有关人员注意。上上限报警值:500ppm, 此时警示有关人员打开灭火氮气阀向煤粉仓内充氮气,并联锁停布袋,同时关闭所有卸粉阀,喷吹罐停喷。
●O2浓度检测:正常值在5%~10%范围内,上限报警值10%,提示有关人员注意。上上限报警,此时警示有关人员打开灭火氮气阀向煤粉仓内充氮气,并联锁停布袋,同时关闭所有卸粉阀,喷吹罐停喷。
●称重系统:正常值在0~80t范围内,上限报警值80t,自动联锁给煤机。上上限报警值90t, 此时自动关闭给煤机,布袋收粉器停止下料。
●料位检测:正常值在0~7m范围内,并作上下限报警。
●压力检测:正常值在0~0.2MPa范围内,上限报警值0.25Mpa。
(2)喷吹罐:温度检测:正常值在50~80℃范围内,上限报警值85℃,提示有关人员注意。上上限报警值:90℃,此时警示有关人员手动打开充压阀向喷吹罐内充氮气,并停机。下限报警值:75℃。
●压力检测:正常值在0~0.7MPa范围内,上限报警,此时警示有关人员手动打开紧急放散阀进行紧急放散。
●称重系统:正常值在0~10t范围内。
●吹喷速率:通过计算得出喷吹速率。
2.2.2主要调节控制要求
(1)氮气源管路氮气温度调节:根据工艺要求,氮气温度稳定在50℃;
(2)压缩空气总管温度调节:根据工艺要求,压缩空气温度稳定在50℃;
(3)煤粉仓流化管氮气流量调节:根据工艺要求,流化氮气流量应稳定在一个定值;
(4)煤粉仓灭火氮气压力调节:根据工艺要求,灭火氮气压力应稳定在一个定值;
(5)喷吹罐流化氮气流量调节:根据工艺要求,流化氮气流量应稳定在一个定值;
(7)喷吹罐二次风补气流量调节:根据工艺要求,压缩空气流量应稳定在600m3/h;
(8)喷吹罐补压调节:根据工艺要求,喷吹罐压力应稳定在一个定值;
(9)喷吹罐排压调节:根据工艺要求,喷吹罐压力与布袋入口压力之差应稳定在一个定值
喷吹工艺为并罐喷吹工艺,即每座高炉进行喷煤操作时,由两个喷吹罐组成一个喷吹罐组交替向高炉喷煤。
(1)煤粉仓
安全检测设有温度,氧浓度,一氧化碳浓度,上述检测项目在系统中设有临界报警值,当系统发出上限报警信号时,可由操作人员采取相应措施,当发生上限报警时,可接通灭火氮气管路进行紧急处理,同时可自动或手动停止喷吹(由现场人员定), 煤粉仓还设有料位指示及煤粉称重,煤粉仓的累积称重可以显示累积制粉量,也可用于仓内料位的上下限,报警,以便于平衡制粉和喷吹系统的物料平衡。煤粉仓下锥部设有流化床,对仓内煤粉连续进行流化。煤粉仓下面接有树叉状分料管,连有四个支管,每个支管上设有上、下卸粉阀,控制向四个喷吹罐给料。
(2)并联罐喷吹主体系统
喷吹罐为一压力容器,上面接有充压管路,补压管路,出口管路,流化管路,及放散和紧急放散管路,在开始喷吹操作时,需要关闭放散阀和紧急放散阀,出料口阀门,打开充压阀和流化阀门对喷吹罐进行一次充压,然后开启补压调节阀门调节罐内压力达到稳定的工作压力,在喷吹过程中,可通过调节阀门与罐内压力的连锁控制保证喷吹过程压力的稳定。喷吹量的调节可通过调节罐压和二次风量的方式实现。
喷吹罐的安全检测有温度和压力检测:在温度上上限报警时,如果当前喷吹罐没有进行喷吹操作,可打开充压阀门进行罐内气体的惰化操作,如果喷吹罐内压力为高压可启动喷吹系统暂时停机程序。
喷吹罐在放散过程中需通过调节阀控制放散气量,使布袋入口管道压力不能波动过大,以免影响制粉系统。可使调节阀与布袋入口压力连锁控制。
喷吹罐出口管路上安装有二次补气器,用于引入喷吹用压缩空气,压缩空气管路调节阀通过调节二次风量达到调节喷吹量的目的,也可在系统中预先设定阀门开度,使系统根据预先设定的喷煤量进行喷吹操作。喷吹量的调节可通过调节罐压和二次风量的方式实现。
煤粉分配器入口前有压力检测点,此处压力与高炉热风压力进行连锁比较,当小于设定值时,可将各支管三通球阀自动切换到吹冷风状态,同时喷吹系统自动停机。煤粉分配器入口前还接有氮气反吹管道,当输粉管路堵塞时,可将管中煤粉反吹到煤粉仓内。各支管在风口设备前也接入反吹氮气管道。
(3)喷吹系统控制过程
西门子PLC模块,变频器,触摸屏,交换机
从事智能科技、自动化科技、机电领域内的技术开发、技术转让、技术咨询、技术服务,工业自动化设备安装,工业自动化控制设备、电气设备、机申设备、电子产品、五金产品、金属材料、仪器仪表、橡塑制品销售,商务信息咨询,软件开发,建筑装修装饰建设工程专业施工,建筑安装工程(除特种设备),机械设备租赁(不得从事金融租赁),物业管理。工业自动化设备加工、销售。
本公司销售的一律为原装正品,假一罚十,可签正规的产品购销合同,可开增值税发票,税点另外算,24小时销售热线:15221406036 本公司销售的一律为原装正品假一罚十可签正规的产品购销合同可开增值税发票税点另外算24小时销售热线15221406036 西门子触摸屏代理商,西门子一级代理商,西门子中国授权总代理 ----浔之漫智控技术(上海)有限公司 本公司专业经销合信/CO-TRUST科思创西门子PLC;S7-200S7-300 S...