岳阳西门子PLC总代理商

供应商
浔之漫智控技术(上海)有限公司
认证
企业认证实名金牌商家
报价
请来电询价
西门子
西门子代理商
西门子CPU
西门子plc
德国
全新原装
关键词
西门子PLC,西门子CPU,西门子代理商,西门子授权代理商,西门子一级代理商
联系电话
15221406036
全国服务热线
15221406036
微信号
15221406036
邮箱
3064686604@qq.com
经理
聂经理
所在地
上海市松江区广富林路4855弄星月大业领地88号3楼
更新时间
2026-05-29 08:08

VB与AB的PLC之间通讯
    AB系列的PLC一般都有专用的驱动程序用于实现PLC和计算机之间的通讯,如RSLINX就是专门用于做这项工作的,但使用RSLINX也具有一定的局限性,这里提供一个使用VB编程实现PLC和计算机之间的通讯程序,使用的协议是DF1,可以支持Micrologix、SLC500等系列的PLC。使用的代码如下:
      Option Explicit
      Dim tns%, comunicating
      Private Sub Command1_Click()
      ReDim tb%(10)
      Dim st
      If ReadTable(0, tb%()) Then
      For st = 0 To 9 '显示结果
      Text1.SelText = Str(tb%(st)) + Chr(32)
      Next st
      Text1.SelText = Chr(13) + Chr(10)
      End If
      End Sub
      Private Sub Command2_Click()
      ReDim tm%(5)
      tm%(0) = Rnd * 32768
      tm%(1) = Rnd * 32768
      tm%(2) = Rnd * 32768
      tm%(3) = Rnd * 32768
      tm%(4) = Rnd * 32768
      If Not WriteTable(4, tm%()) Then Text1.SelText = "写入错误!!"
      End Sub
      Private Sub Exit_Click()
      Unload Me
      End
      End Sub
      Private Sub bbbb_Load()
      Comm1.PortOpen = True
      End Sub
      Private Sub bbbb_Unload(Cancel As Integer)
      Comm1.PortOpen = False
      End Sub
      Private Sub CalcCRC(mes$)
      Dim byt%, res&
      '对消息进行crc校验,然后将结果添加到消息的结尾。
      byt% = 3
      Do
      res& = res& Xor Asc(Mid(mes$, byt%, 1))
      rotate res&
      If Asc(Mid(mes$, byt%, 1)) = 16 Then
      mes$ = Left$(mes$, byt%) + Chr(16) + Right$(mes$, Len(mes$) - byt%)
      byt% = byt% + 1
      End If
      byt% = byt% + 1
      Loop While (byt% <= Len(mes$) - 2)
      res& = res& Xor 3
      rotate res&
      mes$ = mes$ + Chr(res& Mod 256) + Chr(Int(res& / 256))
      End Sub
      Function ReadTable(start, n%())
      Dim st, com$
      '从PLC CIF数据表中读取数据, Micrologix=N7 SLC500=N9
      If comunicating Then Exit Function
      comunicating = True
      bbbb1.Comm1.bbbbbLen = 0 '清缓冲区
      com$ = bbbb1.Comm1.bbbbb
      '构建消息
      com$ = Chr(16) + Chr(2) + Chr(0) + Chr(0)
      com$ = com$ + Chr(1) + Chr(0) + Chr(tns%) + Chr(0)
      com$ = com$ + Chr(start) + Chr(0) + Chr(UBound(n%) * 2)
      com$ = com$ + Chr(16) + Chr(3)
      '进行crc计算并附加到结尾。
      CalcCRC com$
      tns% = tns% + 1
      If tns% = 256 Then tns% = 0
      '发送命令
      bbbb1.Comm1.Output = com$
      '等待确认
      st = Timer
      Do
      DoEvents
      Loop While st + 3 > Timer And bbbb1.Comm1.InBufferCount < 2
      '从缓冲中移除确认
      bbbb1.Comm1.bbbbbLen = 2
      com$ = bbbb1.Comm1.bbbbb
      If com$ <> Chr(16) + Chr(6) Then
      comunicating = False
      Exit Function
      End If
      st = Timer '等待应答
      Do
      DoEvents
      Loop While st + 3 > Timer And bbbb1.Comm1.InBufferCount < 12 + (UBound(n%) 
      * 2)
      '超时则退出
      If bbbb1.Comm1.InBufferCount < 12 + (UBound(n%) * 2) Then
      comunicating = False
      Exit Function
      End If
      '发送确认
      bbbb1.Comm1.Output = Chr(16) + Chr(6)
      '得到应答
      bbbb1.Comm1.bbbbbLen = 0
      com$ = bbbb1.Comm1.bbbbb
      st = 3
      Do
      If Mid(com$, st, 1) = Chr(16) Then
      com$ = Left(com$, st) + Right(com$, Len(com$) - 1 - st)
      End If
      st = st + 1
      Loop While st < Len(com$) - 4
      '保存结果
      For st = 0 To UBound(n%) - 1
      n%(st) = 256 * Asc(Mid(com$, 2 * st + 10, 1)) + Asc(Mid(com$, 2 * st + 9, 
      1))
      Next st
      ReadTable = True
      comunicating = False
      End Function
      Private Sub rotate(res&)
      Dim bitout%, shift%
      For shift% = 1 To 8
      bitout% = res& Mod 2
      res& = Int(res& / 2)
      If bitout% Then
      res& = res& Xor &H1000A001
      res& = res& - &H10000000
      End If
      Next shift%
      End Sub
      Function WriteTable(start, n%())
      Dim st, com$
      '写到 PLC CIF数据表, Micrologix=N7 SLC500=N9
      If comunicating Then Exit Function
      comunicating = True
      bbbb1.Comm1.bbbbbLen = 0
      com$ = bbbb1.Comm1.bbbbb
      com$ = Chr(16) + Chr(2) + Chr(0) + Chr(0)
      com$ = com$ + Chr(8) + Chr(0) + Chr(tns%) + Chr(0)
      com$ = com$ + Chr(start) + Chr(0)
      For st = 0 To UBound(n%)
      com$ = com$ + Chr(n%(st) Mod 256) + Chr(Int(n%(st) / 256))
      Next st
      com$ = com$ + Chr(16) + Chr(3)
      tns% = tns% + 1
      If tns% = 256 Then tns% = 0
      CalcCRC com$
      bbbb1.Comm1.Output = com$
      st = Timer
      Do
      DoEvents
      Loop While st + 3 > Timer And bbbb1.Comm1.InBufferCount < 2
      bbbb1.Comm1.bbbbbLen = 2
      com$ = bbbb1.Comm1.bbbbb
      If com$ <> Chr(16) + Chr(6) Then
      comunicating = False
      Exit Function
      End If
      st = Timer
      Do
      DoEvents
      Loop While st + 3 > Timer And bbbb1.Comm1.InBufferCount < 12
      bbbb1.Comm1.Output = Chr(16) + Chr(6)
      If bbbb1.Comm1.InBufferCount < 12 Then
      comunicating = False
      Exit Function
      End If
      bbbb1.Comm1.Output = Chr(16) + Chr(6)
      WriteTable = True
      comunicating = False
      End Function

