求PC与三菱PLC之前通信实例

问题描述

小弟第一次接触PC与PLC通信,希望能有个实例参考。我已经对端口进行了初始化等操作,想给PLC发送一个信号。端口为port1发送信号是否为port1.write("...")?我想发送一个信号为”M100“试了port1.write("M100")不好用,请问该如何发送信号?信号是否有什么格式和规则,希望大牛给一个例子,就是PC给PLC发送一个为"M100"的信号还有读取PLC地址“M101”中的值的例子。

解决方案

解决方案二:
你要给出协议,那个M100这不是协义吧。
解决方案三:
引用1楼wyd1520的回复:

你要给出协议,那个M100这不是协义吧。

就说是信号。。。。说是给机器发送这个Y0的小灯就亮了。。。。。Y0路就导通了
解决方案四:
引用2楼Lin0601的回复:

Quote: 引用1楼wyd1520的回复:
你要给出协议,那个M100这不是协义吧。

就说是信号。。。。说是给机器发送这个Y0的小灯就亮了。。。。。Y0路就导通了

你确认这是信号数据M100???如果是那要这样byte[]signal=System.Text.Encoding.UTF8.GetBytes("M100")port1.write(signal);
解决方案五:
引用3楼wyd1520的回复:

Quote: 引用2楼Lin0601的回复:
Quote: 引用1楼wyd1520的回复:
你要给出协议,那个M100这不是协义吧。

就说是信号。。。。说是给机器发送这个Y0的小灯就亮了。。。。。Y0路就导通了

你确认这是信号数据M100???如果是那要这样byte[]signal=System.Text.Encoding.UTF8.GetBytes("M100")port1.write(signal);

一个是字节数组一个是字符串类型不匹配吧。我改成byte[]signal=System.Text.Encoding.UTF8.GetBytes("M100");myPortCommon.port_Plc.Write(signal,0,signal.Length);也不好用,郁闷啊。没搞过完全没有经验。
解决方案六:
你先确认M100是不是协议指令。才有的说
解决方案七:
引用5楼wyd1520的回复:

你先确认M100是不是协议指令。才有的说

(1)起始字元(STX):ASCII码的起始字元STX对应的16进制数位0x02。无论命令信息还是回应信息,它们的起始字元均为STX,接收方以此来判知传输资料的开始。(2)命令号码:为两位16进制数。所谓命令号码是指上位机要求下位机所执行的动作类别,例如要求读取或写入单点状态、写入或读取暂存器资料、强制设定、运行、停止等。在回应信息中,下位机会将上位机接收到的命令号码原原本本的随同其它信息一同发送给上位机。(3)元件首地址:对应要操作的元件的相应的地址。如从D123单元中读取数据时,要把它对应的地址:0x10F6发送给PLC。(4)元件个数:一次读取位元件或字元件的数量。(5)结束字元(ETX):ASCII码的结束字元ETX对应的16进制数为0x03。无论命令信息还是回应信息,它们的结束字元均为ETX,接收方以此来判知此次通讯已结束。(6)校验码(Checksum):校验码是将STX-ETX之间的ASCII字元的16进制数值以“LRC(LongitudinalRedundancyCheck)”法计算出1个Byte长度(两个16进制数值00-FFH)的校验码。当下位机接收到信息后,用同样的方法计算出接收信息的校验码,如果两个校验码相同,则说明传送正确。
解决方案八:
引用5楼wyd1520的回复:

你先确认M100是不是协议指令。才有的说

校验和:SUM=30H+31H+30H+46H+36H+30H+34H+03H=174H这个等式是怎么成立的?
解决方案九:
你直接bytea=0x30+0x31+0x30+0x46+0x36+0x30+0x34+0x03结果就是0x174
解决方案十:
引用8楼wyd1520的回复:

你直接bytea=0x30+0x31+0x30+0x46+0x36+0x30+0x34+0x03结果就是0x174

