恭喜,你发布的帖子
发布于 2020-05-16 19:30:18
7楼
继续。
接下去就是1500的编程了
我没有1500CPU实体,所以测试是通过PLCSIM ADVANCED进行的。想要连接阿里云,就是要访问外网,那么PLCSIM ADVANCED的设置也是要有讲究的,online access 必须选择 virtual eth. adapter,然后下面是通过以太网而不是内部总线 local。切换online access 要没有实例在运行才可以。
接下去就是下载LMQTT库,地址在主贴中有,下载后在项目文件中打开库,把库程序拉的自己的块中进行调用。会自动添加一个FB和几个数据类型
很良心的是,这个FB是开源的,没有加密,可以自由修改。
数据类型中,第一个用于设置连接标志,第二个用于设置mqtt connect的参数,第三个是用于发布的,第四个是用于订阅的,第五个是用于接收订阅的数据的,第六个是用于设置tcp连接的属性的,比如服务器地址,端口号PLC用的哪个接口、连接ID等等
调用库
建一个数据块,保存用到的参数,除了第一个数据类型,其他的每个类型的建一个,因为第一个包含在了第二个中。
enable参数是一个bool类型,1连接服务器,0 断开连接
publishdata参数用于发布主题,subscribetoTopic用于订阅主题,这两个以后再说,测试连接的时候还用不上,tcpConnParam设置连接属性,mqttParam设置mqtt的连接属性,这两个参数要设置正确才能连接的上服务器
先说tcpConnParam
第一个参数 usdQdn,应该设置为1,因为我们要访问的是阿里云的服务器,只能通过域名访问,而不能通过ip地址
第二个参数hwidentifier,网口的设备标识符,新版本的cpu设置为0可以默认使用第一个网口,也可以在组态中查看指定端口的标识符,在这里填入,比如1511cpu上的网口的标识符就是64
connectionID。连接ID,这个做过西门子的网络通讯的都知道,每个连接唯一
qdnAddressBroker 这就是阿里云平台提供的地址,根据如下规则,由productkey和区域代码组成,
格式如下
{productkey}.iot-as-mqtt.cn-shanghai.aliyuncs.com,其中{productkey}用自己的productkey替代
因为使用qdn,所以ipAddressBroker不需要设置
localport 不需要设置,默认0就好了,client不需要指定端口号
mqttPort 设置为1883,mqtt TCP直连时使用的端口号
接下去4个参数不设置,用到安全连接的时候需要,目前只用TCP直连
接下去是mqttParam的参数设置
connectflag
根据阿里云的要求cleanSession必须设置为1,will和willRetain必须设置为0,忘了对connect的qos的要求了,也设置为0.因为连接阿里云是要登录的,所以将username和password设置为1
keepAlive 不能小于30,阿里推荐是300
clientidentifier 这个参数有一点点麻烦,根据mqtt协议,这个字段的长度是23个字节以下,但也允许超过这个长度,而阿里云的设置是远超过23字节的,而西门子的mqtt库设计的时候指定了数据类型是string[23],我们需要把这个给改了。因为这个是从库中拉出来的,需要更新库并重新发布才可以。这是我对库的第一处修改
willtopic和willmessage留空
username和password根据第一个参考连接生成。
总体框架搭好,就这样,就可以进行测试了
请填写推广理由:
分享
只看
楼主