WINCC 怎样用C脚本对 MSComm属性操作

我在WINCC上安装了串口通信控件MSComm,
但不知怎样用C脚本对 MSComm属性操作,
急啊,请高手指点!!!

最佳答案

转贴:szy868 
  

  主题:关于WINCC使用MSCOMM控件的问题

 

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

 
 前面已有“醉夜清风”、“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调用试一下,可是那对我来说太难了,痛苦啊痛苦啊………
 

提问者对于答案的评价:
谢了!

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月11日 下午2:35
下一篇 2019年6月11日 下午2:36

相关推荐

  • s7-200 pc access wincc通讯问题

    现有如下硬件 两套s7-200 其中cp243-1 工控机配普通以太网卡,pc access软件一套 我现在要用wincc6.0来…

    SIMATIC WinCC 2019年6月11日
  • wincc的全局变量

    我想把外部二进制变量放到全局变量中,完成一个任务:当此变量变化,弹出提示窗口,请高手解答 最佳答案 用“黄河远上”的方法是可以的,但是有一个缺点,如果Msgbox的窗口不做处理,那…

    SIMATIC WinCC 2017年12月10日
  • WINCC 用户归档视图数据显示不全

    小弟第一次用用WINCC做用户归档,在用户归档表格视图里面有一列数据显示不全,问题如附件的图片所示。最后一行的最右边一列应该显示为ABCDEFGHHIJKMLNOPQRST,但实际…

    2018年12月3日
  • 趋势曲线

    求助各位兄弟姐妹,我把多个曲线做到了一个趋势图上,这样显示有些乱,我想让显示哪些曲线就显示哪些曲线,其他的曲线隐藏起来。谢谢 最佳答案 要实现曲线的单独显示,方法有几种:1、在一个…

    SIMATIC WinCC 2017年11月29日
  • 怎么通过修改一处变量,达到同时修改多个位置的效果

    一个变量多处使用,比如手动、自动切换按钮,控制同一个变量,并且动态显示按钮颜色,如下图。如果要修改控制变量(比如换成motor2_A_M),需要修改四处,有没有办法,我只要修改一个…

    2020年11月1日
  • Wincc报警控件中,报警数量的问题

    请教:    在Wincc报警控件中   1·是否涉及报警数量的问题呢?是否有最大限呢? &nbsp…

    SIMATIC WinCC 2019年6月10日
  • OPC Server与WinCC6.0通信“接收超时错误”?

    我现在正在做一个项目:一台上位机(WinCC6.0版本),5个三菱PLC子系统。上位机和PLC通信时,我采用了三菱的OPC Server软件由RS485串口通信模式进行通…

    SIMATIC WinCC 2021年7月5日
  • WinCC下拉列表控件显示多个变量值

    WinCC里插入Siemens STEP7 S7ComboBox控件,在下拉列表里显示Tag1、Tag2、Tag3等变量的值,变量类型文本8位字符集。VB脚本该…

    SIMATIC WinCC 2020年11月1日
  • WINCC变量连接

    我想需求两个帮助:1.在变亮属性动作中,直接连接中的源和目标都应该如何选?我要连接的外部变量例如I0.0地址是连接在源中还是目标中?请详细的讲讲。2.WINCC画面中图库里的图片如…

    SIMATIC WinCC 2019年6月11日
  • wincc系统应如何维护?

    我使用的是wincc6.2软件,运行了10个月,最近发现系统启动或停止需要花费大量的时间,检查CPU的状态发现处于满负荷状态。我现在应怎么办?另外,我在界面中使用了”在线报表控件“…

    SIMATIC WinCC 2017年12月9日