注册名:

密码:

个人注册

企业注册

商务申请

商务管理平台

企业管理平台

个人管理平台

我的工控博客

中国工控网www.chinakong.com

首页 | 新闻中心 | 工控论坛 | 经验视点 | 工控商务 | 电气手册 | 工控博客 | 招聘求职 | 网上调查 | 企业中心 | 供求信息 | 资料中心 | 工控书店

所在位置:工控论坛 -- PLC论坛 -- 西门子PLC论坛 -- PLC网络通信

中国工控网搜索:

 自动化企业招聘

更多..

 登陆:密码:  注册  密码

搜索:

发表人:shidi78 发表时间:2009/1/24 19:48:00  

 

 本栏论题: S7-200自由口与上位机通讯读取温度值的程序  [2509]

    PLC主程序
    网络1
    // 设置控制方式为自由口通信方式,启动接收字符中断 //
    PLC首次扫描
    自由口通信,波特率为9600,数据位8,停止位1,无校验
    初始化RCV,允许RCV,有结束符,检查空闲时间
    结束符为 A
    空闲时间为5MS
    一次接收的最大字符为6个
    启动通信口,接收完成中断
    全局允许中断
    接收数据
    LD SM0.1
    MOVB 16#09, SMB30
    MOVB 16#B0, SMB87
    MOVB 16#0A, SMB89
    MOVB 6, SMB94
    ATCH INT_0, 23
    ENI
    RCV VB199, 0
    网络2
    // 检测温度送VW0 //
    转换成实际温度值
    从工作站编号送到输出缓冲区
    检测温度送输出缓冲区
    LD SM0.0
    MOVW AIW0, VW0
    /I +54, VW0
    MOVW AIW2, VW2
    /I +54, VW2
    MOVW 1, VW300
    MOVW VW0, VW302
    MOVW VW2, VW304
    网络3
    // 设置温度控制上限和下限//
    LD SM0.0
    MOVW +350, VW4
    MOVW +450, VW6
    网络4
    // 检测温度低于下限,则输出加温 //
    LDW< VW0, VW4
    A SM0.5
    S Q0.0, 1
    网络5
    // 检测温度高于上限,则输出降温 //
    LDW> VW0, VW6
    A SM0.5
    R Q0.0, 1
    网络6
    //准备传送参数 //
    发送字节数据,送VB99
    发送检测温度数据,送VW100
    发送工作站编号数据,送VW102
    LD SM0.0
    MOVB 6, VB99
    MOVW VW300, VW100
    MOVW VW302, VW102
    MOVW VW304, VW104
    网络7
    // 传送数据 //
    LD SM0.5
    XMT VB99, 0
   
   
    中断程序
   
   
    网络1
    //通信口接收数据完成后的中断 //
    // SMB86 等于16#20,表示PLC收到结速符 //
    收到结束符,把收到的数据传到VB400
    中断有条件返回
    否则继续接收
    LDB= SMB86, 16#20
    MOVB VB200, VB400
    CRETI
    NOT
    RCV VB199, 0
   
    \\*******************************\\
   
    VB源程序
   
    Dim x1, k1, k2
    Dim p11, p22 '定义变量
    Dim aa() As Byte '定义数组
    Private Sub Command1_Click() '开始监控,定时器1有效
    Timer1.Enabled = True
    End Sub
    Private Sub Command2_Click() '退事程序,定时器1无效
    Timer1.Enabled = False
    Cls '清屏
    Unload Me
    End Sub
    Private Sub Form_Load() '初始化
    Timer1.Enabled = False '定时器1无效
    Timer1.Interval = 100 '定时器1时间为0.1S
    Timer2.Enabled = True '定时器2有效
    Timer2.Interval = 1000 '定时器2时间为1S
    Picture1.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 Sub
    Private Sub Timer1_Timer() '定时器1有效,触发接收事件
    MSComm1.PortOpen = True '打开端口
    ReDim aa(0 To 5) '定义动态数组
    k1 = 0 '识别PLC站号,为1
    If k1 = 0 Then MSComm1.Output = "1" + Chr(10) + Chr(13) '发送
    Do While MSComm1.InBufferCount = 0 '准备接收数据
    Loop
    aa = MSComm1.Input '接收数据存入数组
    If aa(0) > 64 Then GoTo xxx:
    k2 = Int(aa(0) * 255 + aa(1) * 1)
    Select Case k2
    Case 1
    p11 = Int(aa(2) * 255 + aa(3) * 1)
    p22 = Int(aa(4) * 255 + aa(5) * 1)
    Case Else
    End Select
    k1 = k1 + 1
    If k1 > 2 Then k1 = 0
    xxx:
    MSComm1.PortOpen = False
    End Sub
    Private Sub Timer2_Timer() '绘制各中频炉的温度曲线
    x1 = x1 + 1 '时间增加为1S
    Picture1.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) '输出监控时间
   
   

以下是关于《S7-200自由口与上位机通讯读取温度值的程序》论题的回复(共2篇)

回复人:west2003 

 回复时间:2009/9/10 16:08:00

支持(264) | 反对(308)

 

    你想干什么??
    晒程序???

回复人:zhangwunan 

 回复时间:2010/9/18 14:34:00

支持(292) | 反对(264)

 

    真的很好,我也在做这个

如果要回复本栏论题,请首先中国工控网www.chinakong.com

·如果你已经是中国工控网www.chinakong.com成员,请直接登录。

·如果你还不是中国工控网www.chinakong.com成员,请首先注册,注册为免费!

注册名:

密  码:

           注册中国工控网www.chinakong.com
           忘记密码

关闭该窗口

关于我们     免责声明     服务项目     广告联系     友情链接     联系方式     意见反馈     设为首页     加入收藏

 ©2023-2025 中国工控网(www.chinakong.com) 版权所有 豫ICP备17046657号

管理员信箱:chinakong98@163.com  服务热线:13525974529

洛阳博德工控自动化技术有限公司

中国    洛阳