西门子PLC,西门子CPU,西门子代理商,西门子授权代理商,西门子一级代理商
浔之漫智控技术(上海)有限公司已认证
统一社会信用代码
91310117MA1J3R698D
成立日期
2018年04月08日
注册资本
500

主营产品

西门子模块代理商

经营范围

从事智能科技、自动化科技、机电领域内的技术开发、技术转让、技术咨询、技术服务,工业自动化设备安装,工业自动化控制设备、电气设备、机电设备、电子产品、五金产品、金属材料、仪器仪表、橡塑制品销售,商务信息咨询,软件开发,建筑装修装饰建设工程专业施工,建筑安装工程(除特种设备),机械设备租赁(不得从事金融租赁),物业管理。工业自动化设备加工、销售。【依法须经批准的

公司简介

浔之漫智控技术有限公司西门子代理。联系人:小聂(15221406036)浔之漫智控技术有限公司主要产品有“PLC,变频器,触摸屏,模块,传感器,低压器,伺服电机,工控机”。全新原装,质量保证,保修一年,价格合理,支持技术服务!SIEMENS 可编程控制器1、 SIMATIC S7 系列PLC:S7-200、S7-1200、S7-300、S7-400、ET-2002、 逻辑控制模块 LOGO!230RC、230RCO、230RCL、24R...

查看公司详情
我们其他产品
我们的新闻
微信咨询
拨打电话