这个是协议,请问我发一个"M100"信号,发送的数据应该是什么样的?PC给定信号(触发信号)导通与不导通的可监控状态寄存器M100M110D100(1)起始字元(STX):ASCII码的起始字元STX对应的16进制数位0x02。无论命令信息还是回应信息,它们的起始字元均为STX,接收方以此来判知传输资料的开始。(2)命令号码:为两位16进制数。所谓命令号码是指上位机要求下位机所执行的动作类别,例如要求读取或写入单点状态、写入或读取暂存器资料、强制设定、运行、停止等。在回应信息中,下位机会将上位机接收到的命令号码原原本本的随同其它信息一同发送给上位机。(3)元件首地址:对应要操作的元件的相应的地址。如从D123单元中读取数据时,要把它对应的地址:0x10F6发送给PLC。(4)元件个数:一次读取位元件或字元件的数量。(5)结束字元(ETX):ASCII码的结束字元ETX对应的16进制数为0x03。无论命令信息还是回应信息,它们的结束字元均为ETX,接收方以此来判知此次通讯已结束。(6)校验码(Checksum):校验码是将STX-ETX之间的ASCII字元的16进制数值以“LRC(LongitudinalRedundancyCheck)”法计算出1个Byte长度(两个16进制数值00-FFH)的校验码。当下位机接收到信息后,用同样的方法计算出接收信息的校验码,如果两个校验码相同,则说明传送正确。
解决方案十一:
那不懂,光从上面看不出协义,给你的说明里应有一些DEMO协义吧,
解决方案十二:
引用10楼wyd1520的回复:

那不懂,光从上面看不出协义,给你的说明里应有一些DEMO协义吧,

PLC协议中地址该怎么计算?例如D100和M100?
解决方案十三:
去网上下一个兼容三菱PLC通讯的组态软件啊,这底层的通讯很复杂的。做工控一般都要用组态软件来开发,从最底下搞起要搞到什么时候。
解决方案十四:
引用6楼Lin0601的回复:

Quote: 引用5楼wyd1520的回复:
你先确认M100是不是协议指令。才有的说

(1)起始字元(STX):ASCII码的起始字元STX对应的16进制数位0x02。无论命令信息还是回应信息,它们的起始字元均为STX,接收方以此来判知传输资料的开始。(2)命令号码:为两位16进制数。所谓命令号码是指上位机要求下位机所执行的动作类别,例如要求读取或写入单点状态、写入或读取暂存器资料、强制设定、运行、停止等。在回应信息中,下位机会将上位机接收到的命令号码原原本本的随同其它信息一同发送给上位机。(3)元件首地址:对应要操作的元件的相应的地址。如从D123单元中读取数据时,要把它对应的地址:0x10F6发送给PLC。(4)元件个数:一次读取位元件或字元件的数量。(5)结束字元(ETX):ASCII码的结束字元ETX对应的16进制数为0x03。无论命令信息还是回应信息,它们的结束字元均为ETX,接收方以此来判知此次通讯已结束。(6)校验码(Checksum):校验码是将STX-ETX之间的ASCII字元的16进制数值以“LRC(LongitudinalRedundancyCheck)”法计算出1个Byte长度(两个16进制数值00-FFH)的校验码。当下位机接收到信息后,用同样的方法计算出接收信息的校验码,如果两个校验码相同,则说明传送正确。

请问,三菱编程口与RS232口的协议通用吗?

时间: 2024-08-02 13:49:11

求PC与三菱PLC之前通信实例的相关文章

急求c# 与三菱plc 以太网通讯 案例 源代码

问题描述 希望有案例的源代码哦 解决方案 解决方案二:最好向三菱官方请求技术支持

通讯-基于VB的三菱PLC跟PC通信的(读取PLC的X寄存器状态)的例子

问题描述 基于VB的三菱PLC跟PC通信的(读取PLC的X寄存器状态)的例子 PLC是FX3u-48M的,小弟想做一个通讯的试验,我给PLC 的X0高电平后,想从VB上的程序读出X寄存器为高电平或低电平,Y寄存器的通断可以,但是要读X寄存器的状态该怎样设置?

