读取VB100或者VW100的数据

小弟最近在搞一个工程在论坛也看过不少东西了   但是由于实力不够(自己比较笨)还不能读懂 所以也不会写  于是我在网络找到一个PPI读取VB100和写入VB100的东西 我把那文章发给大家看看  希望大家能写出  读取VB100 和写入VB100的代码给我参考一下 特别是验证那部分的代码更加头疼  希望大家能帮助下我们这些新人成才(一点要PPI协议的方法哦  不要写modbus协议或者调用动态数据库) 多多指点 我的QQ 345324289  邮箱345324289@qq.com希
 1、串口初始化程序: 
    MSComm1.CommPort = 1 
    MSComm1.Settings = "9600,e,8,1" 
    MSComm1.InputLen = 0 
    MSComm1.RThreshold = 1 
 MSComm1.InputMode = comInputModeBinary 
   PPI协议定义串口为以二进制形式收发数据,这样报文的通讯效率比ASCII码高。 
   2、串口读取数据程序,以读取VB100数据单元为例: 
   Dim Str_Read(0 To 32) ‘定义发送的数据为字节为元素的数组。 
   Str_ Read (32) = &H16 ‘相应的数组元素赋值,按照以下格式: 
   Str_ Read (29) = (100*8) \ 256 ‘地址为指针值,先取高位地址指针 
   Str_ Read (30) = (100*8) Mod 256 ‘取低位地址指针 
   Str_ Read (24) = 1 ‘读取的数据长度(Byte的个数) 
   For I=4 to 30 
    Temp_FCS = Temp_FCS + Str_Read(i) 
   Next I 
   Str_Read(31)= Temp_FCS Mod 256 ‘计算FCS校验码,其它数组元素赋值省略。 
   68 1B 1B 68 2 0 6C 32 1 0 0 0 0 0 E 0 0 4 1 12 A 10 2 0 1 0 1 84 0 3 20 8B 16  
   PLC返回数据 E5 后,确认读取命令,发送以下数据: 
   10 2 0 5C 5E 16 
   然后上位机VB程序接受到以下数据: 
   68 16 16 68 0 2 8 32 3 0 0 0 0 0 2 0 5 0 0 4 1 FF 4 0 8 22 78 16 
   首先识别目标地址和源地址,确认是这次申请的返回数据,然后经过校验检查,正确后解析出第26号数据(&H22)即为VB100字节的数据。 
    3、串口写入数据程序,以写VB100数据单元为例: 
   Dim Str_Write(0 To 37) ‘定义发送的数据为字节为元素的数组。 
   Str_Write (37) = &H16 ‘相应的数组元素赋值,按照以下格式 
   Str_Write (35) = &H10 ‘要写入的数据值 
   68 20 20 68 2 0 7C 32 1 0 0 0 0 0 E 0 5 5 1 12 A 10 2 0 1 0 1 84 0 3 20 0 4 0 8 C B9 16  
   PLC返回数据 E5 后,确认写入命令,发送以下数据: 
   10 2 0 5C 5E 16 
   然后上位机VB程序接受到以下数据: 
   68 12 12 68 0 2 8 32 3 0 0 0 0 0 2 0 1 0 0 5 1 FF 47 16 
   这是PLC正确接收并写入信息的返回数据。 
   4、串口接收程序: 
   在数据接收程序中,利用VB中MSComm控件,一次接收缓冲区中的全部数据,存放到数组形式的暂存单元中,然后分析每个元素的值,得到读写的数据。 
   Dim RCV_Array() As Byte 
   Dim Dis_Array As String 
   Dim RCV_Len As Long 
   RCV_Array = MSComm1.Input ‘取出串口接收缓冲器的数据。 
   RCV_Len = UBound(RCV_Array) 
   ReDim Temp(0 To UBound(RCV_Array)) 
   For i = 0 To RCV_Len 
   Dis_Array = Dis_Array & Hex(RCV_Array (i)) & " " 
   Next i 
   Text1.Text = Dis_Array ‘接收到的数据送显示。

