jzzjzq
级别: 略有小成
精华主题: 0
发帖数量: 62 个
工控威望: 200 点
下载积分: 566 分
在线时间: 72(小时)
注册时间: 2013-03-15
最后登录: 2024-04-23
查看jzzjzq的 主题 / 回贴
楼主  发表于: 2018-07-16 10:56
最近写一个程序,有四台西门子S1200之间通过TCP协议互联,通讯的数据都是用字节发送,接受端使用这些数据时,却是以字或双字使用。目前我不了解的是
A  发送数据是否默认是字节?能不能本来是INT就发送INT?
B 如果原数据为INT,而只能发送字节,接受端使用这个数据时,是否只能用DBX.DBWX 这样的形式来引用?这样可以使用,但是会报无法通过变量来分配的警报。我感觉好似不是正规途径。
可能很基础,但是看手册没有找到相关的说明,还请各位帮助。
jzzjzq
级别: 略有小成
精华主题: 0
发帖数量: 62 个
工控威望: 200 点
下载积分: 566 分
在线时间: 72(小时)
注册时间: 2013-03-15
最后登录: 2024-04-23
查看jzzjzq的 主题 / 回贴
1楼  发表于: 2018-07-16 12:25
引用
引用第1楼湛蓝小尔于2018-07-16 11:20发表的  :

不是非得BYTE,参考我的帖子,TCP通讯,你找一下。
定义发送和接收的数组和ARRY,INT也是可以的。取消优化块的访问

如果发送INT,指令里的LEN是否要乘2呢?另外,我的数据并不是很规整的INT或是BYTE,假如用BYTE发送了INT数据,要如何引用]呢?望赐教

例如此图中的数据


在引用时这样写是否正确

[ 此帖被jzzjzq在2018-07-16 12:52重新编辑 ]
jzzjzq
级别: 略有小成
精华主题: 0
发帖数量: 62 个
工控威望: 200 点
下载积分: 566 分
在线时间: 72(小时)
注册时间: 2013-03-15
最后登录: 2024-04-23
查看jzzjzq的 主题 / 回贴
2楼  发表于: 2018-07-17 16:10
引用
引用第3楼湛蓝小尔于2018-07-17 08:36发表的  :
你到底需要发送什么样的数据,我给你举个例子

有Bit也有INT也有dint。
所以统一按BYTE发的,现在的问题就是接收到以后,用那种方式引用收到的数据。我上贴中有图,请帮忙看一下是否正确。
是否是这样的,比如A (PLC)发送到B(PLC)    12个BIT、5个BYTE,3个INT。那么在A的发送块 依次建立12个BIT、5个BYTE,3个INT。
同样,在B(PLC)接收块里依次建立12个BIT、5个BYTE,3个INT,然后发送和接受指令的LEN长度都定为13个字节,这样是否正确?
[ 此帖被jzzjzq在2018-07-17 16:27重新编辑 ]