vb编程-三菱plc与上位vb编的界面间以太网通信

问题描述 三菱plc与上位vb编的界面间以太网通信 用vb的winsock编了个服务器,三菱plc做客户端,但一直连接不上,vb还需要装什么驱动软件吗,三菱plc用的是Q系列的,求指点 解决方案 求大神指点呀,江湖救急呀

三菱plc编程-考试项目自动售货机三菱PLC控制 求编好的文件

问题描述 考试项目自动售货机三菱PLC控制 求编好的文件 考试项目自动售货机PLC控制 1.工作要求: 1)此售货机可投入5角.1元.5元硬币. 2)所售饮料标价: 可乐--2.50元. 橙汁--3.00元. 红茶--5.50元. 咖啡--10.00元 3)当投入的硬币和纸币总价值超过所购饮料的标价时,所有可以购买饮料的指示灯均亮,作可购买提示.(如:当投入的硬币总价值超过2.5元,可乐按钮指示灯亮:当投入的硬币总价值超过3元,可乐.橙汁按钮指示灯均亮:当投入的硬币总价值超过10.00元所有饮料

VS2010 MX Compnent 三菱 PLC

问题描述 求示例源码,通过VS2010与MXcomponent软件读写PLC分数不多,但是跪求各位大侠帮忙 解决方案 解决方案二:要供应商提供样例啊!你付钱卖硬件还不要服务,太傻了吧!解决方案三:这个很简单啊,安装MXcomponent后,加载一个合适的控件到工程中,调用SetDevice与GetDevice函数即可读写D寄存器了.我以前都是在32位系统下用,都没有问题:现在在Win764位下面,控件好像不能安装,不知道有没有经验的高人发下声解决方案四:安装好MXcomponent后,在安装目录

基于vb设计pc与gsm模块串口通信,发收text格式短信

问题描述 基于vb设计pc与gsm模块串口通信,发收text格式短信 小白一个,花好几天都没搞出来,跪求各位大大帮忙设计一个程序,最好有解释的.要求可以收发删除text格式短信... 解决方案 http://download.csdn.net/detail/hedilong0123/4611789

求大神解决,串口通信调试工具发出的一个字节和收回来的字节不一样

问题描述 求大神解决,串口通信调试工具发出的一个字节和收回来的字节不一样 电脑与PIC单片机的UART1B收发口通信,电脑串口调试工具发送0x01发回来一个0xc0, 下面是接收中断的程序: void __ISR(_UART_1B_VECTOR, IPL6SOFT) IntUart1BHandler(void) // { if (INTGetFlag(INT_SOURCE_UART_RX(UART1B))) { if (UARTReceivedDataIsAvailable(UART1B)) {

Ajax与服务器(JSON)通信实例代码_javascript技巧

Ajax与服务器(JSON)通信 Ajax这个词,不代表任何东西,它仅仅是称呼一系列促进客户端与服务器通信的技术时所用的一个术语.服务器通信时Ajax技术的核心内容,其目标就是从客户端向服务器发送信息,并接受后者的回传,以求在此过程中创建出更好地打用户体验来.Ajax之前所有的服务器通信都是在服务器上完成的,所以那是若想重绘页面的一部分,要么使用iframe(已淘汰),要么刷新整个页面.这两种方式都称不上是良好的用户体验. Ajax提供了两类服务器通信手段:同步通信和异步通信. 异步通信Ajax

PHP多线程编程之管道通信实例分析

 这篇文章主要介绍了PHP多线程编程之管道通信,实例分析了管道通信的原理与相关使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了PHP多线程编程之管道通信用法.分享给大家供大家参考.具体分析如下: 一个线程如果是个人英雄主义,那么多线程就是集体主义,你不再是一个独行侠,而是一个指挥家. 管道通信: 1. 管道可以认为是一个队列,不同的线程都可以往里面写东西,也都可以从里面读东西.写就是 在队列末尾添加,读就是在队头删除. 2. 管道一般有大小,默认一般是4K,也就是内容