求助:用VB写程序通过串口采集下位机控制器的问题 点击:1048 | 回复:7



jiangbin1937

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:24帖 | 60回
  • 年度积分:0
  • 历史总积分:130
  • 注册:2007年6月04日
发表于:2007-07-27 20:58:00
楼主

    用组态王来做上位机的控制软件的,不过,下位机的设备组态王不支持,查了资料,知道可以用VB写一个串口采集程序,通过DDE使组态王与VB串口通讯程序动态交换数据. 我的思路是通过VB的Mscomm 控件.
    通过串口程序来读取下位机的数据并向下位机下达指令.
    现在的问题是:这个协议我看不太明白.
如下表所示:

一、上下位机命令串格式
BYTE型数据,9600,8,N,1
格式: 起始字 地址 长度 校验1 校验2 DATA串 结束字
例子: H 1 4 48 48 1,2,3,4 FF
1、起始字:数据串起始标志,高压为 H  ;
2、地址: 下位机设备地址;
3、长度: DATA串字节数
4、校验: BCC校验码,DATA串ASCII码之异或和,再转化为ASCII
例:DATA串异或和为3,16进制为:03H,则校验1=48(30H),校验2=51(33H)
5、DATA串:要传送的数据,转化为ASCII码传送。
例:数据193 ,16进制为:C1H,则传送时为:67(43H),49(31H)
6、结束字:255

二、上下位机通信协议(高压控制器)DATA串数据协议(末转换成ASCII)(↑为上行,↓下行,↑↓为上下行皆有)
命令类型 设备操作 数据 数据 数据
1 ↓
设备

动 1开机 2停机
         3恢复 4中止
           5下降 
            ↓↑
2
↑下行命令
反馈命令
类型
          ↑1正确
           0故障
          ↑

3 ↓ 参数读取

4 ↓ 参数整定 数据↓ 数据↓ 数据↓ 数据↓

5 ↓ 实时数据


1、下行整定参数指令
1—[命令类型↓] 2—[工作方式↓] 3—[二次电流H↓] 4—[二次电流L↓]
5—[二次电压↓] 6—[闪络频率↓] 7—[闪络封锁↓] 8—[幅度比↓]
9—[占空比H↓] 10—[占空比L↓]

2、上行整定数据返回指令
1—[命令类型↑] 2—[工作方式↑] 3—[二流量程H↑] 4—[二流量程L↑]
5—[二次电流H↑] 6—[二次电流L↑] 7—[二次电压↑] 8—[闪络频率↑] 
9—[闪络封锁↑] 10—[幅度比↑] 11—[占空比H↑] 12—[占空比L↑] 13—[远控↑]

