中国辽宁省营口市西门子东北区总代理,西门子变频器总代理,西门子伺服电机总代理

供应商
广东湘恒智能科技有限公司
认证
西门子
S120
变频器
伺服电机
G120XA
一级总代理
联系电话
18126392341
手机号
15267534595
联系人
梁涛
所在地
惠州大亚湾澳头石化大道中480号太东天地花园2栋二单元9层01号房(仅限办公)(注册地址)
更新时间
2024-06-19 09:10

详细介绍

通讯与组态]西门子s7-200与上位机通讯,读取温度值的程序范例!
plc主程序
网络1
//设置控制方式为自由口通信方式,启动接收字符中断 //
   plc扫描
   自由口通信,波特率为9600,数据位8,停止位1,无校验
   初始化rcv,允许rcv,有结束符,检查空闲时间 
字串6
 
   结束符为 a
   空闲时间为5ms
   一次接收的zui大字符为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 字串7 
网络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 字串5 
creti
not
rcv   vb199, 0
*******************************
vb源程序
dim x1,k1, k2
dim p11,p22                            '定义变量
dim aa()asbyte                        '定义数组
privatesubcommand1_click()            '开始监控,定时器1有效
timer1.enabled= true
endsub
privatesubcommand2_click()            '退事程序,定时器1无效
timer1.enabled= false
cls                                      '清屏 字串4 
unloadme
endsub
privatesubform_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                     '设定端口号 字串2 
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                '清空接收缓冲区
endsub
privatesubtimer1_timer()                              '定时器1有效,触发接收事件 
字串8
mscomm1.portopen=true                                 '打开端口
redimaa(0 to5)                                        '定义动态数组
k1 =0                                                  '识别plc站号,为1
if k1 = 0then mscomm1.output = "1" + chr(10) + chr(13)  '发送
do whilemscomm1.inbuffercount =0                      '准备接收数据 
字串4
loop
aa =mscomm1.input                                       '接收数据存入数组
if aa(0)> 64 then goto xxx:
k2 =int(aa(0) * 255 + aa(1) * 1)
selectcase k2
case1
p11 =int(aa(2) * 255 + aa(3) * 1)
p22 =int(aa(4) * 255 + aa(5) * 1)
caseelse
endselect
k1 = k1 +1
if k1> 2 then k1 = 0
xxx:
mscomm1.portopen= false
endsub
privatesubtimer2_timer()                     '绘制各中频炉的温度曲线
x1 = x1 +1                                    '时间增加为1s
picture1.pset(x1, p11),vbred                 '绘制1#炉的温度曲线,为红色 
字串9
picture1.pset(x1, p22),vbblue                '绘制2#炉的温度曲线,为黄色
text1.text=str(p11)                          '输出1#炉温度值
text2.text=str(p22)                          '输出2#炉温度值
text3.text=str(x1)                            '输出监控时间
endsub

一级代理商

展开全文

我们其他产品
我们的新闻
咨询 在线询价 拨打电话