在现代工业控制系统中,PLC以其高可靠性、适应工业过程现场、强大的联网功能等特点,被广泛应用。可实现顺序控制、PID回路调节、高速数据采集分析、计算机上位管理,是实现机电一体化的重要手段和发展方向。但PLC无法单独构成完整的控制系统,无法进行复杂的运算和显示各种实时控制图表和曲线,无良好的用户界面,不便于监控。将个人计算机(PC)与PLC结合起来使用,可以使二者优势互补,充分利用个人计算机强大的人机接口功能、丰富的应用软件和低廉的价格优势,组成高性能价格比的控制系统。
推进系统中,PC机选用工控计算机。它是整个控制系统的核心,是上位机。其主要利用良好的图形用户界面,显示从PLC接收的开关量和控制手柄的位置,进行一些较复杂的数据运算,并且向PLC发出控制指令。
PLC是该系统的下位机,负责现场高速数据采集(控制手柄的位置),实现逻辑、定时、计数、PID调节等功能,通过串行通讯口向PC机传送PLC工作状态及有关数据,同时从PC机接受指令,向蜂鸣器、指示灯、滑油泵、控制手柄的位置等发出命令,实现PC机对控制系统的管理,提高了PLC的控制能力和控制范围,使整个系统成为集散控制系统。
计算机与PLC之间的通信是建立在以RS232标准为基础的异步双向通信上的,FX系列PLC有其特定的通信格式,整个通信系统采用上位机主动的通信方式,PLC内部不需要编写专门的通信程序,只要把数据存放在相应的数据寄存器中即可,每个数据寄存器都有相应的物理通信地址,通信时计算机直接对物理通信地址进行操作。通信过程中,传输字符和命令字以ASCⅡ码为准,常用的字符及其ASCⅡ码对应关系。
计算机与PLC进行通讯时,计算机与PLC之间是以帧为单位进行信息交换的,其中控制字符ENQ、ACK、NAK,可以构成单字符帧发送和接受,其余的信息帧发送和接受时都是由字符STX、命令字、数据、字符ETX以及和校验5部分组成。
校验和在信息帧的尾部用来判断传输的正确与否,和校验码的计算方法是将命令码到ETX之间的所有字符的ASCⅡ码(十六进制数)相加,取所得和的最低2位数,在后面的通信程序设计里面还会提到。进行差错检验的方法很多,常用的有奇偶校验码,水平垂直冗余校验LRC。
目前广泛使用的是CRC校验码,它能查处99%以上18位或更长的突出错误,而在计算机与PLC点对点的短距离通讯时,出错的几率较小,因而采用校验和法,基本能满足要求。在Windows的一个进程内,包含一个或多个线程,每个线程共享所有的进程资源,包括打开的文件、信号标识及动态分配的内存等等。
一个进程内的所有线程使用同一个32位地址空间,而这些线程的执行由系统调度程序控制,调度程序决定哪个线程可执行和什么时候执行线程。线程有优先级别,优先权较低的线程必须等到优先权较高的线程执行完任务后再执行。在多处理器的机器上,调度程序可以把多个线程放到不同的处理器上运行,这样可以使处理器的任务平衡,也提高系统的运行效率。
Windows内部的抢先调度程序在活动的线程之间分配CPU时间,Windows区分两种不同类型的线程,一种是用户界面线程(UserInterfaceThread),它包含消息循环或消息泵,用于处理接收到的消息;另一种是工作线程(WorkThread)它没有消息循环,用于执行后台任务、监视串口事件的线程即为工作线程。
本系统采用MFC编程方法,MFC是把串口作为文件设备来处理的,它用CreateFile()打开串口,并获得一个串口句柄,用SetCommState()进行端口配置,包括缓冲区设置,超时设置和数据格式等。然后调用函数ReadFile()和WriteFile()进行数据的读写,用WaitForSingleObject()监视通信事件。在用ReadFile()和WriteFile()读写串口时,一般采用重叠方式。因为同步I/O方式是当程序执行完毕才返回,这样会阻塞其他线程,降低程序执行效率。而重叠方式能使调用的函数立即返回,I/O操作在后台进行,这样线程就可以处理其他事务,同时也实现了线程在同一串口句柄上实现读写操作。
使用重叠I/O方式时,线程要创建OVERLAPPED结构供读写函数使用,该结构最重要的成员是hEvent事件句柄。它将作为线程的同步对象使用,读写函数完成时hEvent处于有信号状态,表示可进行读写操作;读写函数未完成时,hEvent被置为无信号。
利用Windows的多线程技术,在辅助线程中监视串口,有数据到达时依靠事件驱动,读入数据并向主线程报告;并且,依靠重叠读写操作,让串口读写操作在后台运行。
4.上位计算机通信程序设计
以读取PLC输出线圈Y0为首的2个字节的数据为例,编写一个通信程序。查PLC软元件地址表可知,输出线圈Y0的首地址为00A0H,2个字节的数据即为Y0-Y7和Y10-Y17,根据返回的数据,就可以知道PLC此时的状态,以实现对PLC的监控。在每一次读操作之前,先要进行握手联络。对PLC发请求讯号ENQ,然后读PLC的响应讯号。如果读到的响应讯号为ACK,则表示PLC已准备就绪,等待接收通讯数据。
BOOLCPlcComDlg::ReadFromPLC(char*Read_char,char*Read_address,intRead_bytes)
{CSerialSerial;//用于串行通讯的类
if(Serial.Open(1))//初始化串行通讯口COM1
{Serial.SendData(&ENQ_request,1);//发送联络讯号
Sleep(20);//等待20ms秒
Serial.ReadData(&read_BUFFER,1);//读取PLC响应讯号
if(read_BUFFER==ACK){
……
Serial.SendData(&STX_start,1);//向PLC发送“开始”标志代码
Serial.SendData(&CMD0_read,1);//发送“读”命令代码
datasum_check+=CMD0_read;
for(i=0;i《4;i++){
Serial.SendData(&Read_address[i》,1);//发送起始元件地址的ASCⅡ代码
……
Serial.SendData(&ETX_end,1);//发送结束标志代码
Change_to_ASCII(senddatasum_CHECK,datasum_check);//将“和”转化成ASCⅡ代码
Sleep(40);//等待PLC的反应
……
Serial.ReadData(&Read_char[i》,1);//读Read_bytes个字节
if(*readdatasum_CHECK==*readdatasum_check)//“和”效验
{AfxMessageBox(“数据读取成功!”);
returnTRUE;}
else{AfxMessageBox(“校验错误!”);
returnFALSE;}}
}
5.结束语
本文作者创新点:笔者提出了一种基于多线程的PC机与PLC的通讯,该通讯程序采用VC比用VB具有更好的实时性;并采用MFC编程方法用重叠结构读写串口,使串口读写在后台进行。该通讯程序可靠、可移植性好。
本通讯程序作为该系统的一个重要组成部分,经现场调试证明,既简单又实用,具有很好的实用价值。同时,该系统具有直观的人机界面和方便的操作方式,具有广阔的应用前景。
上一篇:关于智能RFID系统在工业控制中的多种应用
下一篇:工业控制中无源信号和有源信号的应用分析
推荐阅读
史海拾趣
1920年,一位年轻而聪明的科学家山谬·鲁本(Samuel Ruben)和另一位年轻而富有的钨丝电线制造商菲立普·马洛里(Philip Rogers Mallory)在一次偶然的机会中相遇。鲁本到马洛里公司寻找实验设备,两人在交谈中共同意识到将发明天赋和制造力量结合起来的巨大机会。这个巧合开启了他们的合作之旅,最终导致了金霸电池的诞生。鲁本的发明为当时的电池科技带来了革命性的改变,奠定了DURACELL公司坚实的基础。
为了进一步扩大市场份额和品牌影响力,DURACELL公司积极寻求品牌授权合作。通过在全球范围内与相关企业进行合作开发,DURACELL公司成功将品牌延伸到更多领域和地区。这种合作模式不仅为DURACELL公司带来了更多的市场机会,也推动了整个电池行业的发展。
Eurosil Electronics Ltd公司成立于XXXX年,由一群热衷于电子科技研发的工程师创立。在成立初期,公司专注于半导体材料的研究与开发,致力于提高半导体的性能与稳定性。经过数年的努力,Eurosil成功研发出一种新型半导体材料,具有更低的能耗和更高的可靠性,这一技术突破为公司赢得了业界的广泛认可,也奠定了其在电子材料领域的重要地位。
面对日益激烈的市场竞争,Eurosil始终保持对研发的投入和关注。公司不断引进新技术、新设备,加强研发团队的建设,推动产品升级和产业升级。通过持续的创新,Eurosil在电子行业中保持了领先地位,并为客户提供了更加先进、高效的产品解决方案。
随着市场竞争的加剧,ECC意识到单纯的技术创新已经不足以保持领先地位。因此,公司开始注重产品品质的提升。ECC引入了严格的质量管理体系,从原材料采购到生产流程,再到成品检测,每一个环节都严格把控。这一举措使得ECC的产品质量得到了显著提升,赢得了客户的广泛信任。
随着技术的不断进步和市场需求的不断变化,Elekon意识到只有不断创新才能保持竞争力。因此,公司加大了研发投入,致力于技术创新和产品升级。经过多年的努力,Elekon成功开发出一系列具有自主知识产权的电子产品,包括高性能的集成电路、智能传感器等。这些新产品的推出不仅丰富了Elekon的产品线,也提升了公司的市场竞争力。
各位大侠好,小弟问个简单的问题。 首先交代背景,前几天用单片机做了个板子,部分图在附件 也就是 P0口都接了上拉电阻,然后P0和P2.2~P2.7,P3.4~P3.5都分别接了几个指示灯,然后P2.0~P2.1和P1口接的是串转并的芯片74HC164,但 ...… 查看全部问答∨ |
|
如题,我做低功耗,按键唤醒和RTC唤醒共用。 我用RTC 闹钟3秒没问题,时间准。设置1秒唤醒的时候就出问题了,唤醒时间变成了2秒钟,而我必须要用1秒,怎么办呢?不进入低功耗也是准的。 另外,我进入低功耗STOP模式后,按键唤醒就很迟钝, ...… 查看全部问答∨ |
|
我的板子是6713和FPGA通过HPI口相连的,现在要从FPGA向6713的外部的SDRAM传一帧的图像,我看了HPI的datasheet,按照上面写的步骤和所要求的时序写了程序,结果HPIC寄存器写进去了(是通过CCS的工具直接看的HPIC寄存器的值,HPIA和HPID没办法看), ...… 查看全部问答∨ |
下载地址:hxxp://files.i*a*r.com/ftp/pub/box/CD-EWARM-6401-3812.zipxx换成tt,去掉*和谐文件: ST官方授权代理,专营STM8/32QQ 940436962http://y-ec.taobao.com/… 查看全部问答∨ |
经过几天的研究,终于把OK210开发板wince红外驱动的部分给完成了。开发工具:vs2005,飞凌官方OK210开发板,杜邦线3根,烙铁一把,焊锡,4.7k电阻一个。开发软件:Win CE 6.0下图是所需的开发工具 从网上找了好久,不是不能用,就是骗子代码,根本 ...… 查看全部问答∨ |
|
昨天收到的板子,跑了十几里地到快递处取件,然后去网吧下载光盘和资料,一直下载到天黑,三个大文件居然才百分之十都不到,蜗速,回家还下雨,好悲剧。用笔记本连板子开机,正常,收快递的时候当场拆封的,建议大家以后收快递也当场拆封,你懂的。 ...… 查看全部问答∨ |
不论是5.5版本还是6.0版本,安装都出现错误,提示都是 什么杀毒软件没关啊,下载出错啊,无论是离线安装,还是在线安装都不行,重装系统,第一时间装CCS也不行。现在我都要崩溃了!偶尔装上一次,根本没有USB FET驱动,用驱动精灵安装,提示可以安 ...… 查看全部问答∨ |
- MIUI代码曝光小米12系列手机:共有三款
- 近一万二的Surface首碎照公布!用户痛心:太脆弱
- 华为P50 Pro 5G内部测试版真机曝光:搭麒麟9000
- 部分谷歌Pixel 6/Pro出现屏幕问题:闪烁绿屏、多一个挖孔
- IDC:受芯片和供应链问题困扰 三季度全球手机出货量降6.7%
- 小米推出新款120W氮化镓充电器:用Type-C接口,体积更小
- OPPO K9s上手体验,大电池高刷屏电竞小金刚
- Android 12L为折叠屏优化,三星Galaxy Z Fold3 5G将率先使用
- Redmi Note 11 Pro+上手:双十一档120W快充小金刚
- Redmi Note 11系列:全新配色设计 Pro+搭载120W快充