当前位置:文档之家› 西门子S7-200自由口与上位机通讯实例

西门子S7-200自由口与上位机通讯实例

西门子S7-200自由口与上位机通讯实例

S7-200自由口与上位机通讯读取温度值的程序

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 '定义纵横坐标
https://www.doczj.com/doc/d72994573.html,mPort = 1 '设定端口号
MSComm1.Settings = "9600,n,8,1" '设定通讯波特率
MSComm1.InputLen = 6 '输入缓冲区为6个字符
MSComm1.InBufferSize = 256 '接收缓冲器大小


相关主题
文本预览
相关文档 最新文档