技术论坛

关于WINCC使用MSCOMM控件的问题

作者 主题
侠客

经验值: 618
发帖数: 101
精华帖: 6
关于WINCC使用MSCOMM控件的问题
精华帖


只看楼主 只看精华 2006-11-09 00:10:13

查了一下前面各位大侠所提的有关此方面的问题,加上这两天的试验,总结一下,提出问题,希望各位大侠指点。

前面已有“醉夜清风”、“hihihi”、“博雅”等朋友提出过,参见以下所例帖子:
http://www.ad.siemens.com.cn/club/bbs/post.asp?myreply=&b_id=5&a_id=198857&s_id=0&num=23#anch
http://www.ad.siemens.com.cn/club/bbs/post.asp?b_id=5&a_id=197801
http://www.ad.siemens.com.cn/club/bbs/post.asp?b_id=5&a_id=130952

1、使用C脚本:
参见“醉夜清风”在“希望高手参与讨论--在WINCC中实现利用mscomm控件与串口通讯”中所提到的方法,使用四种函数对MSCOMM控件的属性值进行读写。在网上查了一下,好像是参照一篇论文《Mscomm与C在监控系统和智能仪表的串行通讯中的应用》的。下载了这篇论文看了看,写得很简约,实在有些怀疑作者是否真的是用这种方法实现的。
用这种方法试了一下,对串口进行打开、关闭的控制没问题,试图编写读写数据的控制时,感觉太麻烦了,于是暂时放弃。

2、使用VBS:
这个花了一天多的时间。
现在做到了以下功能:串口的打开、关闭控制;数据的接收;ASCII码的发送(非ANSI码,仅包括其前127个字符)。
现在主要待解决的问题是这样的:
对于ANSI码的后120多个字符的发送,在VC、VB中的代码均可以实现,其中VC中可以以CBYTEARRRY数组实现、VB中是以BYTE数组实现。但在VBS中如何实现,现在还没有找到办法,查阅了VBS的说明,并且试验了,使用CHR()函数肯定不行,因为其只能将ASCII字符转换成ASCII字码,不能正确转换字码>&H7E的ANSI字符,查看了网上的介绍说,要使用二进制方式进行传输,也就是说要使用VARIANT型变量的BYTE子类型进行,但我试着将一个BYTE类型数据赋值给COMM.OUTPUT后,并没有反应。而字符型或字符串型均可,包括UNICODE字符都可以正常传输。
再后来我将两个串口对接,用串口调试助手向WINCC中发送各种数据,在ONCOMM事件中将收到的数据从COMM.INPUT赋值给COMM.OUTPUT,直接发出去,也都可正常显示。
从COM口接收的数据也是VARIANT型数据,直接输出到WINCC中的一个无符号8位数据的变量,也可正常显示,也就是说接收的问题已解决,完全可以进行下一步的解析处理了。

在VBS中调用API函数肯定不行,在网上也有这方面的介绍。

前面有个帖子里,“博雅”兄说不能在VBS中调用MSCOMM,但我感觉并不是不能用,现在我已经做到这一步了,可以说关键问题只剩下最后一步了(变量赋值的问题了),要放弃实在是有点可惜啊!
如果设备的通讯代码只用ASCII方式,那么在VBS中调用MSCOMM控件到是可行的了。

前面几位仁兄大概也曾为此问题困扰过,不只现在问题是否得到解决了,能不能出来给个提示啊。
要是在VBS中确实没有办法解决,下一步准备在C中用API调用试一下,可是那对我来说太难了,痛苦啊痛苦啊………

 
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=284783&b_id=5&s_id=0&num=12

版主

经验值: 17310
发帖数: 8470
精华帖: 18
回复:关于WINCC使用MSCOMM控件的问题


只看楼主 只看精华 2006-11-09 19:17:52
MSCOMM控件的默认接收方式为字符型(InputMode属性为0)。为1时,数据通过 Input属性以二进制形式取回。
无论成与败,无论甜与苦,我还是我。
以下网友喜欢您的帖子:

  
侠客

经验值: 618
发帖数: 101
精华帖: 6
回复:关于WINCC使用MSCOMM控件的问题


只看楼主 只看精华 2006-11-10 10:47:53
城版:是这样的,不过这只对接收而言有效,对发送无效。
 
以下网友喜欢您的帖子:

  
侠士

经验值: 1536
发帖数: 974
精华帖: 4
回复:关于WINCC使用MSCOMM控件的问题


只看楼主 只看精华 2006-11-12 21:00:21
深受困绕,哪位能讲清楚
请多指教
以下网友喜欢您的帖子:

  
游侠

经验值: 419
发帖数: 75
精华帖: 1
回复:关于WINCC使用MSCOMM控件的问题


只看楼主 只看精华 2006-11-16 23:40:08
不知道您做这个来连接什么设备?走的什么协议?
有个折衷的方法不知道是否可行,找到支持该协议的opc server
然后通过opc的方式来读写数据。
我用wincc6.0 sp3连接支持modbus 协议的温度控制表,最后是通过modbus opc server来做中转来完成的。
 
