用VC++实现与S7-226 PLC与上位机的通信
1 引言
将pc机与可编程控制器组合起来,充分利用pc机强大的人机接口功能、丰富的应用软件和低廉的价格来共同实现管理、控制一体化成为一个新的发展趋势。pc 机和可编程控制器之间的互联通讯,是实现管理、控制一体化的技术关键。
vc++是现今最复杂,但是也是功能最强大的一种windows应用程序开发工具,在图形处理和数据库管理等方面具有较强的功能,这对要求实时性比较高的生产现场显得尤为重要。如何利用vc++开发串行通讯程序来实现pc机和plc之间的实时通讯成为了一个难点。
锌液流量控制系统由二级计算机系统构成。上位机为一台工控机ipc610,根据产量要求对加入8座铅塔的粗锌液流量进行设定、监视和记录。下位机为8套西 门子公司的s7-226型号的plc。在上位机输入给定流量值,将数据从上位机传送到plc,实现二者之间的通讯。系统结构框图如图1所示。
2 上位机的通信编程
上位机可以采用事件驱动方式或查询方式处理和下位机的数据通讯。
(1) 事件驱动方式
通讯控件属性sthreshold和rthreshold,设置产生发送或接收中断,在通讯事件处理程序中根据事件属性commevent做相应处理,适用于定长数据块的传送。
(2) 查询方式
查询方式实质上也是事件驱动,但在有些情况下,这种方式更加便捷。在程序的每个关键功能以后,可以通过检查commevent属性的值来查询事件和错误。 如果应用程序较小,并且是自保持的,这种方法更可取。我们这里的这个程序就是利用这种方式来实现的。
图1 系统结构框图
这里我们利用了vc++6.0提供的通讯控件mscomm编写出所需的串行通信程序,该控件用到了一系列的属性和用户接口,用户用get…函数得到属性的当前值,用set…函数设置属性值。
现在开始编写上位机的通信程序:
a) 首先打开vc++6.0,建立一个基于对话框的工程,在对话框中添加如附表中列出的控件:
b) oninitdialog()函数中添加初始化串口参数的代码
bool csetvaluedlg::oninitdialog()
{ …….
m_comm.setcommport(1); // 选择com2
if(!m_comm.getportopen())
m_comm.setportopen(true); //打开串口
//设置9600波特率,8位数据位,无校验,1 //位停止位
m_comm.setsettings(“9600,n,8,1”);
m_comm.setinputmode(1); //置为二进制输入 //方式
m_comm.setinputlen(0); //设置为在读操作 //时读取接收缓冲区中的所有数据
// 设置为发送缓冲区每发送一个字符引发一次oncomm事件
相关文章
- 2024-09-10一种基于计算机控制的接触式测厚仪
- 2024-03-29并联天平静态标定研究
- 2024-10-21随机振动试验前的参数估算
- 2023-11-27基于最小二乘法的智能校验方法
- 2023-04-23双通道红外光谱辐射计的研制及标定



请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。