用户登陆 用户注册
您的位置:首页>
技术文章>内容正文
VB与s7200通讯例子(blueapple)
[正文]:vb与s7200通讯例子(blueapple)读取温度值的程序范例plc主程序网络1// 设置控制方式为自由口通信方式,启动接收字符中断 // plc首次扫描 自由口通信,波特率为9600,数据位8,停止位1,无校验 初始化rcv,允许rcv,有结束符,检查空闲时间 结束符为 a 空闲时间为5ms 一次接收的最大字符为6个 启动通信口,接收完成中断 全局允许中断 接收数据ld sm0.1movb 16#09, smb30movb 16#b0, smb87movb 16#0a, smb89movb 6, smb94atch int_0, 23enircv vb199, 0网络2// 检测温度送vw0 // 转换成实际温度值 从工作站编号送到输出缓冲区 检测温度送输出缓冲区ld sm0.0movw aiw0, vw0/i +54, vw0movw aiw2, vw2/i +54, vw2movw 1, vw300movw vw0, vw302movw vw2, vw304网络3// 设置温度控制上限和下限//ld sm0.0movw +350, vw4movw +450, vw6网络4// 检测温度低于下限,则输出加温 //ldw< vw0, vw4a sm0.5s q0.0, 1网络5// 检测温度高于上限,则输出降温 //ldw> vw0, vw6a sm0.5r q0.0, 1网络6//准备传送参数 // 发送字节数据,送vb99 发送检测温度数据,送vw100 发送工作站编号数据,送vw102ld sm0.0movb 6, vb99movw vw300, vw100movw vw302, vw102movw vw304, vw104网络7// 传送数据 //ld sm0.5xmt vb99, 0 中断程序网络1//通信口接收数据完成后的中断 //// smb86 等于16#20,表示plc收到结速符 // 收到结束符,把收到的数据传到vb400 中断有条件返回 否则继续接收ldb= smb86, 16#20movb vb200, vb400cretinotrcv vb199, 0\\*******************************\\vb源程序dim x1, k1, k2dim p11, p22 '定义变量dim aa() as byte '定义数组private sub command1_click() '开始监控,定时器1有效timer1.enabled = trueend subprivate sub command2_click() '退事程序,定时器1无效timer1.enabled = falsecls '清屏unload meend subprivate sub form_load() '初始化timer1.enabled = false '定时器1无效timer1.interval = 100 '定时器1时间为0.1stimer2.enabled = true '定时器2有效timer2.interval = 1000 '定时器2时间为1spicture1.scalemode = 0 '定义纵横坐标mscomm1.commport = 1 '设定端口号mscomm1.settings = "9600,n,8,1" '设定通讯波特率mscomm1.inputlen = 6 '输入缓冲区为6个字符mscomm1.inbuffersize = 256 '接收缓冲器大小mscomm1.outbuffersize = 256 '输出缓冲器大小mscomm1.inputmode = cominputmodebinary '以二进制传输mscomm1.outbuffercount = 0 '清空发送缓冲区mscomm1.inbuffercount = 0 '清空接收缓冲区end subprivate sub timer1_timer() '定时器1有效,触发接收事件mscomm1.portopen = true '打开端口redim aa(0 to 5) '定义动态数组k1 = 0 '识别plc站号,为1if k1 = 0 then mscomm1.output = "1" + chr(10) + chr(13) '发送do while mscomm1.inbuffercount = 0 '准备接收数据loopaa = mscomm1.input '接收数据存入数组if aa(0) > 64 then goto xxx:k2 = int(aa(0) * 255 + aa(1) * 1)select case k2case 1p11 = int(aa(2) * 255 + aa(3) * 1)p22 = int(aa(4) * 255 + aa(5) * 1)case elseend selectk1 = k1 + 1if k1 > 2 then k1 = 0xxx:mscomm1.portopen = falseend subprivate sub timer2_timer() '绘制各中频炉的温度曲线x1 = x1 + 1 '时间增加为1spicture1.pset (x1, p11), vbred '绘制1#炉的温度曲线,为红色picture1.pset (x1, p22), vbblue '绘制2#炉的温度曲线,为黄色text1.text = str(p11) '输出1#炉温度值text2.text = str(p22) '输出2#炉温度值text3.text = str(x1) '输出监控时间end sub
网站首页
培训课程
维修指南
技术文章
家电专栏
供应信息
求购信息
培训资讯
展会信息
电脑专栏
教程下载
资料下载
常用软件
PLC教程
PLC资料
变频伺服
低压电器
维修资料
人机界面
自控仪表
工控机类
文章标题:
中国工控资源网手机版 2012
电话:010-67577139 13811659603
培训咨询QQ:657167934 471895637 销售咨询QQ:623769457
联系邮箱:zggkzyw@163.com
京ICP备11002135号
报时(2026-04-04 03:48:56)