读取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日 下午10:47
下一篇 2021年7月4日 下午10:48

相关推荐

  • S7-200,smart仿真软件

    那里有s7-200.200smart仿真软件下载 最佳答案 http://www.pc6.com/softview/SoftView_75921.htmlhttps://www.j…

    SIMATIC S7-200 2021年7月5日
  • 用瞬时流量计算累计流量,怎样才能保证误差最小

    我用S7-200  PLC作了一个大型泵站,用户要求显示瞬时流量和累积流量,但只能提供4-20mA的电流输入信号,怎样才能保证用瞬时流量计算累计流量误差最小。如…

    SIMATIC S7-200 2021年7月5日
  • 编程软件求指点

    “从来没安装过编程软件菜鸟级的直接安装STEP7 MicroWIN V4.0 SP9能装上么 最佳答案 STEP7 MicroWIN&nbs…

    SIMATIC S7-200 2020年10月31日
  • 开关量和模拟量控制

    现在有个项目是用一个调节阀(模拟量,加热)和一个开关阀(开关量,冷却)共同控制温度,精度要求较高,请教各位高手怎么来控制比较好  最佳答案 设定一个温度反应区间,在这个区…

    SIMATIC S7-200 2020年11月1日
  • S-200 CPU226两个RS485,能不能分别接一个触摸屏K-TP178

    现场PLC为S7-200 CPU226,目前PROT 0端口接了一个触摸屏K-TP178,想在另一个RS485端口再接一个触摸屏K-TP178,新增的触摸屏距离…

    SIMATIC S7-200 2021年7月5日
  • s7-200plc温度处理编程问题?

    我是初学者,在学习PLC模拟量编程遇到以下问题,1、子程序的符号表里面的名称是随便编写的吗?(见图1);2、子程序中i_di转换指令中的lw0指什么?(见图2);3、子程序中DIV…

    2020年10月31日
  • s7200存储卡问题

    我有一个存储卡,原先用CPU222储存过程序,现在我要用CPU224在这个卡里储存新的程序,或要清除原来的程序,当我点plc>存储卡擦除后,显示“由于PLC正在上载/下载,处…

    SIMATIC S7-200 2021年7月5日
  • S7-200扩展电缆

    现在做了一个S7-200系统,CPU为226,直接与223(16I/16O)连接,然后用扩展电缆连接几个开关量模块,目前是当插上扩展电缆,CPU就运行不了,是扩展线的问题吗/ 最佳…

    SIMATIC S7-200 2020年10月31日
  • s7-200 有哪些版本?

    s7-200到目前为止有哪些版本?他们分别都有什么功能?有没有兼容cp5711的功能?谢谢 问题补充:用cp5711监控s7-200的方法有人试过吗?用的是那个版本啊? 最佳答案 …

    SIMATIC S7-200 2020年10月31日
  • 固态继电器输出问题

    一般采集板卡数字量输出都是TTL电平,控制一个TTL电平输入的固态继电器,固态继电器的输出端接入PLC输入端,以完成控制。固态继电器输出不是无源触点,这种接法有问题吗?谢谢。 最佳…

    SIMATIC S7-200 2020年10月31日

发表回复

登录后才能评论