VB与三菱PLC通讯的实现

   2024-09-09 建材之家430
核心提示:在工业生产中,人们常常面临着数据采集与管理。作为工厂自动化的三大支柱可编程控制器 PLC(Programmable Logic Controller),由于其安全可靠,广泛的用于数据采集与控制。生产过程中,要监视PLC内部的数据与运行状况,选用市场上的人机界面或组态软件,虽然功能丰富,但大都价格昂贵,在一些中小规模的生产场合,人们希望能自己用高级语言开发一个简易实用的通信程序。使用Visua

在工业生产中,人们常常面临着数据采集与管理。作为工厂自动化的三大支柱可编程控制器 PLC(Programmable Logic Controller),由于其安全可靠,广泛的用于数据采集与控制。生产过程中,要监视PLC内部的数据与运行状况,选用市场上的人机界面或组态软件,虽然功能丰富,但大都价格昂贵,在一些中小规模的生产场合,人们希望能自己用高级语言开发一个简易实用的通信程序。使用Visual Basic 6.0,开发串行通信程序时,有两种方法,一种是用Windows API函数,另一种是用VB支持的通信控件 MSCOMM。以下介绍使用通信控件方式实现通讯

1.硬件

采用SC-09编程电缆,连接PC串口与PLC编程口实现通讯。

2.PLC编程口的通信协议简介


通信格式:

波特率9600,偶校验,8位数据位,一位停止位。 具体请参考有关资料,以下举例说明其通讯格式

1)、DEVICE READ(读出软设备状态值)

计算机向PLC发送:


3.具体程序说明

MSComm控件简介用来提供简单的串行端口通信功能,也可以用来创建功能完备、事件驱动的高级通信工具。Mscomm控件提供了一系列标准通信命令的使用界面。使用它可以建立与串行端口的连接,通过串行端口再连接到其它设备(如调制解调器、PLC),发出命令,交换数据,以及监视和响应串行连接中发生的事件和错误。

数据读与写采用函数input和output

(1)窗口加载程序
Private Sub Form_Load()
MSComm1.CommPort = 1 ‘选择COM1口
MSComm1.Settings = "9600,e,7,1"
If mscomm1.portopen=false then mscomm1.portopen=true
End Sub

(2)数据读取子程序:

Public Function GetData(ByVal StartAddress As String, ByVal GetBytes As Integer, ByVal Hex_Bytes As String) As String
MSComm1.InputLen = GetBytes * 2 + 4
MSComm1.Output = STX + CMD_Read + StartAddress + Hex_Bytes + ETX + GetSumChk(CMD_Read + StartAddress + Hex_Bytes + ETX)
‘传送数据组成:起始符+命令+首地址+数据位+结束符+和检验码
GetData = MSComm1.Input
MSComm1.InBufferCount = 0
MSComm1.InputLen = 0
End Function

 
【温馨提示】本文内容和观点为作者所有,本站只提供信息存储空间服务,如有涉嫌抄袭/侵权/违规内容请联系QQ:727533600 删除!
 
举报收藏 0打赏 0评论 0

上一篇:三菱PLC编程电缆通讯端口的设置方法

三菱PLC上传程序时出现通讯错误的原因1、三菱PLC编程电缆的通讯端口及波特率是否设置正确。如:点串口图标->端口RS232->波特率9.6k/bps->确定->再点通讯测试,如果显示通讯成功则硬件连接没问题。2、三菱PLC中是否有写入程序,或说PLC是否正常工作过。3、程序是否加密,也有程序丢失的情况,但很少。4、三菱PLC有否...

下一篇:三菱plc的译码指令

DECO译码指令本人感觉蛮难理解。最近有网友说对难懂的指令,可以编一小段指令进行试验,然后看结果,比较好理解。我用三菱PLC仿真软件进行仿真运行。我用M8013的上升沿去触发MOV K0 D0,用M8013的下降沿去触发INCP D0,然后用译码指令DECO D0 Y100 K3去译码,本意是让Y00~Y07循环输出。可结果是只有Y00和Y01交替输出。...
 
更多>同类电工资讯
推荐图文
推荐电工资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  版权声明  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报