以下网友喜欢您的帖子:

  
奇侠

经验值: 6879
发帖数: 5350
精华帖: 25
回复:关于WINCC使用MSCOMM控件的问题


只看楼主 只看精华 2006-11-19 14:56:57
使用OPC Server方式简单快捷
怎么论坛改成这样了??
以下网友喜欢您的帖子:

  
侠客

经验值: 618
发帖数: 101
精华帖: 6
回复:关于WINCC使用MSCOMM控件的问题
精华帖


只看楼主 只看精华 2006-11-30 17:29:44
偶然在微软网站上发现了此问题的解决方法:
下载一个ADS.DLL,注册;
在WINCC中用VBS脚本,比如:
Dim cnvt
Dim Temp()
Dim obj_s_Com
Dim sOutput

Set cnvt = CreateObject("ADs.ArrayConvert")
Set obj_s_Com = ScreenItems("m_Com")
obj_s_Com.CommPort = 1

Redim Temp(2)

Temp(0) = &heb
Temp(1) = &h90
Temp(2) = &h71

Dim v,v1,v2,v3,v4
v = Temp
HMIRuntime.Trace "The V is:" & VarType(v) &" " &TypeName(v) &vbCrLf
'obj_s_Com.Output = v

v1 = cnvt.CvOctetStr2vStr(v)
HMIRuntime.Trace "The V1 is:" & VarType(v1) &" " &TypeName(v1) & " " &vbCrLf
'obj_s_Com.Output = v1

v2= cnvt.CvStr2vOctetStr(v1)
HMIRuntime.Trace "The V2 is:" & VarType(v2) &" " &TypeName(v2) & " " &vbCrLf
'obj_s_Com.Output = v2

v3 = cnvt.CvOctetStr2vHexStr(v)
HMIRuntime.Trace "The V3 is:" & VarType(v3) &" " &TypeName(v3) & " " &vbCrLf
'obj_s_Com.Output = v3

v4 = cnvt.CvHexStr2vOctetStr(v3)
HMIRuntime.Trace "The V4 is:" & VarType(v4) &" " &TypeName(v4) & " " &vbCrLf

obj_s_Com.Output = v4

我们可以发现比如>&H7E的ANSI字码也可以通过串口正常发送。
这样从可行性上来讲,任何不同的串口通讯协议都可以在WINCC中采用MSCOMM控件加VBS脚本来实现。只要你不嫌麻烦,我们可以用小点数的WINCC来实现更多的外部数据量的采集。
不知大家以为然否?

VDS.DLL的下载地址是:http://support.microsoft.com/kb/250344/en-us
 
以下网友喜欢您的帖子:

  
版主

经验值: 17310
发帖数: 8470
精华帖: 18
回复:关于WINCC使用MSCOMM控件的问题


只看楼主 只看精华 2006-11-30 19:32:43
谢谢。
无论成与败,无论甜与苦,我还是我。
以下网友喜欢您的帖子:

  
游侠

经验值: 312
发帖数: 215
精华帖: 0
回复:关于WINCC使用MSCOMM控件的问题


只看楼主 只看精华 2007-04-13 15:47:36
"用wincc6.0 sp3连接支持modbus 协议的温度控制表,最后是通过modbus opc server来做中转来完成" 是不是就意味着必须在上位机运行两个程序,这在做工程的时候甲方好像不允许阿!!?
学习ing,进步中
以下网友喜欢您的帖子:

  
至圣

经验值: 28593
发帖数: 10822
精华帖: 131
回复:关于WINCC使用MSCOMM控件的问题


只看楼主 只看精华 2007-04-13 19:53:01
那个叫做驱动程序。

微信公众号:PLC标准化编程,ZHO6371995
以下网友喜欢您的帖子:

  
游侠

经验值: 312
发帖数: 215
精华帖: 0
回复:关于WINCC使用MSCOMM控件的问题


只看楼主 只看精华 2007-04-16 09:07:25
具体的是不是运行第三方程序,然后向wincc通过opc server提供数据
这样对系统资源的占用 与 直接在wincc6利用vbs mscomm 控件编程直接通讯 相对如何呢???
学习ing,进步中
以下网友喜欢您的帖子:

  
游侠

经验值: 312
发帖数: 215
精华帖: 0
回复:关于WINCC使用MSCOMM控件的问题


只看楼主 只看精华 2007-04-16 14:41:08
欢迎大家继续关注和讨论这个老问题 有人在吗?
学习ing,进步中
以下网友喜欢您的帖子:

  
至圣

经验值: 28593
发帖数: 10822
精华帖: 131
回复:关于WINCC使用MSCOMM控件的问题
精华帖


只看楼主 只看精华 2007-04-17 08:54:04
这个问题事实上已经讨论完结了。
由于不是主流技术方向,所以如果仍对此问题感兴趣并愿意深究的话,只能是仁者见仁,智者见智了。

微信公众号:PLC标准化编程,ZHO6371995
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
关于WINCC使用MSCOMM控件的问题
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。