huasum >《西门子》
阅499转82022.06.26 江西关注
接触西门子s7-200一段时间后,接手一个通信项目,需要在触摸屏上显示三台pid温度表的温度。
一开始打算触摸屏多余的串口转485直接连接温度表,后来由于一直通信不上,怀疑触摸屏的问题,于是打算用plc来读取pid表,走的是modbus协议,即port1接三台pid表,port0用来连触摸屏以及下载程序。好了,直接上代码。
1、定义port1口的modbus属性,注意,定义完后,如果要再用port1口下载程序的话,必须先把plc设成stop(专家请无视)。
这里的奇偶校验是个坑,要找到合适的,否则error的值会一直是为3,没有返回值
2、这里是关键了,轮询三台485连接的pid温度表,这里利用done来实现三台pid表的msg发送工作,这样也能保证返回数据互不干扰。
打开APP查看高清大图
打开APP查看高清大图
3、同一时间只能有一个msg在工作,所以一定要让这几个m10.x分别释放
打开APP查看高清大图
4、解析返回的数据,这部分就比较简单了,到处都有范例
打开APP查看高清大图
经过一周的研究,总算把三台仪表的数据稳定的传出来,但是还有个疑问,modbus返回的数据里,为什么找不到地址码信息,只有返回41001的值,如果有地址码,就更好了。
下周要继续研究分别写入三个pid表参数的功能,成功了再来分享。
最后,感谢网络上那些开源的资料,虽然弯也没有少绕,
,同时鄙视一下那些要注册才能看资料的“专业”网站,以及要各种xx币才能**的资料。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。
MOBUS只是一种软件协议,协议就是规定了一种"暗语",让主从站之间可以"通话"。也就是把0和1翻译成双方都明白的命令。
这很类似于你在不同品牌的电脑上,装什么软件系统。
而RS232和RS485相当于这个电脑硬件。
他们只是硬件接口。在这个硬件上,也不只能跑MODBUS协议,还能跑其他自拟协议。
同样,MODBUS也不光可以用于RS232和RS485,还可以用于POWERBUS,MBUS,等其他硬件之上。
例如这张图,上面的波形是来自MCU的原始数据接口UART
下面是RS485差分线波形。RS485只不过把来自MCU的UART的0-5V或者0-3.3V的电平,转换为翻转颠倒的5V压差电平并扩流驱动线缆。这就是硬件接口做的事情。
MODBUS只是一种软件。
但要注意,RS232是全双工通讯的,RS482是半双工通讯的。
施工布线差别就更大了,RS232只能一对一,最远通讯距离15米。而RS485支持一对多大网络通讯。
布线复杂度也不同
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)