3、上行实时数据返回指令
1—[命令类型↑] 2—[工作方式↑] 3—[一次电流H↑] 4—[一次电流L↑] 
5—[二次电流H↑] 6—[二次电流L↑] 7—[[二次电压↑] 8—[闪络频率↑]
9—[导通角↑] 10—[油温↑] 11—[运行状态↑] 12—[控制状态↑] 13—[故障类型↑]
14—[远控↑]



我个东西,我看不太明白!

有这个部分,信息够不够我来编写串口通讯程序呀??

因为第一次写,所以不是很清楚.
请大家和我讲一讲.如果可以请留下QQ:
我也好单\独向您请教.
谢谢!


   



deng_lp

  • 精华:5帖
  • 求助:0帖
  • 帖子:65帖 | 2669回
  • 年度积分:0
  • 历史总积分:2876
  • 注册:2001年6月19日
发表于:2007-07-30 08:44:00
1楼
BYTE型数据,9600,8,N,1
格式: 起始字 地址 长度 校验1 校验2 DATA串 结束字
例子: H 1 4 48 48 1,2,3,4 FF
1、起始字:数据串起始标志,高压为 H  ;
2、地址: 下位机设备地址;
3、长度: DATA串字节数
4、校验: BCC校验码,DATA串ASCII码之异或和,再转化为ASCII
例:DATA串异或和为3,16进制为:03H,则校验1=48(30H),校验2=51(33H)
5、DATA串:要传送的数据,转化为ASCII码传送。
例:数据193 ,16进制为:C1H,则传送时为:67(43H),49(31H)
6、结束字:255
写得 这么详细了,还需要帮助?
例子: H 1 4 48 48 1,2,3,4 FF
1,2,3,4为你的数据位 48 48 为BCC校校验,1为地址,4为长度
用16进制码下发到串口就好

jiangbin1937

  • 精华:0帖
  • 求助:0帖
  • 帖子:24帖 | 60回
  • 年度积分:0
  • 历史总积分:130
  • 注册:2007年6月04日
发表于:2007-07-30 15:13:00
2楼
谢谢了.前几天没搞清楚.
还有一问:这里的DATA串,是固定的4字节吗?
每一帧都是4字节?
根据下面的
3、上行实时数据返回指令
1—[命令类型↑] 2—[工作方式↑] 3—[一次电流H↑] 4—[一次电流L↑] 
5—[二次电流H↑] 6—[二次电流L↑] 7—[[二次电压↑] 8—[闪络频率↑]
9—[导通角↑] 10—[油温↑] 11—[运行状态↑] 12—[控制状态↑] 13—[故障类型↑]
14—[远控↑]
这个就相当于上面那帧的DATA串部分,这要几个字节呢???

#$%@#!

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 1回
  • 年度积分:0
  • 历史总积分:10
  • 注册:2007年6月28日
发表于:2007-07-30 18:38:00
3楼
39362580

deng_lp

  • 精华:5帖
  • 求助:0帖
  • 帖子:65帖 | 2669回
  • 年度积分:0
  • 历史总积分:2876
  • 注册:2001年6月19日
发表于:2007-07-31 08:20:00
4楼
1、下行整定参数指令
1—[命令类型↓] 2—[工作方式↓] 3—[二次电流H↓] 4—[二次电流L↓]
5—[二次电压↓] 6—[闪络频率↓] 7—[闪络封锁↓] 8—[幅度比↓]
9—[占空比H↓] 10—[占空比L↓]

2、上行整定数据返回指令
1—[命令类型↑] 2—[工作方式↑] 3—[二流量程H↑] 4—[二流量程L↑]
5—[二次电流H↑] 6—[二次电流L↑] 7—[二次电压↑] 8—[闪络频率↑] 
9—[闪络封锁↑] 10—[幅度比↑] 11—[占空比H↑] 12—[占空比L↑] 13—[远控↑]

3、上行实时数据返回指令
1—[命令类型↑] 2—[工作方式↑] 3—[一次电流H↑] 4—[一次电流L↑] 
5—[二次电流H↑] 6—[二次电流L↑] 7—[[二次电压↑] 8—[闪络频率↑]
9—[导通角↑] 10—[油温↑] 11—[运行状态↑] 12—[控制状态↑] 13—[故障类型↑]
14—[远控↑]
还需要有厂家的功能表解释才能完整解析。

wjun7610

  • 精华:0帖
  • 求助:0帖
  • 帖子:14帖 | 199回
  • 年度积分:0
  • 历史总积分:436
  • 注册:2004年2月01日
发表于:2008-04-15 08:29:21
5楼
很详细的东西了可以写出软件了,可以先使用串口调试软件测试后再编写人家。

独角怪兽

  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 222回
  • 年度积分:0
  • 历史总积分:310
  • 注册:2006年3月05日
发表于:2008-04-15 08:47:08
6楼

第一方案:掏点钱,让组态王给写个驱动,如果组态王不写或者收费太高,可以选择别的组态软件,比如三维力控,紫金桥,世纪星等等,谁给写驱动用谁的组态软件。

第二方案:让下位机厂家,提供标准通用的通讯协议,比如modbus协议或OPC服务器,如不能提供,改选能提供的厂家的产品。

第三方案:才是自己开发,不过应考虑向甲方收取一部分费用。

 

 

公鸡中的战斗机

  • 精华:0帖
  • 求助:0帖
  • 帖子:47帖 | 237回
  • 年度积分:0
  • 历史总积分:1056
  • 注册:2003年12月07日
发表于:2008-04-15 09:38:07
7楼

学习了,本人正在学习VB,希望高手们多给我们这些刚接触通信的菜鸟们指点


热门招聘
相关主题

官方公众号

智造工程师