求VB2010与松下PLC串口通信的代码

lyh0528 2013-07-18 10:58:32
求VB2010与松下PLC串口通信的代码
...全文
519 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xpowerrock 2013-07-23
  • 打赏
  • 举报
回复
想当年我也是学计算机的
sosoben 2013-07-22
  • 打赏
  • 举报
回复
引用 5 楼 u011344309 的回复:
谢谢楼上两位的帮助,我是个新手,会试着用下先,看能不能达到工作中的要求,主要是控制PLC命令,再由PLC控制电机转动,向上,向左,和向右,不知两们有没有例子的代码给我看看?
plc控制电机转动是要输脉冲的,你先编好PLC的程序吧,要不输出脉冲那里电脑很难控制。 一般控制电机我是用运动控制卡,或者电机的带串口或USB口的驱动盒
lyh0528 2013-07-22
  • 打赏
  • 举报
回复
PLC的程序由同事负责,我主要是做VB程序 新手啊,啥都不知道
lyh0528 2013-07-21
  • 打赏
  • 举报
回复
谢谢楼上两位的帮助,我是个新手,会试着用下先,看能不能达到工作中的要求,主要是控制PLC命令,再由PLC控制电机转动,向上,向左,和向右,不知两们有没有例子的代码给我看看?
sosoben 2013-07-19
  • 打赏
  • 举报
回复
我就是用**代替校验位的,plc能正确接收 当然你一定要算出校验位也行,校验码是将指令中的各个ASCII字符的16进制(00~FF)进行异或求和后生成的. 该校验码也以两个ASCII码表示

serialPort1.NewLine = "\r";
serialPort1.Open();
serialPort1.WriteLine("%01#WCSR00011**");//控制开关R0001的打开
System.Threading.Thread.Sleep(100);
serialPort1.WriteLine("%01#WCSR00010**");//控制开关R0001的关闭
良朋 2013-07-19
  • 打赏
  • 举报
回复
它这份资料里有点bug, 按它的写,你的校验位只好用*号代替了,我是反复尝试才写出上面正确代码的。楼主请按我的写,没有比这个更简单的代码了
sosoben 2013-07-19
  • 打赏
  • 举报
回复
良朋 2013-07-19
  • 打赏
  • 举报
回复
Dim Spiecal_Text_1 As String = "%01#WCSR030" & (i + 1).ToString & "1"
                    Dim Spiecal_Text_0 As String = "%01#WCSR030" & (i + 1).ToString & "0"

                    Dim PLC_Command_1 As String = Spiecal_Text_1 & calculate_for_plc(Spiecal_Text_1) & vbCr
                    Dim PLC_Command_0 As String = Spiecal_Text_0 & calculate_for_plc(Spiecal_Text_0) & vbCr

                    SerialPort1.WriteLine(PLC_Command_1)
                    Thread.Sleep(10)
                    SerialPort1.WriteLine(PLC_Command_0)
 '将asc码后转换成16进制后相与
    Function calculate_for_plc(ByVal str)
        Dim s As String = Nothing
        For i As Integer = 1 To Len(str)
            s = s Xor AscW(Mid(str, i, 1))
        Next
        Return Hex(s)
    End Function

16,722

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