谁知道Wincc与PIC18系列单片机如何通讯?

正在做一个项目要求Wincc能够与PIC18系列的单片机通过串口通讯,但是不知道如何实现。有谁能够帮我解决这个问题?

问题补充:
通过MODBUS rtu 协议传输,协议中说到数据帧之间以3.5个字符为间隔,3.5个字符传输的时间就1.5ms,这么短的时间,wincc能够捕捉到吗?

最佳答案

能做到,而且方法很多:
  1.可以用WinCC+MsComm控件直接编程读取
  2.用VB/VC+MsComm控件读取后通过OPC/DDE/OLE等其他方式再转至WinCC。

  用MsComm控件怎么做串口通讯应该不用我说了吧,^_^,网上的代码一搜一大框。

  第1种方法:WinCC支持VBS,也支持Windows控件,因此使用方法跟VB差不多。发送需要用全局脚本定时发送:
  Dim oMsComm
  Set oMSComm = HMIRuntime.Sceens("CommPdl").ScreenItems("MSComm1") '#获取MsComm控件
  If oMsComm.PortOpen = True Then '#判断串口是否已经打开
   oMsComm.Output = "Sending Char" '#发送代码
   ........
  End If
  如通讯成功并接收到字节时,将触发控件的Events->Object Events -> OnComm事件,在此编程接收字节并进行校验即可。
  Sub OnComm(Byval Item)     
  'HMIRuntime.Trace  Item.Input & vbCrLf
  .......你的校验代码
  End Sub
  该方法可能会占用WinCC大量资源,且稳定性较差。

  第2种方法:VB/VC通过MsComm控件将数据读上来后,可通过OPC/DDE/OLE将数据传递给WinCC。OPC Client方式网上有现成代码,不过较为复杂。DDE已经没有多少人用了,最简单的应该是OLE方式了。
  这里以VB6为例,选择工程 -> 引用,引用WinCC HMIRuntime 1.0 Type Library,下面是如何将值传给WinCC的Tag
   Dim oWinCCRT As New CCHMIRUNTIME.HMIRuntime
     oWinCCRT.Tags("MyTag").Write 100.0 '这里改成你自己的Tag和值就可以了。
  

 补充:没有问题的,其实时间是由Master来掌握的。如果你对WinCC不放心,那就用VB好了,^_^。

提问者对于答案的评价:
专业,认真。谢谢啦!

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

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

相关推荐