登录
|
注册会员
开启辅助访问
设为首页
收藏本站
扫一扫关注官方微信
论坛
BBS
M币充值
M currency prepaid phone
M币获取
附件中心
搜索
search
全新论坛MCU智学网上线,欢迎访问新论坛!稀缺资源、技术干货、参考设计、原厂资料尽在MCU智学网
MCU资讯论坛
»
论坛
›
单片机论坛
›
单片机应用于方案
›
用VC实现PC机与永宏PLC的通讯
更新自动建库工具PCB Footprint Expert 2023.13 Pro / Library Expert 破解版
用VC实现PC机与永宏PLC的通讯
[复制链接]
1924
0
ad***
管理员
发表在
电源技术
2014-4-16 15:35:51
|
查看全部
|
阅读模式
本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要
登录
才可以下载或查看,没有帐号?
注册会员
x
1 引言
近年来,随着大规模集成电路的发展,可编程控制器得到了迅速的发展,并广泛应用于各种领域中。由于可编程控制器具有自身的通讯端口和通信协议,这就使得工业现场的实时监控和控制成为可能。所以在实际的运用中,常常采用
plc
作为下位控制机实现整个过程的自动控制。而微机在数据处理及人机界面方面有得天独厚的优势,因此采用微机为上位机来进行数据的显示、控制参数的修改及过程的控制,这样就不得不解决上位管理机与下位控制机之间的通讯问题。
由于串行通讯具有线路简单、应用灵活、可靠性高等优点,并且普通微机上均都带有串口,便于实现,所以微机与plc之间常采用串行异步通讯。vc具有面向对象的设计方法、简单方便的串行通讯和实用性强等优点,无需借用其他语言就可以开发出优秀的控制系统通讯软件。本文重点就是介绍在windows98环境下如何利用vc来实现pc机与永宏plc之间的串行通讯。并以实际控制系统“半自动化灯检机”为例加以说明。
2 控制系统简介
半自动化灯检机系统的主要工艺流程:供瓶机供瓶→进瓶输送带送瓶→气缸放瓶→主传动履带式置瓶棍移送瓶→进入高速旋转工位旋瓶→进入低速旋转工位慢速旋瓶(同时也就进入灯检工位)→至出瓶输送带送瓶→进入剔除工位分瓶(由电磁阀来控制气缸动作)。下位机主要采用永宏plc完成现场的状态检测与控制。上位机则用一般的微机,通过rs-
232
与plc通信接受现场状态的显示并加以控制生产过程。电机的运转通过plc控制,而电机的升降速则由
变频器
调节。因此本系统软件需要完成的主要任务是:从plc,变频器循环接受现场的状态,并根据不同的状态控制变频器及电机的运转。主要的界面有:监控画面,密码设置,参数设置和报警画面等。其中监控画面设有:操作按钮,如停止,启动及产品合格数的实时显示。画面中的每一个按钮或状态显示都需要上位机与下位机的通信来完成。
3 永宏plc的通讯格式
整个通讯采用上位机主动发送和接收的方式,plc内部不需要特定的梯形图编程来做下位机通讯程序。
3.1 通讯格式
计算机与永宏fb
系列
plc通讯必须遵从fb-plc通讯协议。无论是上位机发出的命令信息格式还是下位机发出的回应信息格式均可分为6个资料位,如图1所示。
(1) 起始字元(stx):ascii码的起始字元stx对应的
16
进制数为02h。无论命令信息还是回应信息,它们的起始字元均为stx,接收方以此来判知传输资料的开始。
(2) 从机站号:为两位16进制数。fb-plc的站号是什么,这个值就是多少。因为fb-plc的站号可以为1-
255
,所以这个值的范围为01h-ffh。
(3) 命令号码:为两位16进制数。所谓命令号码是指上位机要求下位机所执行的动作类别,例如要求读取或写入单点状态、写入或读取暂存器资料、强制设定、运行、停止等等。在回应信息中,下位机会将从上位机接收到的命令号码原原本本的随同
其它
信息一同发送给上位机。
(4) 本文资料:可为0(无本文资料)-500个ascii字元。在命令信息中,此信息用于指定命令所要运作或存取的对象及要写入的数值。如果通讯正确,那么在回应信息中此栏为0(30h)和从上位机接收到的本文资料;如果通讯异常,那么为错误码。
(5) 校验码(checksum):校验码是将1-4各栏的所有ascii字元的16进制数值以“
lrc
(longitudinal redundancy check)”法计算出1个byte长度(两个16进制数值00-ffh)的校验码。当下位机接收到信息后,用同样的方法计算出接收信息的校验码,如果两个校验码相同,则说明传送正。
(6) 结束字元(etx):ascii码的结束字元etx对应的16进制数为03h。无论命令信息还是回应信息,他们的结束字元均为etx,接收方以此来判知此次通讯已结束。
3.2 通讯命令
永宏系列plc有
多种
命令字,常用的几种描述如附表所示。例如,上位机要读取plc内部
继电器
m1
和
m2
的状态,则上位机发送的命令字符串格式为:
起始符(02h)+站号(01)+命令字(44)+个数(02)+起始地址(0001)+校验码(3b)+结束符
相应下位机响应的字符串为:
起始符(02h)+站号(01)+命令字(44)+错误码(0)+m0,m1状态(10)+校验码(5c)+结束符若要对字元件进行写操作,那么命令码改为47。表明该指令要向plc内部寄存器写入数据,同时要给出写入的数据个数、开始寄存器和数据内容。
校验和在信息帧的尾部,用来判断传输的正确与否。当数据从信息源出发,由于信道总是有一定的噪声存在,在信号达到信宿之前会与噪声发生叠加,使接收端收到的二进制数位和发送端实际发送的二进制数位不一致,因而产生差错。进行差错检验的方法很多,常用的有奇偶校验码,水平垂直冗余校验lrc,目前广泛使用的是lrc校验码,它可以查出
99
%以上18位或更长的突出错误,因而在计算机与plc进行点对点的短程通讯时,采用这种校验方法出错的几率较小。plc接收到计算机发送的命令后,如果没有错误,plc会发出确认码“0”;若有错误,plc会发出错误代码“1”。
4 软件编程
软件编程采用微软的vc++6.0作为开发工具。系统主监控画面要求不断扫描下位机的信号的通断状态,以及读取plc的内部存取单元加以显示。此外手动按钮可以直接控制,由此主程序结构流程图如图2所示。
为了确保通信的成功,在pc机和永宏plc之间开始数据传送前,常采用握手通讯的方法,即pc机发送特征字符,下位机接收并回送同一特征字符,由pc机进行检测正确后开始数据传送,以保证串行通讯数据的可靠。此外在通讯过程中,常因某些原因不能保证每次通讯成功,遇到这种情况,不能简单地宣布通讯失败,本程序设置了通讯重复次数
计数器
,只有在规定次数后握手通讯仍未完成时,才宣布通讯失败,从而大大提高了通讯的成功率和系统的容错能力。另外,程序中应用
定时器
对通讯时间加以限制,以免发生死锁情况。定时器的打开和关闭由程序进行控制。握手通讯成功后,设置握手连接成功标志位,这样,pc机和永宏plc之间就可以开始数据传送。握手通讯程序如下:
void cscommplcdlg::onscommstart()
{ m_mscomm.setcommport(1); file://选择com1
m_mscomm.setportopen(true); file://打开串口
m_mscomm.setsettings("9600,e,7,1");
file://波特率9600,偶校验,7个数据位,1个停止位
m_mscomm.setinputmode(1);
file://1:表示以二进制方式检取数据
m_mscomm.setrthreshold(1); file://参数1表示每 file://当收到一只字符时引发一个接收数据的oncomm事件
m_mscomm.setinputlen(0); file://设置当前接收区 file://数据长度为0
cstring sendstr="";//设置要发送的字符串
sendstr+=0
x02
;
sendstr+="014eabcdefgb8";
sendstr+=0
x03
;
m_mscomm.setoutput(colevariant(sendstr));
file://发送数据
char sendcount=0;
while(m_mscomm.getinbuffercount==0)
{ sendcount+=1;
if(sendcount&
lt
;10)
m_mscomm.setoutput(colevariant(sendstr)); file://再次发送数据
else
afxmessagebox("communication fail!"); return; }
variant data;
char s;
char *recstr=&s;
short l=m_mscomm.getinbuffercount();
if(l>0)
{ data=m_mscomm.getinput();
recstr=(char *)(unsigned char *)data.parray->pvdata;
if(strcmp(sendstr,recstr)==0)
{ linksuccess=1; file://设置连接成功标志
m_timer=settimer(1,1000,null);
file://开启定时器
}
}
}
4.1 实时数据监控的实现
在本系统的主监控画面上,如图3所示。要求实时监控现实合格产品数。在下位机plc程序中,每当合格产品经过特定传动待时,
光电开关
便感应信号,plc对此信号计数,存放于一
内存
单元。上位机就要定时不断读取此单元内容显示。
程序代码如下:
void cscommplcdlg::ontimer(uint nidevent)
{ cstring sendstr="";//设置要发送的字符串
sendstr+=0x02;
sendstr+="014601r0001273";
sendstr+=0x03;
m_mscomm.setoutput(colevariant(sendstr));//发送数据
sleep(50);
variant data;
char s;
char *recstr=&s;
short recdata=0;
short l=m_mscomm.getinbuffercount();
if(l>0)
{ data=m_mscomm.getinput();
recstr=(char *)(unsigned char *)data.parray->pvdata;
recstr[l]=`
集成电路
,
控制器
,
工业
,
监控
,
领域
相关帖子
STM32系列ARM+Cortex-M3微控制器原理与实践
I.MX6x工业行业最高端的开发平台
工业用流水线计(定)时器、计数器、转速表、报警器开发定制说明
关于ARM的22个常用概念
关于数字电路的基本概念和学习内容
单片机+RA8876/77驱动液晶显示方案
单片机、电路板、控制器开发设计项目承接
5A双节锂电池充电管理集成电路CN3002
4A单节锂电池充电管理集成电路CN3001
500毫安USB接口兼容的锂电池充电集成电路CN3068
举报
回复
返回列表
*
滑块验证:
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册会员
本版积分规则
发表回复
回帖后跳转到最后一页
回复
转播
评分
分享
打开支付宝扫一扫,最高立得1212元红包
搜索
本版
帖子
用户
热搜:
传感器
51串口程序
电子管放大器
夾式電表
夾式電流
Mentor论坛
打印机
版块推荐
百宝箱
My 布拉格
无边框Z9
Z9Max
Z9mini
nubia动态
问题 & 建议
资源分享
爱拍
同城会
牛仔生活
查看论坛所有版块>>
每日签到
论坛任务
摄影技巧
跳蚤市场
互助问答
论坛导读
申请内测
红包中心
每日摇一摇
活动中心
网站地图
官方旗舰店
图文热点
I2C通信接口段码液晶驱动芯片VK2C21C SOP20
产品品牌:永嘉微电/VINKA 产品型号:VK2C21C 封装形式:SOP20 概述 VK2C21C是
VK2C21B SOP24高抗干扰LCD液晶段码驱动芯片
产品品牌:永嘉微电/VINKA 产品型号:VK2C21B 封装形式:SOP24 概述 VK2C2B是一
低成本、高性能、带EEPROM了解一下
无锡矽杰微电子的XCE855E 是一颗带 EEPROM 的 8 位单片机,专为多 IO 产品的应用而设
工控仪表/水电气表LCD驱动/抗干扰液晶段码
产品品牌:永嘉微电/VINKA 产品型号:VK2C21A 封装形式:SOP28 概述 VK2C21是一
为什么电动车会着火?原因是什么?电动车充
其实电动车起火的新闻我们也不是第一次看到了,让很多人对电动车的安全性产生质疑,但
更多
精华推荐
I2C通信接口段码液晶驱动芯片VK2C21C SOP20
VK2C21B SOP24高抗干扰LCD液晶段码驱动芯片
低成本、高性能、带EEPROM了解一下
工控仪表/水电气表LCD驱动/抗干扰液晶段码
软件模拟2812通信协议导致的种种问题,你遇
适用于电子鞭炮、电子蜡烛灯等方案的单片机
为什么电动车会着火?原因是什么?电动车充
性价比超高的国产单片机了解一下
更多
社区学堂
I2C通信接口段码液晶驱动芯片VK2C21C S
VK2C21B SOP24高抗干扰LCD液晶段码驱动
I2C通信接口段码液晶驱动芯片VK2C21C SOP20
产品品牌:永嘉微电/VINKA 产品型号:VK2C21C 封装形式:SOP20 概述 VK2C21C是
VK2C21B SOP24高抗干扰LCD液晶段码驱动芯片
产品品牌:永嘉微电/VINKA 产品型号:VK2C21B 封装形式:SOP24 概述 VK2C2B是一
低成本、高性能、带EEPROM了解一下
无锡矽杰微电子的XCE855E 是一颗带 EEPROM 的 8 位单片机,专为多 IO 产品的应用而设
更多
客服中心
QQ:187196467
服务时间:周一至周日 8:30-20:30
在线客服
客服微博
产品咨询
售后中心
关注我们
关于我们
关于我们
友情链接
联系我们
帮助中心
网友中心
购买须知
支付方式
服务支持
资源下载
售后服务
定制流程
关注我们
官方微博
官方空间
官方微信
QQ:187196467
周一到周日 8:30-22:00 (全年无休)
7 x 24小时在线客服
手机版
Powered by
MCUZX!
X3.4 © 2008-2015
MCU资讯论坛
版权所有
京ICP备18035221号-2
客服QQ: 187196467
技术支持:
MCU资讯论坛
|
网站地图
快速回复
返回顶部
返回列表