最佳答案

你在网上找的PPI协议只能读写VB的数据,而不能读写VW和VD的数据。
 我根据PPI协议的VB读写部分,推导过VW和VD的,但是没有成功,应该不是简单的数据长度和地址变化的问题。西门子的PPI协议是不公开的,但是可以购买PPI协议,估计价格应该很高。
 如果你急于实现PLC和VB编程软件的通讯,建议使用自由口通讯或者modbus协议。
 自由口通讯要求PLC和VB编程软件都要编写程序,比较繁琐。
 modbus协议在PLC部分仅仅需要调用modbus库,VB编程软件部分使用MSComm控件(编程不难)。
 modbus通讯方式我已经实现了。你下载的东西就是VB编程软件部分的程序。
 如果不是很复杂,我应该可以帮的了你。

提问者对于答案的评价:
谢谢您的指导

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc345854.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月4日
下一篇 2021年7月4日

相关推荐

  • S7 200的MPI协议

    1.S7 200的通信口直接接到MPI网络中,接入S7 300组成的MPI网络时,什么时候需要加EM277什么时候不需要加EM277? 2.MPI网络…

    SIMATIC S7-200 2021年7月4日
  • S7-200设密码

    我想在S7-200PLC中设置密码 不让别人下载程 要怎么样设置PLC的密码啊!! 最佳答案 1、系统快中,密码权限设置为4级。2、所有 21x&nb…

    SIMATIC S7-200 2020年11月1日
  • 数据纪录的问题

    有个西门子S7-200的问题想请教下大家啊:  我用STEP-7编程时,在数据记录向导存储一个电流信号,到我在 S7-200 Explorer 的存储卡里面找不…

    SIMATIC S7-200 2021年7月5日
  • s7 200运动控制库map 偶尔报故障 非致命错误

    用s7 200控制伺服, 做追剪运动 速度35m/min,plc偶尔报非致命错误 10指令在当前pto操作模式不允许执行 位置在q…

    2017年6月2日
  • 编码器与PLC的连接

    我用的是S7-200PLC与雷赛科技生产的伺服驱动器做一个机械手控制,伺服驱动器上有6根编码器反馈线,分别是:+A,-A,+B,-B,和+Z,-Z问题是怎么与PLC连接请各位高手给…

    SIMATIC S7-200 2020年10月31日
  • 德国产S7-200在STEP7中支持中文吗?

    德国产S7-200在STEP7中支持中文吗?还是只有CN的才支持中文? 最佳答案 S7-200CN系列的只能在V4.0 STEP 7 MicroWIN…

    SIMATIC S7-200 2021年7月5日
  • S7-200的FM认证问题

    各位大侠,想请教一下,S7-200系列产品有一个FM的防爆认证,证书上写这个系列的产品有工厂保险联盟:等级号3600,等级号3611,FM级别I,分区2,组A、B、C和D危险位置,…

    SIMATIC S7-200 2020年10月31日
  • PID过程值波动太大

    用向导做的%ignore_a_1%调节,控制变频器调节调节流量,流量值是由秤盘计算出来的的滑动差值,设置值比如是5克每秒,用10毫秒定时中断读取并计算的差值波动太大,应该怎么改善呢…

    SIMATIC S7-200 2021年7月5日
  • S7200中的温度和触摸屏如何确定转换关系

    我在触摸屏中输入 启动 停止的 温度 数值比如是 100 80 度 在 S7200PLC&…

    SIMATIC S7-200 2021年7月5日
  • S7-200控制2台变频器的问题

    我用S7-200226通过MODBUS控制一台台达变频器成功了,通过MODBUS控制2台失败了,应该没有通讯上,各位老师帮分析下原因。控制2台和1台的区别是什么?程序注意点在哪里?…

    SIMATIC S7-200 2021年7月5日

发表回复

登录后才能评论